文章出處

http://blog.csdn.net/weiwangchao_/article/details/7047044

基本設計概念和處理流程

 

調用模型

模仿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 接口實現

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()