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

上传人:壹****1 文档编号:567388692 上传时间:2024-07-20 格式:PDF 页数:10 大小:747.75KB
返回 下载 相关 举报
2022年2022年关于服务端和客户端SDK代码及编译步骤的说明_第1页
第1页 / 共10页
2022年2022年关于服务端和客户端SDK代码及编译步骤的说明_第2页
第2页 / 共10页
2022年2022年关于服务端和客户端SDK代码及编译步骤的说明_第3页
第3页 / 共10页
2022年2022年关于服务端和客户端SDK代码及编译步骤的说明_第4页
第4页 / 共10页
2022年2022年关于服务端和客户端SDK代码及编译步骤的说明_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《2022年2022年关于服务端和客户端SDK代码及编译步骤的说明》由会员分享,可在线阅读,更多相关《2022年2022年关于服务端和客户端SDK代码及编译步骤的说明(10页珍藏版)》请在金锄头文库上搜索。

1、关于服务端和客户端SDK 代码及编译步骤的说明1. 服务端代码 结构服务器端的代码由4 个Project 组成,分别是:CommonClass, ServiceDemo, ServiceParam, ServiceSDK。1.1. CommonClass CommonClass 是一个通用的类库,可以被服务端和客户端SDK 上层的代码使用。只是由于编译平台的不同,类库中的类有所删节。GenericObject :对象池模板中的对象的基类,所有用对象池管理的对象都需要使用该类作为基类;ObjectHolder :对象池模板中用到的对象管理模板,用于对对象进行管理,里面存储的对象都由Generic

2、Object 类派生而来;SinglitonPoolMgr :单模式的对象池模板,使用ObjectHolder 实现的,单态的对象池模板;PolymorphicPoolMgr :多模式的对象池模板,使用ObjectHolder 实现的,可以出现多个对象的对象池模板;CADOObj :继承自GenericObject 的数据库连接对象;CDBCPool : 使 用PolymorphicPoolMgr生 成 的 数 据 库 连 接 池 , 其 中PolymorphicPoolMgr 模板使用的数据类型是CADOObj ;CDBCPoolCollection :多个 CDBCPool 的集合,可以显

3、现多个数据库的连接;CframeContainer : 数 据 帧 容 器 , 实 现 了 传 输 协 议 的 功 能 , 数 据 存 储 等 ;CframeContainer 的对象由CframeContainerPool 实现工厂模式;CframeContainerPool : CframeContainer 对象池,采用工厂模式;CframeContainer对象都在需要时向CframeContainerPool 申请, 不再使用时, 回收到 CframeContainerPool ;CpriorityFrameQueue : 带 有 优 先 级 排 队 的 帧 容 器 队 列 , 存

4、储 的 对 象 是CframeContainer 对象,可以根据CframeContainer 对象的优先级,并按照先来后到的顺序进行排队;CrecordSetParser:封装了Recordset 操作的一个类;CworkerThreadPool :实现线程池的一个类;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 1.2. ServiceSDK 使用 CommonClass 类,实现的服务端功能模块。CCACenterMo

5、dule :验证授权中心模块,用于对用户请求的核心业务处理程序进行授权,该模块功能尚未完整;CcommunicaitonModule :实现通信功能的模块;CcoreBusinessModule:核心业务处理模块,可以根据核心业务号返回处理函数的指针,进行二次开发时,其他的业务功能逻辑可以在该模块上扩展出来实现;CschedulingModule :调度模块;CsessionModule:会话记录模块,该模块功能尚未完成;CsocketStatus:用来记录socket 通信状态的一个类,在CcommunicaitonModule中使用;Cuser:用来记录用户在线状态的一个类,是一个用户在服

6、务端的抽象;CuserModule: 在线用户管理模块, 用来处理在线用户的登录等,实际上相当于Cuser的对象池,但是功能更为复杂些;1.3. ServiceDemo 是服务端开发的一个示例程序。该程序在Debug 时是一般的程序,编译为 Release程序时, 是标准的 windows 后台服务程序。该程序只是调用了InitServiceSDKLib() 和 ReleaseServiceSDKLib() ,实际的程序功能在 ServiceSDK 中实现。1.4. ServiceParam 用于生成服务器配置文件的,基于对话框的应用程序。1.5. Project之间依赖关系1、 Common

