基本設計概念和處理流程
調用模型
模仿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
資料庫連接配接接口
資料庫操作類
cdatabase
資料庫鈎子接口
idatabasesink
啟動關閉資料庫子產品、資料操作處理
資料庫引擎接口
啟動停止服務、注冊鈎子、擷取接口
cdatabaseengine
資料隊列接口
iqueueservice
加入資料
cqueueservice
資料隊列類鈎子接口
iqueueservicesink
通知回調函數
ctcpsocketenginecdatabaseenginecattemperengine
隊列類引擎接口
開始服務、停止服務、設定接口、負荷資訊
事件服務引擎接口
設定句柄、設定級别、事件通知
ceventservice
服務引擎接口
服務接口、配置接口、服務查詢、功能接口
cserviceengine
定時器引擎接口
設定定時器、删除定時器
ctimerengine
itimerenginemanager
開始服務、停止服務、設定接口
tcp socket 引擎接口
發送、批量發送、關閉連接配接、允許群發
ctcpsocketengine
tcp socket 引擎管理接口
itcpsocketenginemanager
設定接口、端口、數目、啟動服務、停止服務
連接配接對象回調接口
iserversocketitemsink
應答消息、讀取消息、關閉消息
排程子產品鈎子接口
iattemperenginesink
管理接口、事件接口(定時器、資料庫、網絡應答讀取關閉)
排程引擎接口
服務管理、設定鈎子、設定網絡、擷取接口
cattemperengine
異步引擎接口
管理接口(啟動停止服務、插入請求)、功能接口(注冊鈎子、取消注冊)
casynchronismengine
異步引擎鈎子接口
iasynchronismenginesink
啟動事件、停止事件、異步請求
接口實作
類
引用
網絡管理類
cqueueservice//隊列對象 cserversocketitemptrarray cqueueserviceevent//通知元件
排程管理類
itcpsocketengine//網絡引擎 iattemperenginesink//挂接接口cqueueservice//隊列對象
資料庫對象
_commandptr//指令對象 _recordsetptr//記錄集對象 _connectionptr//資料庫對象
資料庫管理類
cqueueservice//隊列對象 idatabasesink//通知鈎子
事件服務類
設定句柄-bool setrichedithwnd(hwnd); 設定級别-void configeventservice(...); 事件通知-void showeventnotify(...);
ctimerthread->(公共服務)
friend class ccontrolwnd; friend class cmessagethread; ccontrolwnd//控制視窗 cthreadlock//線程同步 cdatastorage//資料存儲 cmessagethread//線程元件
ctimerengine定時器引擎 cdatabaseengine資料庫引擎 cattemperengine排程引擎 ctcpsocketengine 網絡引擎 casynchronismengine 異步引擎
資料隊列類
cqueueservicethread->(公共服務)
ado 錯誤類
: public iadoerror
内部類:
意義
tcp socket 類
cserversocketitem
sock對象和操作、完成端口、加密解密等
資料隊列事件
cqueueserviceevent
事件通知,接口設定管理
代碼級引用
視窗控制類
ccontrolwnd
//消息映射 onasynrequest//請求消息
: public cwnd
應答線程對象
csocketacceptthread
運作函數(wsaaccept)
: public cservicethread
讀寫線程類
cserversocketrsthread
運作函數(getqueuedcompletionstatus) 參數cserversocketitem *
檢測線程類
csocketdetectthread
運作函數(非阻塞)、檢測m_dwtickcount
ctcpsocketengine*//管理指針
隊列線程類
cqueueservicethread
運作函數(getqueuedcompletionstatus) 參數cqueueservice *
消息線程
cmessagethread
運作函數(for casynchronismenginesinkarray*)
casynchronismengine*//異步引擎
定時器線程
ctimerthread
運作函數(for ctimeritemptr->getcount();)
ctimerengine*//定時器引擎
資料存儲類
cdatastorage
記憶體的管理
公共服務( dllimport class )
線程對象類
cservicethread
線程操作管理
iservicethread
公共服務( dllimport class )
事件輸出類
ceventtrace
事件管理、通知、級别(靜态類)
靜态全局 ieventservice 以及其他處理函數
類(非元件實作)
接口(元件接口)
資料庫引擎鈎子
cdatabasesink
排程引擎鈎子
cattemperenginesink
用戶端網絡引擎+鈎子
用戶端socket+=iclientsocketsink
中心伺服器
名字
類名
類型
: public iattemperenginesink
: public idatabasesink
中心服務類
ccenterservice
核心類
配置參數
cinitparamter
連接配接資訊結構
cconnectitem
資料管理
連接配接資訊管理
cconnectinfomanager
房間連接配接資訊
cconnectitem_gameserver
: public cconnectitem
廣場連接配接資訊
cconnectitem_plaza
應用程式對象
ccenterserverapp
: public cwinapp
mfc
主對話框
ccenterserverdlg
: public cdialog
配置對話框
csystemoptiondlg
登陸、大廳
中心連接配接類
ccentersocket
: public iasynchronismenginesink, public iclientsocketsink
登入服務類
clogonservice
清單管理
cserverlist
清單資訊
cserverlistinfo
clogonserverapp
clogonserverdlg
遊戲裝載器
服務參數類
cserviceparameter
mfc/核心類
cserviceloaderapp
cserviceloaderdlg
遊戲服務架構
: public iattemperenginesink, public igameserviceframe
簡介:09年入行,喜歡遊戲和程式設計,對3d遊戲和引擎尤其感興趣。
版權聲明:本文版權歸作者和部落格園共有,歡迎轉載。轉載必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
轉載:http://www.cnblogs.com/geniusalex/p/3493399.html