关于服务端和客户端SDK代码及编译步骤的说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于服务端和客户端SDK代码及编译步骤的说明1.服务端代码结构

服务器端的代码由4个Project组成,分别是:CommonClass, ServiceDemo, ServiceParam, ServiceSDK。

1.1. CommonClass

CommonClass是一个通用的类库,可以被服务端和客户端SDK上层的代码使用。

只是由于编译平台的不同,类库中的类有所删节。

GenericObject:对象池模板中的对象的基类,所有用对象池管理的对象都需要使用该类作为基类;

ObjectHolder:对象池模板中用到的对象管理模板,用于对对象进行管理,里面存储的对象都由GenericObject类派生而来;

SinglitonPoolMgr:单模式的对象池模板,使用ObjectHolder实现的,单态的对象池模板;

PolymorphicPoolMgr:多模式的对象池模板,使用ObjectHolder实现的,可以出现多个对象的对象池模板;

CADOObj:继承自GenericObject的数据库连接对象;

CDBCPool:使用PolymorphicPoolMgr生成的数据库连接池,其中PolymorphicPoolMgr模板使用的数据类型是CADOObj;

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一致,只是做了删节。

相关文档
最新文档