关于服务端和客户端SDK代码及编译步骤的说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于服务端和客户端SDK代码及编译步骤的说明1.服务端代码结构
服务器端的代码由4个Project组成,分别是:CommonClass, ServiceDemo, ServiceParam, ServiceSDK。
1.1. CommonClass
CommonClass是一个通用的类库,可以被服务端和客户端SDK上层的代码使用。
只是由于编译平台的不同,类库中的类有所删节。
GenericObject:对象池模板中的对象的基类,所有用对象池管理的对象都需要使用该类作为基类;
ObjectHolder
SinglitonPoolMgr
PolymorphicPoolMgr
CADOObj:继承自GenericObject的数据库连接对象;
CDBCPool:使用PolymorphicPoolMgr
CDBCPoolCollection:多个CDBCPool的集合,可以显现多个数据库的连接;
CframeContainer:数据帧容器,实现了传输协议的功能,数据存储等;
CframeContainer的对象由CframeContainerPool实现工厂模式;
CframeContainerPool:CframeContainer对象池,采用工厂模式;CframeContainer 对象都在需要时向CframeContainerPool申请,不再使用时,回收到CframeContainerPool;
CpriorityFrameQueue:带有优先级排队的帧容器队列,存储的对象是CframeContainer对象,可以根据CframeContainer对象的优先级,并按照先来后到的顺序进行排队;
CrecordSetParser:封装了Recordset操作的一个类;
CworkerThreadPool:实现线程池的一个类;
1.2. ServiceSDK
使用CommonClass类,实现的服务端功能模块。
CCACenterModule:验证授权中心模块,用于对用户请求的核心业务处理程序进行授权,该模块功能尚未完整;
CcommunicaitonModule:实现通信功能的模块;
CcoreBusinessModule:核心业务处理模块,可以根据核心业务号返回处理函数的指针,进行二次开发时,其他的业务功能逻辑可以在该模块上扩展出来实现;
CschedulingModule:调度模块;
CsessionModule:会话记录模块,该模块功能尚未完成;
CsocketStatus:用来记录socket通信状态的一个类,在CcommunicaitonModule中使用;
Cuser:用来记录用户在线状态的一个类,是一个用户在服务端的抽象;
CuserModule:在线用户管理模块,用来处理在线用户的登录等,实际上相当于Cuser 的对象池,但是功能更为复杂些;
1.3. ServiceDemo
是服务端开发的一个示例程序。
该程序在Debug时是一般的程序,编译为Release程序时,是标准的windows后台服务程序。
该程序只是调用了InitServiceSDKLib()和ReleaseServiceSDKLib(),实际的程序功能在ServiceSDK中实现。
1.4. ServiceParam
用于生成服务器配置文件的,基于对话框的应用程序。
1.5. Project之间依赖关系
1、Commonclass是基础类库;
2、ServiceSDK依赖于Commonclass;
3、ServiceDemo依赖于ServiceSDK和Commonclass;
4、ServiceParam依赖于ServiceSDK和Commonclass;
1.6. 服务端的数据流程
1、用户数据从CcommunicaitonModule进入,CcommunicaitonModule向
CframeContainerPool获得CframeContainer对象进行数据的接收;
2、CcommunicaitonModule将接受完数据的CframeContainer对象提交给
CuserModule,CuserModule会根据用户UID以及CframeContainer对象的
优先级,对CframeContainer对象进行排队;
3、CuserModule会决策,当前应该处理的CframeContainer对象,并将该对
象提交给CschedulingModule进行任务调度;
4、CschedulingModule分析CframeContainer对象,对其请求的合法性进行验
证,也就是授权,该授权的功能由CCACenterModule完成;
5、经过授权的CframeContainer对象请求,由CschedulingModule发起执行。
其过程是,CschedulingModule向CcoreBusinessModule 提交核心业务号,
并获得核心业务处理程序的入口地址,然后向CworkerThreadPool申请一
个工作者线程,最后,使用工作者线程运行核心业务处理程序;
6、之后,核心业务处理程序开始运行。一般的流程如下:如果需要对数据
库进行访问,核心业务处理程序会向CDBCPoolCollection请求一个数据
连接对象,并使用该对象执行SQL语句。如果是查表的语句的话,则再
使用CrecordSetParser来协助生成XML格式的处理结果。之后,处理程
序会根据功能,向请求方发送方或者其他的用户发送数据。
7、在向用户发送数据时,业务处理程序同样向CframeContainerPool获得
CframeContainer对象,并将需要发送的数据装入到CframeContainer对象
中;
8、之后业务处理程序将数据提交给CuserModule,CuserModule会根据用户
UID以及CframeContainer对象的优先级,对CframeContainer对象进行排
队;
9、CuserModule会决策,并调整CframeContainer对象的发送顺序;
10、最后,业务处理程序会通知CuserModule一次业务请求已经完成,这样
CuserModule会自动触发下一个任务的处理。
2.客户端SDK代码结构
客户端SDK主要包括以下几个Project:CommonclassSD,ClientSDKSD,ClientSDKSDDll,以及ClientSDKCSPocket和ClientDemoPocketPC。
2.1. CommonclassSD
基础公共类库,用到的代码基本与服务端的Commonclass一致,只是做了删节。