调用模型

模仿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
E 数据库连接接口 IDataBase 数据库操作类 : public IUnknownEx CDataBase
  数据库钩子接口 IDataBaseSink 启动关闭数据库模块、数据操作处理 : public IUnknownEx
F 数据库引擎接口 IDataBaseEngine 启动停止服务、注册钩子、获取接口 : public IUnknownEx CDataBaseEngine
           
A 数据队列接口 IQueueService 加入数据 : public IUnknownEx CQueueService
数据队列类钩子接口 IQueueServiceSink 通知回调函数 : public IUnknownEx CTCPSocketEngine
CDataBaseEngine
CAttemperEngine
A 队列类引擎接口 IQueueServiceEngine 开始服务、停止服务、设置接口、负荷信息 : public IUnknownEx CQueueService
           
B 事件服务引擎接口 IEventService 设置句柄、设置级别、事件通知 : public IUnknownEx CEventService
G 服务引擎接口 IServiceEngine 服务接口、配置接口、服务查询、功能接口 : public IUnknownEx CServiceEngine
           
D 定时器引擎接口 ITimerEngine 设置定时器、删除定时器 : public IUnknownEx CTimerEngine
D 定时器引擎接口 ITimerEngineManager 开始服务、停止服务、设置接口 : public IUnknownEx CTimerEngine
           
C TCP SOCKET 引擎接口 ITCPSocketEngine 发送、批量发送、关闭连接、允许群发 : public IUnknownEx CTCPSocketEngine
C TCP SOCKET 引擎管理接口 ITCPSocketEngineManager 设置接口、端口、数目、启动服务、停止服务 : public IUnknownEx CTCPSocketEngine
C 连接对象回调接口 IServerSocketItemSink 应答消息、读取消息、关闭消息 CTCPSocketEngine
           
  调度模块钩子接口 IAttemperEngineSink 管理接口、事件接口(定时器、数据库、网络应答读取关闭) : public IUnknownEx
I 调度引擎接口 IAttemperEngine 服务管理、设置钩子、设置网络、获取接口 : public IUnknownEx CAttemperEngine
           
K 异步引擎接口 IAsynchronismEngine 管理接口(启动停止服务、插入请求)、功能接口(注册钩子、取消注册) : public IUnknownEx CAsynchronismEngine
  异步引擎钩子接口 IAsynchronismEngineSink 启动事件、停止事件、异步请求 : public IUnknownEx
           
接口实现 类别 引用
  网络管理类 CTCPSocketEngine CQueueService//队列对象
CServerSocketItemPtrArray
CQueueServiceEvent//通知组件
  调度管理类 CAttemperEngine ITCPSocketEngine//网络引擎
IAttemperEngineSink//挂接接口CQueueService//队列对象
  数据库对象 CDataBase _CommandPtr//命令对象
_RecordsetPtr//记录集对象
_ConnectionPtr//数据库对象
  数据库管理类 CDataBaseEngine CQueueService//队列对象
IDataBaseSink//通知钩子
  事件服务类 CEventService 设置句柄-bool SetRichEditHwnd(HWND);
设置级别-void ConfigEventService(...);
事件通知-void ShowEventNotify(...);
  定时器引擎 CTimerEngine CTimerThread->(公共服务)
  异步引擎接口 CAsynchronismEngine friend class CControlWnd;
friend class CMessageThread;
CControlWnd//控制窗口
CThreadLock//线程同步
CDataStorage//数据存储
CMessageThread//线程组件
  服务引擎 CServiceEngine CTimerEngine定时器引擎
CDataBaseEngine数据库引擎
CAttemperEngine调度引擎
CTCPSocketEngine  网络引擎
CAsynchronismEngine 异步引擎
  数据队列类 CQueueService CQueueServiceThread->(公共服务)
  ADO 错误类 CADOError : public IADOError
       

内部类:

