服务器程序的设计有很多种方式,有多进程,多线程以及多进程/多线程混合方式,这些无论哪一种都是侦听->服 务的一种方式,主要强调以何种方式为客户提供服务,但是如果客户的需求种类非常多,不同需求之间的差异非常大的时候,另一个问题就浮上了水面,就是如何组 织这些所谓的不同的服务程序,采用回调函数的方式应该是第一个被想到的,回调函数很灵活,服务器的管理逻辑不用关注具体服务的处理逻辑,一切交给回调函数 来完成,唯一需要做的就是注册回调函数,接下来一个完美的设计就需要考虑如何设计服务器的管理流程。
我们把客户端的需求称作命令,将服务器端对应该命令的处理函数称作命令处理函数,用户不同的命令就应该对应不同的命令处理函数,那么如何设计数据结构呢? 很显然的,我们应该让命令处理函数也就是回调函数和这个命令绑定在一起,除了这些需要绑定之外,由于命令是从远端传过来的,仿照网络协议的设计方式,同样 需要一个协议来识别合法命令,最起码格式要正确,因此还需要将命令码的格式,长度等信息和命令以及回调函数绑定在一起,到此为止,随便一个合格开发人员都 能想到的就是数据封装,就是将上面这些封装成一个结构或者一个类,还是用结构吧,因为我们只需要封装数据而不需要封装操作,于是就有了下面的结构体:
struct DATAPROCESSDES
我们把客户端的需求称作命令,将服务器端对应该命令的处理函数称作命令处理函数,用户不同的命令就应该对应不同的命令处理函数,那么如何设计数据结构呢? 很显然的,我们应该让命令处理函数也就是回调函数和这个命令绑定在一起,除了这些需要绑定之外,由于命令是从远端传过来的,仿照网络协议的设计方式,同样 需要一个协议来识别合法命令,最起码格式要正确,因此还需要将命令码的格式,长度等信息和命令以及回调函数绑定在一起,到此为止,随便一个合格开发人员都 能想到的就是数据封装,就是将上面这些封装成一个结构或者一个类,还是用结构吧,因为我们只需要封装数据而不需要封装操作,于是就有了下面的结构体:
struct DATAPROCESSDES
{
本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1273647