网狐棋牌游戏平台服务器架构设计分析
来源:互联网 发布:r51400超频软件 编辑:程序博客网 时间:2024/05/10 01:03
基本设计概念和处理流程
调用模型
模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Function),调用方直接调用接口指针内声明的纯虚方法,而此纯虚函数的具体逻辑由该接口的派生类实现。
示意图:
基于事件驱动的数据处理模型
在系统功能设计中,针对网络事件SocketEvent、数据库事件DatabaseEvent、定时器事件TimerEvent……的数据处理,建立数据队列服务QueueService,为每一队列建立多个子线程QueueServiceThread处理。数据队列服务提供添加事件数据的方法AddToQueue,设置数据队列服务钩子SetQueueServiceSink,由数据队列服务钩子QueueServiceSink执行具体逻辑事件的数据处理。
示意图:
再者,根据网络、数据库等特定功能,构建网络、数据库等管理服务,实现数据队列服务钩子QueueServiceSink方法,调度事件数据执行外部处理接口,外部处理接口具体由二次开发用户实现。
示意图:
事件数据设计
软件体系结构(架构 Architecture)设计
功能模块划分
数据队列服务QueueService模块设计
基本设计概念
建立一个内存链表,保存事件数据,对外部提供方法(向链表添加事件数据并通知线程,同时启动多个处理线程,从数据链表里获取事件数据,执行外部钩子方法进行处理。线程事件通知采用完成端口技术。
类与接口设计
COM接口接口名接口基类接口实现类A队列引擎IQueueServiceEngineCQueueServiceHelperB事件服务IEventServiceCEventServiceHelperC网络引擎ITCPSocketEngineCTCPSocketEngineHelperD定时器引擎ITimerEngineCTimerEngineHelperE数据库操作IDataBaseCDataBaseHelperF数据库引擎IDataBaseEngineCDataBaseEngineHelperI调度引擎IAttemperEngineCAttemperEngineHelperG服务引擎IServiceEngineCServiceEngineHelperK异步引擎IAsynchronismEngineCAsynchronismEngineHelper 自动清理参数辅助类 CAutoCleanParameters 自动关闭记录集辅助类 CAutoCloseRecord 断开数据库连接辅助类 CAutoCloseDataBase
内部接口类别接口功能继承实现类数据队列事件
(非组件实现)CQueueServiceEvent
(IQueueService、CThreadLock)设置接口、发送通知事件 数据库错误接口IADOError错误类型与描述: public IUnknownExCADOErrorE数据库连接接口IDataBase数据库操作类: public IUnknownExCDataBase 数据库钩子接口IDataBaseSink启动关闭数据库模块、数据操作处理: public IUnknownExF数据库引擎接口IDataBaseEngine启动停止服务、注册钩子、获取接口: public IUnknownExCDataBaseEngine A数据队列接口IQueueService加入数据: public IUnknownExCQueueService数据队列类钩子接口IQueueServiceSink通知回调函数: public IUnknownExCTCPSocketEngine
CDataBaseEngine
CAttemperEngineA队列类引擎接口IQueueServiceEngine开始服务、停止服务、设置接口、负荷信息: public IUnknownExCQueueService B事件服务引擎接口IEventService设置句柄、设置级别、事件通知: public IUnknownExCEventServiceG服务引擎接口IServiceEngine服务接口、配置接口、服务查询、功能接口: public IUnknownExCServiceEngine D定时器引擎接口ITimerEngine设置定时器、删除定时器: public IUnknownExCTimerEngineD定时器引擎接口ITimerEngineManager开始服务、停止服务、设置接口: public IUnknownExCTimerEngine CTCP SOCKET 引擎接口ITCPSocketEngine发送、批量发送、关闭连接、允许群发: public IUnknownExCTCPSocketEngineCTCP SOCKET 引擎管理接口ITCPSocketEngineManager设置接口、端口、数目、启动服务、停止服务: public IUnknownExCTCPSocketEngineC连接对象回调接口IServerSocketItemSink应答消息、读取消息、关闭消息CTCPSocketEngine 调度模块钩子接口IAttemperEngineSink管理接口、事件接口(定时器、数据库、网络应答读取关闭): public IUnknownExI调度引擎接口IAttemperEngine服务管理、设置钩子、设置网络、获取接口: public IUnknownExCAttemperEngine K异步引擎接口IAsynchronismEngine管理接口(启动停止服务、插入请求)、功能接口(注册钩子、取消注册): public IUnknownExCAsynchronismEngine 异步引擎钩子接口IAsynchronismEngineSink启动事件、停止事件、异步请求: public IUnknownEx
接口实现类别类引用 网络管理类CTCPSocketEngineCQueueService//队列对象
CServerSocketItemPtrArray
CQueueServiceEvent//通知组件 调度管理类CAttemperEngineITCPSocketEngine//网络引擎
IAttemperEngineSink//挂接接口CQueueService//队列对象 数据库对象CDataBase_CommandPtr//命令对象
_RecordsetPtr//记录集对象
_ConnectionPtr//数据库对象 数据库管理类CDataBaseEngineCQueueService//队列对象
IDataBaseSink//通知钩子 事件服务类CEventService设置句柄-bool SetRichEditHwnd(HWND);
设置级别-void ConfigEventService(...);
事件通知-void ShowEventNotify(...); 定时器引擎CTimerEngineCTimerThread->(公共服务) 异步引擎接口CAsynchronismEnginefriend class CControlWnd;
friend class CMessageThread;
CControlWnd//控制窗口
CThreadLock//线程同步
CDataStorage//数据存储
CMessageThread//线程组件 服务引擎CServiceEngineCTimerEngine定时器引擎
CDataBaseEngine数据库引擎
CAttemperEngine调度引擎
CTCPSocketEngine 网络引擎
CAsynchronismEngine 异步引擎 数据队列类CQueueServiceCQueueServiceThread->(公共服务) ADO 错误类CADOError: public IADOError
内部类:
OnAsynRequest//请求消息: public CWnd 应答线程对象CSocketAcceptThread运行函数(WSAAccept): public CServiceThread 读写线程类CServerSocketRSThread运行函数(GetQueuedCompletionStatus)
参数CServerSocketItem *: public CServiceThread 检测线程类CSocketDetectThread运行函数(非阻塞)、检测m_dwTickCount: public CServiceThreadCTCPSocketEngine*//管理指针队列线程类CQueueServiceThread运行函数(GetQueuedCompletionStatus)
参数CQueueService *: public CServiceThread 消息线程CMessageThread运行函数(for CAsynchronismEngineSinkArray*): public CServiceThreadCAsynchronismEngine*//异步引擎定时器线程CTimerThread运行函数(for CTimerItemPtr->GetCount();): public CServiceThreadCTimerEngine*//定时器引擎 数据存储类CDataStorage内存的管理 公共服务( dllimport class )线程对象类CServiceThread线程操作管理IServiceThread公共服务( dllimport class )事件输出类CEventTrace事件管理、通知、级别(静态类) 静态全局 IEventService 以及其他处理函数 类别类(非组件实现)接口(组件接口) 数据库引擎钩子CDataBaseSinkIDataBaseSink 调度引擎钩子CAttemperEngineSinkIAttemperEngineSink 客户端网络引擎+钩子客户端SOCKET+=IClientSocketSinkIAsynchronismEngineSink
public IClientSocketSink接口实现 登录服务类CLogonService 核心类 配置参数CInitParamter 核心类 列表管理CServerList 数据管理 列表信息CServerListInfo 数据管理 应用程序对象CLogonServerApp: public CWinAppMFC 主对话框CLogonServerDlg: public CDialogMFC 配置对话框CSystemOptionDlg: public CDialogMFC 游戏装载器名字类名继承类型 服务参数类CServiceParameter: public CDialogMFC/核心类 配置参数CInitParamter 核心类 应用程序对象CServiceLoaderApp: public CWinAppMFC 主对话框CServiceLoaderDlg: public CDialogMFC 配置对话框CSystemOptionDlg: public CDialogMFC 游戏服务框架名字类名继承类型 调度引擎钩子CAttemperEngineSink: public IAttemperEngineSink,
public IGameServiceFrame接口实现 数据库引擎钩子CDataBaseSink: public IDataBaseSink接口实现 中心连接类CCenterSocket: public IAsynchronismEngineSink,
public IClientSocketSink接口实现
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 网狐棋牌游戏平台服务器架构设计分析
- 棋牌游戏服务器架构设计
- 棋牌游戏服务器架构设计
- 棋牌游戏服务器架构设计
- 棋牌游戏服务器架构设计
- 棋牌游戏服务器架构: 总体设计
- 棋牌游戏服务器架构: 总体设计
- 棋牌游戏服务器架构: 总体设计
- 棋牌游戏服务器架构: 总体设计
- Android 开发中Parcel存储类型和数据容器
- JDBC实现简单的连接池代码
- 传址小例子-雕虫小技
- 徐小明20120201
- 慎重使用volatile关键字
- 网狐棋牌游戏平台服务器架构设计分析
- 人工智能之父、Lisp语言发明者约翰麦卡锡去世
- C++控制台光标位置
- 【经验总结】SecureCRT 常用技巧
- ashx页面获取session值
- apt 常用命令
- C++程序设计实验报告(十七)
- SQL优化基础:使用索引(一个小例子)
- vlc结构分析和视频播放的基本原理