意义 功能 继承 引用
TCP SOCKET 类 CServerSocketItem SOCK对象和操作、完成端口、加密解密等    
数据队列事件 CQueueServiceEvent 事件通知,接口设置管理   代码级引用
窗口控制类 CControlWnd //消息映射
OnAsynRequest//请求消息
: public CWnd  
应答线程对象 CSocketAcceptThread 运行函数(WSAAccept) : public CServiceThread  
读写线程类 CServerSocketRSThread 运行函数(GetQueuedCompletionStatus)
参数CServerSocketItem *
: public CServiceThread  
检测线程类 CSocketDetectThread 运行函数(非阻塞)、检测m_dwTickCount : public CServiceThread CTCPSocketEngine*//管理指针
队列线程类 CQueueServiceThread 运行函数(GetQueuedCompletionStatus)
参数CQueueService *
: public CServiceThread  
消息线程 CMessageThread 运行函数(for CAsynchronismEngineSinkArray*) : public CServiceThread CAsynchronismEngine*//异步引擎
定时器线程 CTimerThread 运行函数(for CTimerItemPtr->GetCount();) : public CServiceThread CTimerEngine*//定时器引擎
         
数据存储类 CDataStorage 内存的管理   公共服务( dllimport class )
线程对象类 CServiceThread 线程操作管理 IServiceThread 公共服务( dllimport class )
事件输出类 CEventTrace 事件管理、通知、级别(静态类)   静态全局 IEventService 以及其他处理函数
         
类别 类(非组件实现) 接口(组件接口)    
数据库引擎钩子 CDataBaseSink IDataBaseSink    
调度引擎钩子 CAttemperEngineSink IAttemperEngineSink    
客户端网络引擎+钩子 客户端SOCKET+=IClientSocketSink IAsynchronismEngineSink    
中心服务器 名字 类名 继承 类型
  调度引擎钩子 CAttemperEngineSink : public IAttemperEngineSink 接口实现
  数据库引擎钩子 CDataBaseSink : public IDataBaseSink 接口实现
         
  中心服务类 CCenterService   核心类
  配置参数 CInitParamter   核心类
         
  连接信息结构 CConnectItem   数据管理
  连接信息管理 CConnectInfoManager   数据管理
  房间连接信息 CConnectItem_GameServer : public CConnectItem 数据管理
  广场连接信息 CConnectItem_Plaza : public CConnectItem 数据管理
         
  应用程序对象 CCenterServerApp : public CWinApp MFC
  主对话框 CCenterServerDlg : public CDialog MFC
  配置对话框 CSystemOptionDlg : public CDialog MFC
         
登陆、大厅 名字 类名 继承 类型
  调度引擎钩子 CAttemperEngineSink : public IAttemperEngineSink 接口实现
  数据库引擎钩子 CDataBaseSink : public IDataBaseSink 接口实现
  中心连接类 CCenterSocket : public IAsynchronismEngineSink,
 public IClientSocketSink
接口实现
         
  登录服务类 CLogonService   核心类
  配置参数 CInitParamter   核心类
         
  列表管理 CServerList   数据管理
  列表信息 CServerListInfo   数据管理
         
  应用程序对象 CLogonServerApp : public CWinApp MFC
  主对话框 CLogonServerDlg : public CDialog MFC
  配置对话框 CSystemOptionDlg : public CDialog MFC
         
游戏装载器 名字 类名 继承 类型
  服务参数类 CServiceParameter : public CDialog MFC/核心类
  配置参数 CInitParamter   核心类
         
  应用程序对象 CServiceLoaderApp : public CWinApp MFC
  主对话框 CServiceLoaderDlg : public CDialog MFC
  配置对话框 CSystemOptionDlg : public CDialog MFC
         
游戏服务框架 名字 类名 继承 类型
  调度引擎钩子 CAttemperEngineSink : public IAttemperEngineSink
public IGameServiceFrame
接口实现
  数据库引擎钩子 CDataBaseSink : public IDataBaseSink 接口实现
  中心连接类 CCenterSocket : public IAsynchronismEngineSink,
 public IClientSocketSink
接口实现
  • 上一篇关于网狐棋牌6603源码的整理、编译和搭建
  • 下一篇网狐棋牌(一) ServerKernel中的IQueueService接口分析

