ESFramework介紹之(31)―― 訊息分類及對應的處理器

來源:互聯網
上載者:User
    這是一篇遲到了很久的文章,要不是今天看到Mediar朋友寫的“基於ESFramewok的 用戶端和用戶端通迅”的文章,我也許還不會想起寫這篇應該很早就發表的Blog,它可以協助ESFramework的研究者/使用者們更好的使用ESFramework。Mediar朋友的那篇文章中介紹了通過伺服器轉寄P2PMessage,Mediar手動實現了一個自己的處理器,實際上ESFramework已經內建了P2PMessage的處理器,那就是P2PMessageDealer,P2PMessageDealer不僅可以把訊息轉寄給串連到同一個AS上的好友,而且可以轉寄給串連到異地AS上的好友。不管怎樣,還是要感謝Mediar為我們提供的樣本!

    到目前為止,ESFramework將接收自終端使用者的訊息分為6類,這可以通過ServiceType枚舉看出來:    public enum ServiceType
    {
        Basic ,           //IBasicRequestDealer
        Function ,
        P2PMessage ,      //對於P2P訊息,伺服器僅僅轉寄,P2PMessageDealer
        FriendRelation ,  //如好友名單、好友資料等 ,FriendRelationDealer
        GroupMessage ,    //如多人連網遊戲中的同步訊息等(動態組訊息) -- ActiveGroupMessageDealer
        CustomServiceType //自訂服務種類
    }

    我先解釋一下這幾種類型的訊息含義:
(1)Basic,基本訊息是類似這樣的訊息,比如登入、退出、check訊息等。
(2)Function,功能請求訊息是所有請求功能服務的訊息,這樣的請求訊息都有對應的回複訊息,比如查詢、要求伺服器計算而得到結果等等。ESFramework中,幾乎所有的Function類型的訊息都是由功能外掛程式處理的。
(3)P2PMessage,點對點訊息,是指使用者發給另一使用者而經過伺服器中轉的訊息,比如即時通訊中的聊天訊息等。
(4)FriendRelation,好友關係請求訊息,比如請求好友名單、好友資料等,這在很多IM應用中是常見的。
(5)GroupMessage,動態組請求訊息。ESFramework支援運行時動態組建立、管理等。
(6)CustomServiceType ,自訂的訊息類型,即你的應用中用到的除上面5種訊息類型以外的訊息。
(7)還要補充一種訊息,跨地區(AS)請求,這種類型的訊息將被本地AS轉寄到目標AS去處理。(回顧跨地區AS)

    ESFramework為每種類型的訊息都提供了預設的處理器(或處理器介面),它們是:
(1)對於Basic訊息類型,ESFramework提供了IBasicRequestDealer介面,你的應用只要實現此介面就可處理所有的Basic訊息。
(2)對於Function類型的訊息,由於通常是由功能外掛程式處理,所以ESFramework提供了FunAddinDealerFactory來處理所有的功能請求訊息。
(3)P2PMessage,對於所有要轉寄的訊息,ESFramework提供了P2PMessageDealer,P2PMessageDealer可以進行本地區轉寄和跨地區(AS)轉寄。如果需要將轉寄失敗的訊息儲存以待以後重試,可以使用IOverdueMessageHandler。
(4)FriendRelation,對於好友關係請求,ESFramework提供了FriendRelationDealer處理器,你只需要實現該處理器使用到的其它組件介面即可。
(5)GroupMessage,對於動態組請求訊息,ESFramework提供了ActiveGroupMessageDealer可以直接進行處理。
(6)CustomServiceType ,對於應用自訂的訊息類型,你需要實現自己的訊息處理器。
(7)對於跨地區(AS)請求,你可以根據AS之間的通訊方式實現特定的處理器。如果AS之間採用.net remoting通訊,則ESFramework提供了ESFramework.Architecture.FourTier.ForeignDealer來處理跨地區請求。

    所有上述的訊息處理器都可以裝配到EsbRequestDealerFactory工廠,EsbRequestDealerFactory為每種類型的訊息都預留了處理器插槽,你可以通過對應的屬性進行處理器注入!圖示如下:

    (圖中黃色背景的組件都已經在ESFramework中提供了實現!BasicRequestDealer需要你實現IBasicRequestDealer介面)

    如果你的應用只需要使用其中幾種類型的訊息,那麼只需要為EsbRequestDealerFactory裝配對應的訊息處理器,這樣不會為不使用的訊息類型付出任何額外的代價。

上一篇文章:ESFramework介紹之(30)―― 訊息偵察者 INetMessageSpy

轉到  :ESFramework 可複用的通訊架構(序) 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.