棋牌遊戲服務器架構: 詳細設計(一) 內核設計
內核的幾個組件被設計成Service,也就是說這幾個模塊都要實現如下接口:
圖1 IService接口
Start方法用來啟動服務。
Stop 方法用來關閉服務。
IsService 方法用於查詢當前服務是否正在工作。
內核中的幾個Service都不能夠直接創建,Applications在使用這些Service的時候首先要得到一個IServiceMgr的實例,這被實現成了一個另類地單例模式。IServiceMgr的接口定義如下:
圖2 IServiceMgr接口
IServiceMgr提供兩類接口:
1) 獲取Service的接口,這樣直接得到具體的Service,是因為內核的Service比較固定。沒有必要用GetService(strServiceName)這種方法。
GetAsyncService 返回AsyncService的實例
GetDBService 返回DatabaseService的實例
GetTCPService 返回TCPServerService的實例
GetTimerService 返回定時器實例
2) 一個靜態的單例方法Instance。它申明在接口層,但是需要在IServiceMgr的實現中去實現它。它返回IServiceMgr的實例。
由於IServiceMgr的實現只是簡單地將IAttemptService,ITCPServerServer, IDatabaseService,ITimerService的實現組合在了一起,所以它的實現不會詳細描述。
1 AsyncService詳細設計
棋牌遊戲服務器架構: 詳細設計(一) 內核設計