关于CS结构的系统
以前做过局域网内的CS系统。操作数据时是直接连到主机的数据库上的。
那如果是因特网的CS系统,操作数据直接连到主机数据库是否可行?我发现WEB程序在访问数据库时,如果WEB服务器和数据库服务器通过因特网连接,速度是很慢的。而如果在一个局域网或者一台主机上,速度则大不相同。
那么因特网的CS系统,客户端是否应该通过SOCKET和服务器通讯,由服务器端为客户端和数据库牵线?
------解决方案--------------------我也不太懂,好像确实是socket,然后你得把传输的数据序列化和反序列化,服务端主要逻辑控制,客户端主要呈现操作界面。一般情况下CS结构,可以用服务器和专线,这样带宽好就行了。
如果不太注重的话,客户端也包括逻辑处理结构,这样就简单了,直接配置数据库连接,端口映射就行。。。。
我是菜鸟,只知道这么点,对错还不一定,希望懂的人补充和更正。
------解决方案--------------------直接远程连接服务器的SQLServer
------解决方案--------------------利用WebService或WCF抛出接口,WinForm程序直接调用WebService或WCF里面公开的方法。读写数据库则用WebService或WCF去读写了,这样你就只需要公开一个WebService或WCF的地址就行了
------解决方案--------------------直接连主机的sql如果是小应用,比如,就1.2个客户端,是没问题的,当然,安全问题还是存在的,毕竟1433端口暴露在外接是不安全的。
如果客户端多了的话,就要换种方法了,通常是3层结构,我不清楚c#有什么自己的解决方案,通常来说,就是在服务器上跑个服务程序,然后这个服务程序访问数据库,然后你的客户端通过socket来访问服务程序,这样只需要暴露一个通讯端口就可以了,速度也要快一些,毕竟sqlserver连接的客户端多了,速度也会慢起来,并且你还要考虑到数据库的授权问题
------解决方案--------------------可以将主机放到外网上直连,但是要考虑安全问题,互联网的速度取决于你的网络状况,所以慢就有了可能,一般这种都采用三层结构,比如webservice,remoting,wcf等
------解决方案--------------------可以通过互联网连接到sqlserver,我用management studio连接过互联网上的服务器,只是稍微有点慢而已,
------解决方案--------------------如果通过服务器上的一个程序用socket转发数据库查询请求,会非常麻烦,还不如用webservice或者直接做成bs结构,
------解决方案--------------------折中的方案,也许用webservice是最容易实现的,