• ESFramework网络通信框架介绍之(3)――消息处理器和处理器工厂


    一。ESFramework网络通信框架与消息处理器 

     无论是服务端还是客户端,都需要对接收到的消息进行处理,在ESFramework网络通信框架中,处理消息的组件称为消息处理器,所有的消息处理器都实现了接口IDataDealer
       

    1     public interface IDataDealer
    2     {        
    3         NetMessage  DealRequestMessage(NetMessage reqMsg) ;        
    4     }    

       
        从
    DealRequestMessage方法的签名我们可以看到,将NetMessage的主体(是字节流)解析为IContract对象是由消息处理器自己完成的。这也是很符合实际的,消息处理器一定能解析并处理它关心的消息,而框架和应用的其它部分不必关心。这里小结一下,最开始我们把消息解析的任务从框架下放到了应用,这里,我们又把这个任务继续下放给了消息处理器。这样,各个消息处理器只用解析自己关心的消息了,在此基础上,我们就可以把消息处理器做成插件(Addin)的形式,并实现插件的动态加载功能。
        现在我们来看看消息处理器插件(又称“功能插件”) 
       

        /// <summary>
        
    /// IFunAddin 功能插件基础接口。
        
    /// </summary>
        public interface IFunAddin :IAddin ,IDataDealer
        {
            
        }

        

    IAddin是插件的基础接口,在企业级服务器设计与实现经验之插件系统基础篇 一文中已经作了简单介绍。
         针对各种不同类型的消息(消息类型的不同体现为本条消息的Header中的ServiceKey不同),需要由不同的消息处理器来处理,管理/创建所有这些消息处理器的工厂,称为处理器工厂IDataDealerFactory。

        public interface IDataDealerFactory
        {
            IDataDealer CreateDealer(
    int requestType ,int serverTypeKey)  ;//serverTypeKey 比如城市代号        
        }

        IDataDealerFactory根据消息的类型,创建对应的处理器。CreateDealer方法中的第二个参数serverTypeKey暂时可不予关心。
        前面我们已经提到了使用插件来实现消息处理器,那么ESFramework框架就可以提供一个基于插件的处理器工厂FunAddinDealerFactory,这个工厂的实现需要借助插件管理器IAddinManagement,关于插件管理器,可参见企业级服务器设计与实现经验之插件系统基础篇一文。FunAddinDealerFactory实现如下:
       

    FunAddinDealerFactory

         上面讲述的是基于插件的处理器工厂,后面的文章中我们还会给出一个基于Tcp连接池的处理器工厂:)

        有时,应用经常有这样的需要,对某种类型的消息或某个特定的消息进行拦截、截获,然后对其进行某种变形(如压缩、加密)等,这些功能将通过
    Hook机制实现,Hook机制到底是如何发生作用的,请继续关注下文 

    ESFramework网络通信框架介绍之(4)消息拦截器INetMessageHook

    上一篇:ESFramework网络通信框架介绍之(2)――网络通信消息NetMessage

    转到  :ESFramework 可复用的网络通信框架(序) 

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Python基础:数据类型-列表与元组(6)
    Python基础:数据类型-数字(5)
    Python基础:编码规范(4)
    Python基础:语法基础(3)
    Python基础:第一个Python程序(2)
    Python基础:搭建开发环境(1)
    Vue.js 2.x笔记:服务请求axios(8)
    Vue.js 2.x笔记:状态管理Vuex(7)
    一位资深传统型软件开发者的思考:传统软件企业危机四伏【转】
    基于cesium的GIS洪水淹没三维模拟系统
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/348954.html
Copyright © 2020-2023  润新知