Socket应用

最近做个系统,里面涉及到一个小模块:短消息。既然是消息,肯定会有一些即时消息和通知之类。所以系统要求有消息时自动提醒用户查看。

这个项目是一个WinForm项目,采用c/s结构,采用什么技术可以达到自动提醒的目的呢?


思考一:利用定时器,定时查询数据库,有新消息就发出通知。

这种方法感觉效果和理论上都可以实现,但就是有一个弊端,很影响系统性能。有没有新消息都在某一个时间间隔上去查询数据库,而且这个时间间隔设置大了又达不到要求。在大量的客户端的频繁请求下,将很可能导致服务器垮掉。所以不行


思考二:采用Socket,建立服务器和客户端的双向连接。

就像很多即时通讯软件一样应该都是采用Socket技术实现的。而且有大量这种成功案例应该还是可行的。

看了一下Socket的实现原理,服务器和客户端通过一个特定的端口来建立通讯,然后服务器和客户端都采用线程的方式,循环接收和发送数据。循环采用while(true)模式,不出故障的情况下将无限执行。这种循环需要的性能应该比定时查询数据库要更低吧,所以决定采用这种方式进行


具体实施步骤:

1、客户端建立起和服务器连接的socket,然后启动线程来循环接收来自服务器端的消息

2、服务端。因为本系统服务器没有单独的管理界面,只部署数据库。所以建立服务器段的socket我的想法是采用windows服务来做。不用界面,长时间运行,采用的windows服务挺合适的。所以又看了一下windows服务的开发过程。在服务中开线程,循环接收了处理来自客户端的消息,并及时通知客户端响应


这里就不贴代码了,把找的一些相关资料贴上来大家看看吧

1、C# Socket编程详解

2、c#Socket适合初学者

3、“服务器推”技术应用

4、如何开发windows服务

你可能感兴趣的:(数据库,windows,socket,服务器,WinForm,通讯)