基本设计概念和处理流程
调用模型
模仿com组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(pure virtual function),调用方直接调用接口指针内声明的纯虚方法,而此纯虚函数的具体逻辑由该接口的派生类实现。
示意图:
基于事件驱动的数据处理模型
在系统功能设计中,针对网络事件socketevent、数据库事件databaseevent、定时器事件timerevent……的数据处理,建立数据队列服务queueservice,为每一队列建立多个子线程queueservicethread处理。数据队列服务提供添加事件数据的方法addtoqueue,设置数据队列服务钩子setqueueservicesink,由数据队列服务钩子queueservicesink执行具体逻辑事件的数据处理。 示意图:
再者,根据网络、数据库等特定功能,构建网络、数据库等管理服务,实现数据队列服务钩子queueservicesink方法,调度事件数据执行外部处理接口,外部处理接口具体由二次开发用户实现。
事件数据设计
软件体系结构(架构 architecture)设计
功能模块划分
数据队列服务queueservice模块设计
基本设计概念
建立一个内存链表,保存事件数据,对外部提供方法(向链表添加事件数据并通知线程,同时启动多个处理线程,从数据链表里获取事件数据,执行外部钩子方法进行处理。线程事件通知采用完成端口技术。
类与接口设计
com接口
接口名
接口基类
接口实现类
a
队列引擎
iqueueserviceengine
cqueueservicehelper
b
事件服务
ieventservice
ceventservicehelper
c
网络引擎
itcpsocketengine
ctcpsocketenginehelper
d
定时器引擎
itimerengine
ctimerenginehelper
e
数据库操作
idatabase
cdatabasehelper
f
数据库引擎
idatabaseengine
cdatabaseenginehelper
i
调度引擎
iattemperengine
cattemperenginehelper
g
服务引擎
iserviceengine
cserviceenginehelper
k
异步引擎
iasynchronismengine
casynchronismenginehelper
自动清理参数辅助类
cautocleanparameters
自动关闭记录集辅助类
cautocloserecord
断开数据库连接辅助类
cautoclosedatabase
内部接口
类别
接口
功能
继承
实现类
数据队列事件 (非组件实现)
cqueueserviceevent(iqueueservice、cthreadlock)
设置接口、发送通知事件
数据库错误接口
iadoerror
错误类型与描述
: public iunknownex
cadoerror
数据库连接接口
数据库操作类
cdatabase
数据库钩子接口
idatabasesink
启动关闭数据库模块、数据操作处理
数据库引擎接口
启动停止服务、注册钩子、获取接口
cdatabaseengine
数据队列接口
iqueueservice
加入数据
cqueueservice
数据队列类钩子接口
iqueueservicesink
通知回调函数
ctcpsocketenginecdatabaseenginecattemperengine
队列类引擎接口
开始服务、停止服务、设置接口、负荷信息
事件服务引擎接口
设置句柄、设置级别、事件通知
ceventservice
服务引擎接口
服务接口、配置接口、服务查询、功能接口
cserviceengine
定时器引擎接口
设置定时器、删除定时器
ctimerengine
itimerenginemanager
开始服务、停止服务、设置接口
tcp socket 引擎接口
发送、批量发送、关闭连接、允许群发
ctcpsocketengine
tcp socket 引擎管理接口
itcpsocketenginemanager
设置接口、端口、数目、启动服务、停止服务
连接对象回调接口
iserversocketitemsink
应答消息、读取消息、关闭消息
调度模块钩子接口
iattemperenginesink
管理接口、事件接口(定时器、数据库、网络应答读取关闭)
调度引擎接口
服务管理、设置钩子、设置网络、获取接口
cattemperengine
异步引擎接口
管理接口(启动停止服务、插入请求)、功能接口(注册钩子、取消注册)
casynchronismengine
异步引擎钩子接口
iasynchronismenginesink
启动事件、停止事件、异步请求
接口实现
类
引用
网络管理类
cqueueservice//队列对象 cserversocketitemptrarray cqueueserviceevent//通知组件
调度管理类
itcpsocketengine//网络引擎 iattemperenginesink//挂接接口cqueueservice//队列对象
数据库对象
_commandptr//命令对象 _recordsetptr//记录集对象 _connectionptr//数据库对象
数据库管理类
cqueueservice//队列对象 idatabasesink//通知钩子
事件服务类
设置句柄-bool setrichedithwnd(hwnd); 设置级别-void configeventservice(...); 事件通知-void showeventnotify(...);
ctimerthread->(公共服务)
friend class ccontrolwnd; friend class cmessagethread; ccontrolwnd//控制窗口 cthreadlock//线程同步 cdatastorage//数据存储 cmessagethread//线程组件
ctimerengine定时器引擎 cdatabaseengine数据库引擎 cattemperengine调度引擎 ctcpsocketengine 网络引擎 casynchronismengine 异步引擎
数据队列类
cqueueservicethread->(公共服务)
ado 错误类
: public iadoerror
内部类:
意义
tcp socket 类
cserversocketitem
sock对象和操作、完成端口、加密解密等
数据队列事件
cqueueserviceevent
事件通知,接口设置管理
代码级引用
窗口控制类
ccontrolwnd
//消息映射 onasynrequest//请求消息
: public cwnd
应答线程对象
csocketacceptthread
运行函数(wsaaccept)
: public cservicethread
读写线程类
cserversocketrsthread
运行函数(getqueuedcompletionstatus) 参数cserversocketitem *
检测线程类
csocketdetectthread
运行函数(非阻塞)、检测m_dwtickcount
ctcpsocketengine*//管理指针
队列线程类
cqueueservicethread
运行函数(getqueuedcompletionstatus) 参数cqueueservice *
消息线程
cmessagethread
运行函数(for casynchronismenginesinkarray*)
casynchronismengine*//异步引擎
定时器线程
ctimerthread
运行函数(for ctimeritemptr->getcount();)
ctimerengine*//定时器引擎
数据存储类
cdatastorage
内存的管理
公共服务( dllimport class )
线程对象类
cservicethread
线程操作管理
iservicethread
公共服务( dllimport class )
事件输出类
ceventtrace
事件管理、通知、级别(静态类)
静态全局 ieventservice 以及其他处理函数
类(非组件实现)
接口(组件接口)
数据库引擎钩子
cdatabasesink
调度引擎钩子
cattemperenginesink
客户端网络引擎+钩子
客户端socket+=iclientsocketsink
中心服务器
名字
类名
类型
: public iattemperenginesink
: public idatabasesink
中心服务类
ccenterservice
核心类
配置参数
cinitparamter
连接信息结构
cconnectitem
数据管理
连接信息管理
cconnectinfomanager
房间连接信息
cconnectitem_gameserver
: public cconnectitem
广场连接信息
cconnectitem_plaza
应用程序对象
ccenterserverapp
: public cwinapp
mfc
主对话框
ccenterserverdlg
: public cdialog
配置对话框
csystemoptiondlg
登陆、大厅
中心连接类
ccentersocket
: public iasynchronismenginesink, public iclientsocketsink
登录服务类
clogonservice
列表管理
cserverlist
列表信息
cserverlistinfo
clogonserverapp
clogonserverdlg
游戏装载器
服务参数类
cserviceparameter
mfc/核心类
cserviceloaderapp
cserviceloaderdlg
游戏服务框架
: public iattemperenginesink, public igameserviceframe
简介:09年入行,喜欢游戏和编程,对3d游戏和引擎尤其感兴趣。
版权声明:本文版权归作者和博客园共有,欢迎转载。转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载:http://www.cnblogs.com/geniusalex/p/3493399.html