网狐棋牌游戏平台服务器架构设计分析相关推荐

  1. 网狐棋牌游戏平台服务器架构设计分析[转]

    网狐棋牌游戏平台服务器架构设计分析[转] http://blog.csdn.net/weiwangchao_/article/details/7047044 基本设计概念和处理流程 调用模型 模仿CO ...

  2. 网狐棋牌客户端连接服务器修改方法6,网狐游戏服务器 客户端连接

    网狐游戏服务器 客户端连接 内容精选 换一换 本章节指导您使用MongoDB客户端和Robo 3T工具,通过公网连接副本集实例.用户可以直接操作副本集主节点和备节点.主节点用于读写请求,您可以连接主节 ...

  3. 网狐棋牌客户端连接服务器修改方法

    在游戏客户端文件夹中找到 Resource文件夹 -> Script文件夹 -> HNScriptValue.xml

  4. 网狐棋牌经典版管理后台操作手册

    网狐棋牌_经典版游戏 管理后台操作手册                                   管理平台概述: i.             使用说明: 本手册是提供给运营商阅读使用,帮助 ...

  5. 关于网狐棋牌6603源码的整理、编译和搭建

    最近换工作,趁着有一段清闲时间,整理了一下网狐棋牌的源码,这份源码下载很久了,一直呆在硬盘.这次正好好好看看. 网狐的代码质量很高,流露出来的代码也比较完整,基本上都能编译通过.但是要真的搭建起来,还 ...

  6. 浅谈棋牌游戏开发框架之架构

    浅谈棋牌游戏开发框架之架构 关键字: 棋牌游戏 架构 框架 开发 发表文章 摘要:现在来和大家分享下怎么架构和实现框架来满足棋牌游戏需求的.一.原型符合棋牌项目框架,快速换皮,快速融合.多渠道多包体. ...

  7. 基于JSF框架的在线棋牌游戏平台

    一.项目总体说明 1.1  项目总体说明 该项目是基于JSF框架的在线棋牌游戏平台,目前有五子棋和象棋两项已完成子模块,皆支持人机对战与在线匹配对战,其中象棋还支持大部分棋牌平台不支持的复盘功能.项目 ...

  8. 关于网狐棋牌的数据库

    前不久放出了我自己整理的网狐棋牌的源码,下载的网友反应都不错,只是不少同学都找我要数据库,最近一直没时间,今天趁放假的时间把数据库放出来,分享给大家. 关于网狐棋牌6603源码的整理.编译和搭建 数据 ...

  9. 基于滴滴云的棋牌游戏服务端架构设计

    现在小团队开发的棋牌游戏有很多,棋牌行业的相互攻击是非常普遍的现象,同行之间往往会采取 DDOS.CC 等攻击的手段来打击对手,这是目前棋牌运营商们面临的比较严峻的一个问题,那么在设计棋牌游戏服务端架 ...

最新文章

  1. c# 任务栏托盘图标鼠标进入MouseEnter和鼠标离开MouseLeave实现
  2. 【机器学习】一文读懂层次聚类(Python代码)
  3. gview java_java - 如何在干净模式下运行eclipse? 如果我们这样做会发生什么?
  4. opencv 通过网络连接工业相机_Raspberry Pi上的OpenVINO,OpenCV和Movidius NCS
  5. matlab 常用m文件,MATLAB基础课程 第三章 M文件知识(4)
  6. 英伟达驱动怎么设置显示帧数?
  7. 【NodeJS】20 koa 企业级Cms内容管理系统-XMind功能分析、ERStudio设计数据库ER图
  8. 结构体定义 typedef struct LNode 用法说明
  9. for循环判定质数合数
  10. 常用的背景色、文字颜色
  11. VMware安装Kali2021虚拟机
  12. Chrome 内置翻译翻译失败解决
  13. 聊聊kafka consumer offset lag increase异常
  14. python中numpy数组形状和计算
  15. Not All Carrots Are Orange
  16. PHP - 2021年终总结
  17. Sun公司的操作系统:Solaris简介
  18. mysql统计个数_mysql查询统计数量
  19. HTML5中canvas画图之画圆形
  20. 石榴算法1.0——打击买卖超链

热门文章

  1. 常用的函数式接口_Predicate接口_默认方法ornegate
  2. SpringBoot 读取资源文件
  3. JAVA中ListIterator和Iterator详解与辨析
  4. html的属性与css的属性,HTML的属性和css基础
  5. 深入理解Kafka(4)-主题与分区
  6. android flux 与mvp,使用 MVP 时在设计上的考量
  7. b站2020用户画像_B站2020年度动画大选来袭!论引战,还是要看B站!
  8. if-else运用及技巧(C# 参考)
  9. 关于myeclipse buildpath的jar包不能复制到tomcat lib下的问题
  10. Windows下Oracle的下载与安装