7、class 是基础类库;2、 ServiceSDK 依赖于 Commonclass;3、 ServiceDemo 依赖于 ServiceSDK 和 Commonclass;4、 ServiceParam 依赖于 ServiceSDK 和 Commonclass;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 1.6. 服务端的数据流程1、用户数据从CcommunicaitonModule进入, CcommunicaitonMo

8、dule向CframeContainerPool 获得 CframeContainer 对象进行数据的接收;2、CcommunicaitonModule将接受完数据的CframeContainer对象提交给CuserModule, CuserModule 会根据用户UID 以及 CframeContainer 对象的优先级,对CframeContainer 对象进行排队;3、CuserModule 会决策,当前应该处理的CframeContainer 对象,并将该对象提交给 CschedulingModule 进行任务调度;4、CschedulingModule 分析 CframeContai

9、ner 对象,对其请求的合法性进行验证,也就是授权,该授权的功能由CCACenterModule 完成;5、经过授权的CframeContainer 对象请求,由CschedulingModule 发起执行。其过程是, CschedulingModule 向 CcoreBusinessModule 提交核心业务号,并获得核心业务处理程序的入口地址,然后向 CworkerThreadPool 申请一个工作者线程,最后,使用工作者线程运行核心业务处理程序;6、之后,核心业务处理程序开始运行。一般的流程如下:如果需要对数据库进行访问,核心业务处理程序会向CDBCPoolCollection请求一个数

10、据连接对象,并使用该对象执行SQL 语句。如果是查表的语句的话,则再使用 CrecordSetParser 来协助生成XML格式的处理结果。之后,处理程序会根据功能,向请求方发送方或者其他的用户发送数据。7、在向用户发送数据时,业务处理程序同样向CframeContainerPool获得CframeContainer 对象, 并将需要发送的数据装入到CframeContainer 对象中;8、之后业务处理程序将数据提交给CuserModule,CuserModule 会根据用户UID 以及 CframeContainer 对象的优先级, 对 CframeContainer 对象进行排队;9、C

11、userModule 会决策,并调整CframeContainer 对象的发送顺序;10、最后,业务处理程序会通知CuserModule 一次业务请求已经完成,这样CuserModule 会自动触发下一个任务的处理。2. 客户端 SDK 代码结构客 户 端SDK主 要 包 括 以 下 几 个Project : CommonclassSD , ClientSDKSD ,ClientSDKSDDll ,以及 ClientSDKCSPocket 和 ClientDemoPocketPC 。2.1. CommonclassSD 基础公共类库,用到的代码基本与服务端的Commonclass 一致,只是做

12、了删节。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - SD 的意思是for Smart Device 。该 Project 使用 C+ 开发。2.2. ClientSDKSD 为 Smart Device 开发的客户端SDK。该 Project 使用 C+开发。主要包含以下的模块:CclientCommunicationModule :客户端通信模块;CsynchronousActionRecord :同步操作记录集,用于协

13、助完成同步操作、访问的功能;该模块还提供一些全局函数,用于进行API 操作。2.3. ClientSDKSDDll 使用 commonClassSD 和 ClientSDKSD 开发的 DLL 库,主要提供对客户端SDK 的API 操作。这些 API 操作主要分为2 类:1、 对底层模块的操作,包括启动后台通信模块,终止通信模块等;2、 对 CframeContainer对象的操作,包括获得CframeContainer对像,回收CframeContainer 对象,读写CframeContainer 对象中的数据等;2.4. ClientSDKCSPocket 使用 C#开发为 Pocket

14、PC 开发的 ClientSDK 。主要包含以下内容:1、 对 ClientSDK 的 API 函数进行封装,以便在C#的环境下可以调用;2、 对 ClientSDK 中关于 CframeContainer 的操作作封装,以便在C#的环境下可以调用;3、 还 定 义 了 一 些 工 具 类 , 如ClientSDKCSPocket.RecordControl和ClientSDKCSPocket.XmlParser , 分别用于处理记录集和xml 文件的打包、 解析。2.5. ClientDomoPocketPC 为 PocketPC 开发的客户端示例程序。名师资料总结 - - -精品资料欢迎下

