亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

ESFramework介紹之(3)――消息處理器和處理器

系統 1866 0
無論是服務端還是客戶端 ,都需要對接收到的消息進行處理,在 ESFramework 框架中,處理消息的組件稱為消息處理器,所有的消息處理器都實現了接口 IDataDealer
ESFramework介紹之(3)――消息處理器和處理器工廠
1 public interface IDataDealer
2 {
3 NetMessageDealRequestMessage(NetMessagereqMsg);
4 }

DealRequestMessage 方法的簽名我們可以看到,將 NetMessage 的主體(是字節流)解析為 IContract 對象是由消息處理器自己完成的。這也是很符合實際的,消息處理器一定能解析并處理它關心的消息,而框架和應用的其它部分不必關心。這里小結一下,最開始我們把消息解析的任務從框架下放到了應用,這里,我們又把這個任務繼續下放給了消息處理器。這樣,各個消息處理器只用解析自己關心的消息了,在此基礎上,我們就可以把消息處理器做成插件( Addin )的形式,并實現插件的動態加載功能。
現在我們來看看消息處理器插件(又稱“功能插件”)
ESFramework介紹之(3)――消息處理器和處理器工廠
/// <summary>
/// IFunAddin功能插件基礎接口。
/// </summary>
public interface IFunAddin:IAddin,IDataDealer
{

}

IAddin 是插件的基礎接口,在 企業級服務器設計與實現經驗之插件系統基礎篇 一文中已經作了簡單介紹。
針對各種不同類型的消息(消息類型的不同體現為本條消息的 Header 中的 ServiceKey 不同),需要由不同的消息處理器來處理,管理 / 創建所有這些消息處理器的工廠,稱為處理器工廠IDataDealerFactory。
public interface IDataDealerFactory
{
IDataDealerCreateDealer(
int requestType, int serverTypeKey); // serverTypeKey比如城市代號
}

IDataDealerFactory根據消息的類型,創建對應的處理器。 CreateDealer 方法中的第二個參數 serverTypeKey 暫時可不予關心。
前面我們已經提到了使用插件來實現消息處理器,那么 ESFramework 框架就可以提供一個基于插件的處理器工廠 FunAddinDealerFactory ,這個工廠的實現需要借助插件管理器 IAddinManagement ,關于插件管理器,可參見 企業級服務器設計與實現經驗之插件系統基礎篇 一文。 FunAddinDealerFactory 實現如下:
ESFramework介紹之(3)――消息處理器和處理器工廠
FunAddinDealerFactory
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 public class FunAddinDealerFactory:IDataDealerFactory
2 {
3 private IAddinManagementaddinManagement;
4
5 public FunAddinDealerFactory()
6 {
7 }
8
9 #region property
10 public IAddinManagementAddinManagement
11 {
12 set
13 {
14 this .addinManagement = value;
15 }
16 }
17 #endregion
18
19 #region IDataDealerFactory成員
20 public IDataDealerCreateDealer( int requestType, int serverTypeKey)
21 {
22 foreach (IAddinaddin in this .addinManagement.AddinList)
23 {
24 if ((addin.ServiceKey == requestType) && (addin.Enabled))
25 {
26 return (IDataDealer)addin;
27 }
28 }
29
30 return null ;
31 }
32
33 #endregion
34 }

上面講述的是基于插件的處理器工廠,后面的文章中我們還會給出一個基于 Tcp 連接池的處理器工廠:)

有時,應用經常有這樣的需要,對某種類型的消息或某個特定的消息進行攔截、截獲,然后對其進行某種變形(如壓縮、加密)等,這些功能將通過
Hook 機制實現, Hook 機制到底是如何發生作用的,請繼續關注下文

ESFramework 介紹之( 4) 消息攔截器 INetMessageHook

上一篇: ESFramework介紹之(2)――網絡通信消息NetMessage

轉到: ESFramework 可復用的通信框架(序)

ESFramework介紹之(3)――消息處理器和處理器工廠


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产综合精品中文第一区 | 国产伊人久久 | 亚洲不卡一区二区三区在线 | 国产一二三区在线观看 | 欧美一级毛片aaaaa | 欧美日韩日本国产 | 亚洲成在人线久久综合 | 久久综合精品国产一区二区三区无 | 国产97在线视频观看 | 欧美在线观看a | 九九热这里只有 | 久久久精品波多野结衣 | 久操免费在线视频 | 中文字幕久久久 | 国产精品久久久久久福利 | 黄色成人在线视频 | 涩涩的视频在线观看 | 免费看国产片 | 亚洲综合图片网 | 国产日产欧美精品 | 久久久美女 | 天天操天天爱天天干 | 日本不卡免免费观看 | 亚洲精品乱码久久久久久麻豆 | 欧美男人天堂网 | 国产精品久久久久久一级毛片 | 亚洲美女啪啪 | 欧美特欧美特级一片 | 亚洲精品一区91 | 欧美一级黄色片在线观看 | 亚洲你懂得| 精品国产第一国产综合精品 | 久久久久国产一级毛片高清版 | 97人人干| 苦瓜se影院在线视频网站 | 日韩精品片 | 国产欧美日韩亚洲精品区2345 | 久久久久久九九 | 亚洲图片一区 | 五月婷婷视频 | 久久婷婷一区二区三区 |