zhuweisky
君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。
ESFramework,基于.NET的通信框架。DataRabbit,轻量的数据访问框架。sky.zhuwei@163.com
posts - 191, comments - 1274, trackbacks - 94, articles - 1
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
ESFramework介绍之(34)―― ITcpServerAgent和IUdpServerAgent组件关系图
Posted on 2006-06-06 10:29
zhuweisky
阅读(1451)
评论(4)
编辑
收藏
所属分类:
ESFramework
(本文适用于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
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2006-06-06 10:33 编辑过
相关文章:
领带的打法10种——男士必看,女士更要看(图)
关于IE问题,请教和求救
相关链接:
所属分类的其他文章:
ESFramework3.0 Demo源码
ESFramework V2.0 Beta 发布
ESFramework扩展之EsfFTP -- 基于ESFramework的FTP服务
ESFramework 1.0 示例源码
ESFramework V1.0 Beta 发布!
ESFramework扩展之EsfP2P -- 可靠的P2P传递
ESFramework 最新进展 -- ESFramework体系 2006.08.25
ESFramework扩展之EsfP2P -- 基于ESFramework的P2P实现
给关注ESFramework的朋友们 2006.06.25
ESFramework介绍之(35)―― IMessageTransceiver
最新IT新闻:
51.COM技术副总裁邵辉跳槽百度
Mono 2.0终于到来
百度任命李一男担任首席技术官
Google Knol 开始尝试有声版
12日电脑与人进行世纪对话 可思考机器或诞生
Powered by:
博客园
Copyright © zhuweisky
日历
<
2006年6月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
公告
 
气度影响格局
性格决定命运
  正在阅读的书籍:
与我互动
给我发短消息
搜索
留言簿
(63)
给我留言
查看私人留言
随笔分类
(192)
C#专栏(37)
DataRabbit(19)
DTS(11)
Emit(7)
ESFramework(54)
sky随笔(11)
Strive Game Engine(2)
Web开发(6)
分布式(12)
高性能(1)
管理实践(7)
技术随笔(15)
系统架构/EAI、SOA(10)
随笔档案
(191)
2008年9月 (6)
2008年8月 (2)
2008年6月 (2)
2008年5月 (5)
2008年4月 (4)
2008年3月 (1)
2007年12月 (1)
2007年11月 (2)
2007年9月 (2)
2007年8月 (3)
2007年7月 (1)
2007年6月 (1)
2007年5月 (2)
2007年4月 (6)
2007年3月 (17)
2007年2月 (1)
2007年1月 (1)
2006年12月 (3)
2006年11月 (4)
2006年9月 (5)
2006年8月 (2)
2006年7月 (9)
2006年6月 (6)
2006年5月 (19)
2006年4月 (18)
2006年3月 (27)
2006年2月 (4)
2006年1月 (4)
2005年12月 (10)
2005年11月 (2)
2005年10月 (1)
2005年9月 (20)
收藏夹
(20)
ASP.Net(5)
Java技术(3)
Linux(4)
SOA(1)
UML(1)
安全(2)
高级.NET(2)
历史(2)
好友博客
Donald
Ivan Zou
wwp
嘟嘟的博客
技术网站
C#3.0
CodeDOM
CodeProject
CSharpCorner
Linux时代
博客堂
寸锐斋
优秀blog专栏
BlueDavy Java
Don Box
mulder 的程序人生
shanyou
跋涉前行-P2P的思考与探索
寸锐斋
故步自封
花钱的年华
李维
梦想风暴
思归呓语
透明思考
王垠blog
云风
积分与排名
积分 - 460529
排名 - 44
最新评论
1. re: ESFramework3.0 Demo源码
跟ESF一起成长了两年,一直想用ESF做点东西,可是那是不现实的,ESF只是一个很空的框架,框架都算不上只能说是思想或是秀招,完全不能实战的东西。本来花了很多精力写些插件,但这次跟微软合作,我真的只花...
--冰品羽扇
2. re: 【Emit基础】在IL中进行异常处理
这一系列文章挺好,就是每篇的内容少了点
--Terry Sun
3. re: 【Emit基础】在IL中进行异常处理
看看
--hahahehe
4. re: .NET Remoting与双网卡
我觉得这种做法不是很好,最好是使用bindTo属性绑定一个网卡 MSDN上这样说的 machineName:指定用于当前信道的计算机名称的字符串。如果用于服务器信道,则重写 useIpAddress。...
--wuqiubin
5. re: 【Emit基础】调用Tostring()方法的IL表示
@Q.Lee.luluEmit是dotnet的一种很强大的功能。你可以用它在运行时生成代码。你可以在System.Reflection.Emit下面找到关于它的类和方法。使用Emit的前提是必须了解I...
--胖胖de程序员
6. re: 【Emit基础】调用Tostring()方法的IL表示
Emit是啥 ?
--Q.Lee.lulu
7. re: System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
这个问题,一般是由于某些地方存在 内存泄漏引起(不是内存用的多而是泄漏)
以前用 Access oledb 操作写一些比较复杂 sql 经常出现;
--曲滨*銘龘鶽
8. re: System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
碰到过 当时有一个页面每次在我的机器上打开的时候都报这个错 别的机器没事。很急人 就是不知道为什么 ,后来干脆就不管他了。你写的有点深奥 看不懂。...
--Wuya.net
9. re: 项目经理的职责
量化任务,并合理分配给相应的人员? 我对此点表示不同看法,你拿什么量化,你的思维,还是公司的历史数据?承担人自己估算,任务承担人自己估算出来的时间一般都乐观,你估算出来的不更乐观,如果一个8小时的任务...
--PP_xia
10. re: ESFramework3.0 Demo源码
有没有客户端和服务器端的例子?需要有源代码的,小弟看不懂。
--zhuds
阅读排行榜
1. ESFramework网络通信框架 -- 序(17455)
2. Java -- 在Eclipse上使用XFire开发WebService(13237)
3. 路径规划(最短路径)算法C#实现(9836)
4. Java -- 在Eclipse上使用Hibernate(7639)
5. AgileIM 源码公开(7539)
6. 我的架构经验小结(三)-- 深入三层架构(6467)
7. DataRabbit 轻量的ORM框架(00) -- 序(6295)
8. 做一个合格的Team Leader -- 基本概念(5753)
9. ESFramework介绍之(6)―― 基于C/S的4层架构概述(5578)
10. 动态调用web服务(5293)
评论排行榜
1. ESFramework网络通信框架 -- 序(76)
2. AgileIM 源码公开(43)
3. DataRabbit 轻量的ORM框架(00) -- 序(38)
4. 写书计划启动!《.NET通信框架的设计、实现与应用》(31)
5. 总裁与专才(30)
6. 函数设计之美--函数需要返回错误码吗(一)?(29)
7. 基于Web的IM实现思考(29)
8. ESFramework V2.0 Beta 发布(25)
9. 路径规划(最短路径)算法C#实现(24)
10. 框架?(24)
60天内阅读排行
1. System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 (1743)
2. 【Emit基础】在IL中进行异常处理(1308)
3. ESFramework3.0 Demo源码(1191)
4. 【Emit基础】调用Tostring()方法的IL表示(1108)
5. 【Emit基础】OpCodes.Ldind_Ref 和 OpCodes.Ldind_I*(513)
6. 【Emit基础】IL定义方法的语法详解(110)
7. 【Emit基础】IL中发布、订阅、触发事件(59)