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

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

一。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 可复用的网络通信框架(序) 

 

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

目录
相关文章
|
3月前
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
64 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
13天前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
212 1
|
1月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
|
17天前
|
监控 前端开发 安全
Netty 高性能网络编程框架技术详解与实践指南
本文档全面介绍 Netty 高性能网络编程框架的核心概念、架构设计和实践应用。作为 Java 领域最优秀的 NIO 框架之一,Netty 提供了异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨其 Reactor 模型、ChannelPipeline、编解码器、内存管理等核心机制,帮助开发者构建高性能的网络应用系统。
138 0
|
2月前
|
存储 弹性计算 网络协议
阿里云服务器ECS实例规格族是什么?不同规格CPU型号、处理器主频及网络性能参数均不同
阿里云ECS实例规格族是指具有不同性能特点和适用场景的实例类型集合。不同规格族如计算型c9i、通用算力型u1、经济型e等,在CPU型号、主频、网络性能、云盘IOPS等方面存在差异。即使CPU和内存配置相同,性能参数和价格也各不相同,适用于不同业务需求。
|
25天前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
|
4月前
|
机器学习/深度学习 API TensorFlow
BayesFlow:基于神经网络的摊销贝叶斯推断框架
BayesFlow 是一个基于 Python 的开源框架,利用摊销神经网络加速贝叶斯推断,解决传统方法计算复杂度高的问题。它通过训练神经网络学习从数据到参数的映射,实现毫秒级实时推断。核心组件包括摘要网络、后验网络和似然网络,支持摊销后验估计、模型比较及错误检测等功能。适用于流行病学、神经科学、地震学等领域,为仿真驱动的科研与工程提供高效解决方案。其模块化设计兼顾易用性与灵活性,推动贝叶斯推断从理论走向实践。
142 7
BayesFlow:基于神经网络的摊销贝叶斯推断框架
|
11月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
437 6
|
12月前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
289 3
|
7月前
|
监控 安全 Cloud Native
企业网络架构安全持续增强框架
企业网络架构安全评估与防护体系构建需采用分层防御、动态适应、主动治理的方法。通过系统化的实施框架,涵盖分层安全架构(核心、基础、边界、终端、治理层)和动态安全能力集成(持续监控、自动化响应、自适应防护)。关键步骤包括系统性风险评估、零信任网络重构、纵深防御技术选型及云原生安全集成。最终形成韧性安全架构,实现从被动防御到主动免疫的转变,确保安全投入与业务创新的平衡。