15、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - 2.6. Projet之间的依赖关系CommonclassSD,ClientSDSDK ,ClientSDKSDDll均使用 C+开发:1、 CommonclassSD 是基础共用类库;2、 ClientSDSDK 依赖于 Commonclass;3、 ClientSDKSDDll依赖于 CommonclassSD 和 ClientSDSDK ;ClientSDKCSPocket 和 ClientDemoPocket

16、PC 均使用 C#开发:1、 ClientSDKCSPocket 依赖于 CommonclassSD,ClientSDSDK ,ClientSDKSDDll ;2、 ClientDemoPocketPC 依赖于 CommonclassSD,ClientSDSDK ,ClientSDKSDDll和 ClientSDKCSPocket ;2.7. 客户端 SDK 模块之间数据流程1、用户使用 API 向 CframeContainerPool 获得 CframeContainer 对象进行数据填充;2、如果用户使用同步操作,则使用ClientSDKCSPocket.ClientSDK.SynSen

17、tFrame_Dll(System.IntPtr, ref System.IntPtr, int)进行发送,否则使用ClientSDKCSPocket.ClientSDK.SentFrame_Dll(System.IntPtr)发送;3、数据提交到发送队列,发送队列使用CpriorityFrameQueue ;4、如 果 是 同 步 操 作 , 发 送 后 的CframeContainer对 象 备 份 到CsynchronousActionRecord 中;5、服务端 返回的数据 ,进入CclientCommunicationModule,CclientCommunicationModule

18、使用 CframeContainer 对象进行接收,同样,该 CframeContainer 对象也是从CframeContainerPool 申请得到的;6、接 收 完 的 数 据 , 进 行 同 步 操 作 判 断 , 如 果 是 同 步 操 作 , 则 到CsynchronousActionRecord 查找响应的请求分组,并置位“事件”,通知上层 用 户 服 务 器 已 经 响 应 该 请 求 ; 如 果 是 异 步 操 作 , 这 接 收 的CframeContainer对 象 被 放 到 接 收 队 列 中 , 接 收 队 列 使 用CpriorityFrameQueue ;7、程

19、序员可以使用API 向接收队列获得CframeContainer 对象并处理;8、对 CframeContainer 对象的处理代码由二次开发实现。3. 客户端编译及调试步骤说明客户端的代码涉及C+和 C#,而且要交叉编译调试,因此会比价麻烦。下面将以名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 模拟器开发为例,讲明开发调试过程:1、 CommonclassSD,ClientSDSDK ,ClientSDKSDDll均使用

20、C+开发,他们的项目配置方法一致;2、 配置 IDE 的调试设备、如下图所示:该设置界面由menutoolsoption 得到。这里可以设置调试的设备类型,可以是PocketPC2003 的设备,也可以是模拟器。3、 设置项目的属性:该设置界面调出方法:在Porject Explorer 上,右键点击项目,选择Property。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - 此处告诉IDE,编译的文件在部署时放置的位置。4、

21、C#项目属性设置:该设置界面调出方法:在Porject Explorer 上,右键点击项目,选择Property。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - 此处告诉IDE,编译的文件在部署时放置的位置。5、 如果使用模拟器调试。使用menu toolsDevice Emulator Manager 选中后,右键连接,可以启动相应的模拟器。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -

22、 - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 6、 Device Emulator Manager 中,右键插入底座,可以模拟设备插入连接线中。7、 在 IDE(VS 2005)中,按 F5 调试程序, IDE 就会自动将编译好的程序部署到设备中,并开始运行,调试。8、 注意, 2,4 中的设备设置一定要一致;9、 注意,模拟设备连接后,要测试是否可以上网;10、注意:模拟设备中要记得查看client_config.xml文件是否已经具备。11、注意:如果不能运行,查看模拟器中dll、exe 文件是否齐备:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号