ESFramework介绍之(12)―― 基于Tcp连接池的消息处理器
前面的两篇文章我们已经介绍了Tcp连接池和Tcp连接池管理器,并且引入了ITcpPool接口,这个接口可以将单个连接池和一组连接池统一起来,使它们有相同的外部使用方式。现在我们需要考虑的问题是,当消息分派器分派一个接收到的请求时,如果这个请求需要被FS上的某个功能插件处理,那么消息分派器是如何将这个消息分派到对应的FS上去的?
回顾介绍消息分派器时画出的各消息组件联系图,我们非常自然的想到,创建一个消息处理器,这个消息处理器将请求消息通过Tcp连接池转发给对应FS处理。这样的一个消息处理器称为“基于Tcp连接池的消息处理器”,它在消息组件联系图中的位置如下:
当有一个请求被分派到基于连接池的消息处理器时,它就从Tcp连接池中Rent一个NetworkStream,然后发送请求,并将接收到的回复返回给消息分派器。基于连接池的消息处理器仍然实现了IDataDealer接口,其借助ITcpPool组件来实现功能。下面给出简单伪码,因为整个实现比较复杂(错误处理、异常处理、ReRent机制等),代码比较多,所以就不列出来了,大家只要了解了主要的思想就行了,而这个思想是比较简单的。
{
/*
1.Rent TcpStream
2.Send Request
3.Recieve Response
4.Return Response
*/
}
最后提一句,我们在上图的AS和FS中都看到了网络组件,如果AS也采用Tcp,那么这两个组件是相同的,也就是说Tcp组件可以很方便的复用。
在FS中,Tcp网络组件和功能插件之间是通过虚线连接起来的,也就是说网络组件并不会直接与功能插件交互,它们之间仍然存在这一个纽带,这就是消息处理器工厂,那么用于管理功能插件的工厂,就叫做“功能插件处理器工厂FunAddinDealerFactory”,这将在下文中介绍。
感谢关注!
上一篇:ESFramework介绍之(11)-- Tcp连接池管理器
下一篇:ESFramework介绍之(13)-- 功能插件处理器工厂
转到 :ESFramework 可复用的通信框架(序)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构