zhuweisky

君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。

ESFramework,基于.NET的通信框架。DataRabbit,轻量的数据访问框架。sky.zhuwei@163.com
posts - 191, comments - 1274, trackbacks - 94, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
    (本文适用于ESFramework V0.3+)

    在ESFramework介绍之(7)-- 服务器代理IServerAgent(2006.06.06修正) 的介绍中,我们已经认识了IServerAgent的职责与作用,并且知道了 ITcpServerAgent和IUdpServerAgent是分别使用于Tcp和Udp的ServerAgent。但是它们与其它组件(比如通信组件、消息处理器、处理器工厂)之间的联系是怎样的,前文讲的还不清楚,所以这里增加一篇文章,把这个关系理顺。下面分别是ITcpServerAgent和IUdpServerAgent的组件关系图:


    
    上面两个图非常清晰的描述了组件间的依赖关系和消息的流向。
    注意,上面的ITcpServerAgent和IUdpServerAgent两个组件关系图中右边的部分是完全相同的,它们都是由IServerAgentHelper帮助构建。红线代表将消息发送出去,黑线代表对接收的消息的处理流程。可以看到ITcpServerAgent和IUdpServerAgent都是从IResponseManager提取回复消息,以此才可能将异步的消息请求/回复转化为同步的“方法调用”。
    关于IUdpServerAgent,还有一个地方需要注意,我们在客户端和服务端都使用相同的Udp网络组件--IEsbUdp(可复用性是ESFramework发展过程中一直坚守的目标),只不过服务端为IEsbUdp装配的消息分派器IMessageDispatcher复杂些。

    在这两个组件关系图中,除了ISingleMessageDealer需要我们自己实现以外,其它的所有组件,ESFramework都提供了参考实现,可以直接使用。

    最后,引出一个问题,那就是当客户端使用了点对点的通信时,如果客户A和客户B之间能直接通信,那么A和B之间的P2PMessage就不需要经过服务器转发,即不需要提交给IServerAgent,而是交给IP2PChannel发送;如果客户A和客户B之间不能直接通信,那么A和B之间的P2PMessage就需要经过服务器转发。为了对上层应用屏蔽P2PMessage是通过服务器转发器的还是通过IP2PChannel直接发送的,ESFramework引入了IMessageTransceiver,它的智能在于,如果P2PMessage可以通过IP2PChannel直接发送,则将其交给IP2PChannel,否则将其提交给IServerAgent由服务器转发。这样应用只需要直接使用IMessageTransceiver提交(发送)消息就可以了,而不用关心下层的消息路由途径。关于IMessageTransceiver和IP2PChannel的更多信息将在下文中介绍。

    感谢关注!


上篇文章:ESFramework介绍之(33)―― AS与FS通信实现及相关 

 转到  :ESFramework 可复用的应用框架(序) 

Feedback

#1楼    回复  引用    

2006-06-06 12:03 by netx [未注册用户]
关注中..................

#2楼    回复  引用    

2006-06-06 13:24 by 路人 [未注册用户]
框架的推广和使用是个重点,在中国这有点难。

#3楼    回复  引用    

2006-06-07 18:23 by weejie [未注册用户]
感觉这个框架有前途,起码可以学到如何建立框架和接口使用的东西。

#4楼    回复  引用    

2006-06-12 11:22 by jameswei [未注册用户]
V0.3+在哪儿能下载?

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-06-06 10:33 编辑过


相关链接: