基本设计概念和处理流程

 

调用模型

模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Function),调用方直接调用接口指针内声明的纯虚方法,而此纯虚函数的具体逻辑由该接口的派生类实现。

示意图:

网狐源码架构分析 网狐旗舰版u3d完整源码_设计模式

 

基于事件驱动的数据处理模型

在系统功能设计中,针对网络事件SocketEvent、数据库事件DatabaseEvent、定时器事件TimerEvent……的数据处理,建立数据队列服务QueueService,为每一队列建立多个子线程QueueServiceThread处理。数据队列服务提供添加事件数据的方法AddToQueue,设置数据队列服务钩子SetQueueServiceSink,由数据队列服务钩子QueueServiceSink执行具体逻辑事件的数据处理。
示意图:

网狐源码架构分析 网狐旗舰版u3d完整源码_网狐源码架构分析_02


再者,根据网络、数据库等特定功能,构建网络、数据库等管理服务,实现数据队列服务钩子QueueServiceSink方法,调度事件数据执行外部处理接口,外部处理接口具体由二次开发用户实现。

示意图:

网狐源码架构分析 网狐旗舰版u3d完整源码_数据_03

 

事件数据设计

网狐源码架构分析 网狐旗舰版u3d完整源码_网络_04

 

软件体系结构(架构 Architecture)设计

网狐源码架构分析 网狐旗舰版u3d完整源码_网狐源码架构分析_05

 

功能模块划分

网狐源码架构分析 网狐旗舰版u3d完整源码_数据库_06

 

数据队列服务QueueService模块设计

    基本设计概念

    建立一个内存链表,保存事件数据,对外部提供方法(向链表添加事件数据并通知线程,同时启动多个处理线程,从数据链表里获取事件数据,执行外部钩子方法进行处理。线程事件通知采用完成端口技术。

    类与接口设计

网狐源码架构分析 网狐旗舰版u3d完整源码_数据库_07

 

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

: publicIAsynchronismEngineSink,

 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

: publicIAsynchronismEngineSink,

 public IClientSocketSink

接口实现