必威体育Betway必威体育官网
当前位置:首页 > IT技术

网狐架构分析

时间:2019-07-21 05:42:13来源:IT技术作者:seo实验室小编阅读:60次「手机版」
 

网狐

调用模型

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

示意图:

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

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

示意图:

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

示意图:

事件数据设计

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

功能模块划分

数据队列服务QueueService模块设计

   基本设计概念

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

   类与接口设计

COM接口接口名接口基类接口实现类
A队列引擎IQueueServiceEngineCQueueServiceHelper
B事件服务IEventServiceCEventServiceHelper
C网络引擎ITCPSocketEngineCTCPSocketEngineHelper
D定时器引擎ITimerEngineCTimerEngineHelper
E数据库操作IDataBaseCDataBaseHelper
F数据库引擎IDataBaseEngineCDataBaseEngineHelper
I调度引擎IAttemperEngineCAttemperEngineHelper
G服务引擎IServiceEngineCServiceEngineHelper
K异步引擎IAsynchronismEngineCAsynchronismEngineHelper
 自动清理参数辅助类 CAutoCleanparameters
 自动关闭记录集辅助类 CAutoCloseRecord
 断开数据库连接辅助类 CAutoCloseDataBase
    
内部接口类别接口功能继承实现类
 数据队列事件

(非组件实现)

CQueueServiceEvent

(IQueueService、CThreadLock)

设置接口、发送通知事件  
    
 数据库错误接口IADOERROR错误类型与描述: public IUnknownExCADOError
E数据库连接接口IDataBase数据库操作类: public IUnknownExCDataBase
 数据库钩子接口IDataBaseSink启动关闭数据库模块、数据操作处理: public IUnknownEx 
F数据库引擎接口IDataBaseEngine启动停止服务、注册钩子、获取接口: public IUnknownExCDataBaseEngine
      
A数据队列接口IQueueService加入数据: public IUnknownExCQueueService
 数据队列类钩子接口IQueueServiceSink通知回调函数: public IUnknownExCTCPSocketEngine

CDataBaseEngine

CAttemperEngine

A队列类引擎接口IQueueServiceEngine开始服务、停止服务、设置接口、负荷信息: public IUnknownExCQueueService
      
B事件服务引擎接口IEventService设置句柄、设置级别、事件通知: public IUnknownExCEventService
G服务引擎接口IServiceEngine服务接口、配置接口、服务查询、功能接口: public IUnknownExCServiceEngine
      
D定时器引擎接口ITimerEngine设置定时器、删除定时器: public IUnknownExCTimerEngine
D定时器引擎接口ITimerEngineManager开始服务、停止服务、设置接口: public IUnknownExCTimerEngine
      
CTCP SOCKET 引擎接口ITCPSocketEngine发送、批量发送、关闭连接、允许群发: public IUnknownExCTCPSocketEngine
CTCP SOCKET 引擎管理接口ITCPSocketEngineManager设置接口、端口、数目、启动服务、停止服务: public IUnknownExCTCPSocketEngine
C连接对象回调接口IServerSocketItemSink应答消息、读取消息、关闭消息CTCPSocketEngine
      
 调度模块钩子接口IAttemperEngineSink管理接口、事件接口(定时器、数据库、网络应答读取关闭): public IUnknownEx
I调度引擎接口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
   

内部类:

意义功能继承引用
TCP SOCKET 类CServerSocketItemSOCK对象和操作、完成端口、加密解密等
数据队列事件CQueueServiceEvent事件通知,接口设置管理代码级引用
窗口控制类CControlWnd//消息映射

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
中心服务器名字类名继承类型
调度引擎钩子CAttemperEngineSink: public IAttemperEngineSink接口实现
数据库引擎钩子CDataBaseSink: public IDataBaseSink接口实现
    
中心服务类CCenterService 核心类
配置参数CInitParamter 核心类
    
连接信息结构CConnectItem 数据管理
连接信息管理CConnectInfoManager 数据管理
房间连接信息CConnectItem_GameServer: public CConnectItem数据管理
广场连接信息CConnectItem_Plaza: public CConnectItem数据管理
    
应用程序对象CCenterServerAPP: public CWinAppMFC
主对话框CCenterServerDlg: public CDialogMFC
配置对话框CSystemOptionDlg: public CDialogMFC
    
登陆、大厅名字类名继承类型
调度引擎钩子CAttemperEngineSink: public IAttemperEngineSink接口实现
数据库引擎钩子CDataBaseSink: public IDataBaseSink接口实现
中心连接类CCenterSocket: public IAsynchronismEngineSink,

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

接口实现

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读