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

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

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

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

}

IAddin 是插件的基礎(chǔ)接口,在 企業(yè)級(jí)服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)經(jīng)驗(yàn)之插件系統(tǒng)基礎(chǔ)篇 一文中已經(jīng)作了簡(jiǎn)單介紹。
針對(duì)各種不同類型的消息(消息類型的不同體現(xiàn)為本條消息的 Header 中的 ServiceKey 不同),需要由不同的消息處理器來處理,管理 / 創(chuàng)建所有這些消息處理器的工廠,稱為處理器工廠IDataDealerFactory。
public interface IDataDealerFactory
{
IDataDealerCreateDealer(
int requestType, int serverTypeKey); // serverTypeKey比如城市代號(hào)
}

IDataDealerFactory根據(jù)消息的類型,創(chuàng)建對(duì)應(yīng)的處理器。 CreateDealer 方法中的第二個(gè)參數(shù) serverTypeKey 暫時(shí)可不予關(guān)心。
前面我們已經(jīng)提到了使用插件來實(shí)現(xiàn)消息處理器,那么 ESFramework 框架就可以提供一個(gè)基于插件的處理器工廠 FunAddinDealerFactory ,這個(gè)工廠的實(shí)現(xiàn)需要借助插件管理器 IAddinManagement ,關(guān)于插件管理器,可參見 企業(yè)級(jí)服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)經(jīng)驗(yàn)之插件系統(tǒng)基礎(chǔ)篇 一文。 FunAddinDealerFactory 實(shí)現(xiàn)如下:
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 }

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

有時(shí),應(yīng)用經(jīng)常有這樣的需要,對(duì)某種類型的消息或某個(gè)特定的消息進(jìn)行攔截、截獲,然后對(duì)其進(jìn)行某種變形(如壓縮、加密)等,這些功能將通過
Hook 機(jī)制實(shí)現(xiàn), Hook 機(jī)制到底是如何發(fā)生作用的,請(qǐng)繼續(xù)關(guān)注下文

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

上一篇: ESFramework介紹之(2)――網(wǎng)絡(luò)通信消息NetMessage

轉(zhuǎn)到: ESFramework 可復(fù)用的通信框架(序)

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 豆国产93在线 | 亚洲 | www.日本色| 看一级特黄a大一片 | 国产免费精彩视频 | 亚洲第一二三四区 | 99成人精品| 久久精品蜜芽亚洲国产a | 国产成人精品一区二区免费 | 99欧美精品 | 国产国产精品人在线观看 | 在线精品自拍 | 久久99精品国产麻豆不卡 | 亚洲 欧洲 自拍 另类 校园 | 人人做人人爽久久久精品 | 国产精品视频一区二区猎奇 | 中文日韩 | 91视频爱爱 | 特级aaa毛片| 爱久久www.35669 | 香蕉福利久久福利久久香蕉 | 亚洲精品国产成人专区 | 羞羞视频网页 | 久久成人免费播放网站 | 色老头老太做爰视频在线观看 | 国产精品九九久久精品女同 | 四虎影院www | 欧美综合图片区 | 国产精品久久久久久久久岛 | 四虎www. | 亚洲精品欧美一区二区三区 | 奇米影视222 | 欧美亚洲国产成人精品 | 九九视频免费在线观看 | 国产欧美一区二区三区在线看 | 888米奇四色极速在线观看 | 精品一久久香蕉国产线看播放 | 国产成人啪精品视频免费网 | 91中文字幕视频 | 天天干天天射天天 | 毛片网站视频 | 亚洲久久在线 |