zhuweisky

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

ESFramework,基于.NET的通信框架。DataRabbit,轻量的数据访问框架。sky.zhuwei@163.com
posts - 192, comments - 1276, trackbacks - 96, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

ESFramework网络通信框架 -- 序

Posted on 2006-05-28 11:05 zhuweisky 阅读(17500) 评论(76)  编辑 收藏 所属分类: ESFramework

    自从2004年7月开始,就一直从事N层C/S架构的服务端的开发,从最初的熟悉各种Windows Socket API、熟悉完成端口模型,探索高效稳定的服务端通信模型,时至今日,慢慢的积累了一些(N层)C/S系统的开发经验,ESFramework体系便是这些经验的总结。ESFramework的前生是EnterpriseServerBase类库,后来我将EnterpriseServerBase中的Network部分及建立于之上的应用抽象重新整理为ESFramework框架,这是一套完全可复用的、灵活的、单纯的、支持N层C/S架构的轻量级通信框架,内置了对Tcp和Udp协议的支持。ESFramework不仅仅提供了一个基础的C/S框架和大量C/S应用中常用的组件,而且在ESFramework框架之上,引入的一个扩展层--ESFramework扩展层,专门用于解决的与具体应用相关的领域问题。ESFramework体系包括ESFramework框架以及建立在之上的ESFramework扩展层。因此,基于ESFramework体系,你可以非常快速的构建你的C/S应用。(快速了解

    前面的很多文章,如.NET平台下可复用的Tcp通信层实现.NET平台下可复用的Tcp通信层实现(续)线程安全的网络流等等,都从某个侧面描述了ESFramework中的部分内容。然而如果要使感兴趣的朋友来使用这个框架,这还有很多的东西需要介绍,接下来一系列的文章会详细的描述这个框架的主要原理、结构、组成、使用方法。毫不夸张的说,所有这些要介绍的东西可以结集成一本书--这也是我当初的想法,现在想想,还是先以blog的形式发表,听取大家更多的建议和意见,来进一步完善这个框架,在此基础之上,以后有时间再结集成书会更好。

    下面将列出介绍的主题(将不断扩充),并为已经介绍的主题加上链接。

一.ESFramework体系

消息部分:
1.ESFramework介绍之(1)――网络通信消息协议接口IContract

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

4.ESFramework介绍之(4)――消息拦截器INetMessageHook

5.ESFramework介绍之(5)――消息分派器IMessageDispatcher

6.ESFramework介绍之(30)―― 消息侦察者 INetMessageSpy

7.ESFramework介绍之(31)―― 消息分类及对应的处理器


通信基础设施(Tcp、Udp)
1.ESFramework介绍之(21)-- Tcp组件接口ITcp介绍

2.ESFramework介绍之(23)―― AgileTcp

3.ESFramework介绍之(28)―― Udp组件


基于C/S的4层架构:

1.ESFramework介绍之(6)―― 基于C/S的4层架构概述

2.ESFramework介绍之(10)-- Tcp连接池

3.ESFramework介绍之(11)-- Tcp连接池管理器

4.ESFramework介绍之(12)―― 基于Tcp连接池的消息处理器

5.ESFramework介绍之(13)-- 功能插件处理器工厂

6.ESFramework介绍之(14)-- AS与FS通信方案

7.ESFramework介绍之(15)-- IRAS

8.ESFramework介绍之(17)―― 支持漫游用户和跨区域功能请求

9.ESFramework介绍之(18)―― Tcp用户管理器组件

10.ESFramework介绍之(19)―― 对动态组ActiveGroup的支持

11.ESFramework介绍之(24)―― 日志记录IEsbLogger

12.ESFramework介绍之(26)-- 支持复杂插件(InnerDealer 和 InnerDispatcher)

13.ESFramework介绍之(27)-- 支持OverdueMessage

14.ESFramework介绍之(29)―― 插件公共设施 AddinUtil


15.ESFramework介绍之(33)―― AS与FS通信实现及相关


对客户端的支持:(如果客户端也使用.NET开发,则ESFramework也提供了完善的支持)
1.ESFramework介绍之(7)-- 服务器代理IServerAgent

2.ESFramework介绍之(8)-- 客户端插件IPassiveAddin

3.ESFramework介绍之(9)-- 插件对(Addin Pair)调试“框架”

4.ESFramework介绍之(16)―― Tcp数据自动发送器ITcpAutoSender

5.ESFramework介绍之(32)―― Tcp客户端核心组件关系图

6.ESFramework介绍之(34)―― ITcpServerAgent和IUdpServerAgent组件关系图

7.ESFramework介绍之(35)―― IMessageTransceiver


ESFramework扩展:
1.ESFramework扩展之NaptP2P -- 基于ESFramework的P2P实现

2.ESFramework扩展之NaptP2P -- 可靠的P2P传递


部署与自动升级:
1.ESFramewok介绍之(20) -- 插件自动升级

2.ESFramework介绍之(22)-- 服务器系统自动升级


ESFramework 使用技巧:
1.ESFramewor使用技巧(1)-- ESFramework日志记录器的自动装配

2.ESFramewor使用技巧(2)-- 在插件中使用NHibernate

3.ESFramewor使用技巧(3)-- 在插件中使用Spring.net


ESFramework 相关:
1.给关注ESFramework的朋友们 2006.06.25

2.ESFramework 最新进展 -- ESFramework体系 2006.08.25


ESFramework 解疑:

1.ESFramework解疑 --点滴(不断补充中)


开源ESFramework:
1.ESFramework 即将开源,请大家多提建议!

2.ESFramework源码目录介绍

3.ESFramework V0.1 源码正式发布!

4.ESFramework V0.2 源码正式发布!

5.ESFramework V1.0 发布!

6.ESFramework V2.0 Beta 发布

 

7.ESFramework3.0 Demo源码 (2008.08.15更新)



开源说明:
(1)大家在研究和使用ESFramewok的过程中有任何疑问、建议、意见、想法都可以通过sky.zhuwei@163.com告知我。我会将典型的议题及解决方案放在ESFramework解疑专栏,所以任何有疑问的朋友可以先在这个专栏搜索答案。
(2)希望大家、整个.NET社群为ESFramework贡献自己的智慧,我相信众多的开发者都会从凝聚了集体智慧的ESFramework受益。请相信,正是“我为人人”的开源精神才会造就“人人为我”共赢局面。
(3)对ESFramework贡献突出的朋友将会记录于“ESFramework贡献者名单”中,随ESFramework一起流传!

下载:
1. 下载:ESFramework 源码 (V0.1) (VS2003 ,C#)

2. 下载:ESFramework 源码(V0.2)(VS2003 ,C#)

3. 下载:ESFramework 源码(V1.0 Beta)(VS2003 ,C#)

4. 下载:ESFramework V1.0 简单示例(VS2003 ,C#)

5. 下载:ESFramework V1.0 高级演示(VS2003 ,C#)

6. 下载:ESFramework V1.0 高级演示(0915)(VS2003 ,C#)

说明:ESFramework 1.0后续版本不再开源,向关心ESFramework的朋友们说声抱歉!


ESFramework的QQ群:22817904(已满),37390474

技术支持:AgileSoft@163.com 、sky.zhuwei@163.com

 作者简介


二.历史渊源:
(注,“历史渊源”下的文章,是ESFramework形成的足迹,其中的一些具体的接口的定义、实现可能已经有所改变/改善/简化,但是主体思想却是一脉相承的。)
1.企业级服务器设计与实现经验之开篇

2.企业级服务器设计与实现经验之系统框架(一)

3.
企业级服务器设计与实现经验之系统框架(二)--功能/应用服务器主体框架

4.企业级服务器设计与实现经验之插件系统基础篇

5.企业级服务器设计与实现经验之插件系统--功能插件

6.
插件的“动态替换”

7..NET平台下可复用的Tcp通信层实现

8..NET平台下可复用的Tcp通信层实现(续)

9.线程安全的网络流

10.AgileIM 即时通


   

Feedback

#1楼    回复  引用    

2006-03-10 18:59 by neuhawk1 [未注册用户]
支持,好东西.
最近想做视频方面,希望楼主指导.

#2楼    回复  引用    

2006-03-14 09:14 by IVAN [未注册用户]
很不错.学习中

#3楼    回复  引用  查看    

2006-03-14 12:47 by 123木头人的blog      
作者对web模式下的p2p通讯技术可有研究?

#4楼    回复  引用  查看    

2006-03-16 17:20 by HD      
作者辛苦了!
收藏一下!

#5楼    回复  引用    

2006-03-23 12:26 by wu ming [未注册用户]
学习ACE

#6楼    回复  引用  查看    

2006-03-30 11:33 by ttyp      
看起来不错,支持!!

#7楼    回复  引用    

2006-03-30 11:40 by coffee_cn [未注册用户]
太感谢了
我正准备学习.net
感谢你的热心
希望大家都能向你学习

#8楼    回复  引用  查看    

2006-03-30 11:50 by lrq      
不能下载????

#9楼    回复  引用    

2006-03-30 12:02 by sion [未注册用户]
cool

#10楼    回复  引用    

2006-03-30 12:32 by dolphin.cn [未注册用户]
good very

#11楼    回复  引用  查看    

2006-03-30 12:57 by iplusplus      
支持

#12楼    回复  引用  查看    

2006-03-30 13:24 by jhtchina      
学习

#13楼    回复  引用  查看    

2006-03-30 13:42 by torome      
老大,好好向你学习你的系列文章。.

#14楼    回复  引用    

2006-03-30 13:54 by netx [未注册用户]
学习学习

#15楼    回复  引用  查看    

2006-03-30 15:17 by 萧寒      
支持.

#16楼    回复  引用  查看    

2006-03-30 15:41 by Carmack      
谢谢,支持!向你好好学习

#17楼    回复  引用    

2006-03-30 16:12 by xiaotugou [未注册用户]
好东西....
不过能否给一个应用的例子?这样我觉得理解起来更加方便吧

#18楼    回复  引用    

2006-03-30 17:05 by xyly [未注册用户]
不错,感谢分享。学习中。。。

#19楼    回复  引用    

2006-03-30 19:58 by doy [未注册用户]
八错。。八错,,
thankyou!~

#20楼    回复  引用    

2006-03-31 09:36 by baoli [未注册用户]
嘻嘻,支持一下!

#21楼    回复  引用  查看    

2006-03-31 11:53 by lrq      
我实在下载不了,望楼主 发一份给我 谢谢
leirenqi@163.com

#22楼    回复  引用    

2006-04-06 22:42 by feilangx [未注册用户]
想问一下,用c#做通讯其效率会成为问题吗?

#23楼    回复  引用    

2006-04-10 13:24 by sz [未注册用户]
实在下载不了,希望楼主也能发我一份 sz820124@yeah.net

#24楼    回复  引用    

2006-04-13 14:57 by 云海 [未注册用户]
谢谢楼主,我下载了你的代码,通过它,我学到了许多东西!
真是感激不尽,要楼主来上还, 我一定请你吃饭!^_^

#25楼    回复  引用  查看    

2006-04-13 16:40 by 重出江湖      
好东西,希望楼主能将这个项目坚持下去!

#26楼    回复  引用  查看    

2006-04-19 13:24 by gxh973121      
刚下来看,编译后发现20个警告,希望以后楼主发布是做到0 warning,
另外你的try catch 段中的ee=ee是什么意思?(我是用2005编的,2003 估计
也有10来个吧),支持一下

#27楼    回复  引用    

2006-04-19 14:08 by 风平浪静- [未注册用户]
在我机器上,我没发现gxh973121这个问题啊!

支持搂住,现在正在学习这个框架…………,不过搂主如果能发布一些简单应用这个框架的例子可能效果会更好!

#28楼    回复  引用  查看    

2006-04-19 14:30 by gxh973121      
非常好,俺决定仔细研究一下

#29楼    回复  引用    

2006-04-22 22:26 by hawk77 [未注册用户]
希望zhuwei老师能够写一个简单的即时通信C/S程序,类似QQ的基本功能的。

#30楼    回复  引用    

2006-04-24 08:59 by zhuwei [未注册用户]
AgileIM就是了
http://zhuweisky.cnblogs.com/archive/2006/03/02/341432.html

#31楼    回复  引用    

2006-04-26 11:38 by 格林 [未注册用户]
请问:现在的IM通讯协议,如XMPP、SIP等,最底层到底用什么来传输的?是否都是用TCP、Socket等

#32楼    回复  引用    

2006-05-01 20:24 by wangqi [未注册用户]
真的很佩服楼主的才华啊!希望楼主也能搞一套中国人的ACE

#33楼    回复  引用    

2006-05-12 10:49 by bish [未注册用户]
强烈支持!!!!

#34楼    回复  引用  查看    

2006-05-12 10:55 by wdhSoft      
很好的东西,下来仔细研究一下。
在此对作者有这种好东西以大家分享的气度非常佩服,谢谢!

#35楼    回复  引用  查看    

2006-05-14 10:38 by 天天敲      
刚刚下了一个,我要向楼主好好学习,谢谢

#36楼    回复  引用    

2006-05-18 10:12 by Wisli [未注册用户]
支持楼主,开源了这么好的东西

#37楼    回复  引用    

2006-05-20 22:21 by xlgg [未注册用户]
狂顶,非常感谢楼主,大无私精神........

#38楼    回复  引用  查看    

2006-05-24 15:38 by 昆明小虫      
不错,偶虽从事WEB开发,收藏先:)

#39楼    回复  引用    

2006-05-29 14:06 by CEGCEGCEG [未注册用户]
DING

#40楼    回复  引用  查看    

2006-06-06 14:29 by kemin      
先顶后看

#41楼    回复  引用  查看    

2006-06-21 10:10 by 精浪      
我下載了你的AgileIM﹐可沒有EnterpriseServerBase.dll,導致無法編譯通過。可否將該Dll放上供下載。或jinliangliu@163.com謝謝﹗


呵呵﹐改成ESFramework命名空間就OK了。呵呵。只是沒有數據庫無法凳錄﹐樓主能否提供鏈接﹗謝謝!

#42楼    回复  引用    

2006-09-07 14:41 by lankey [未注册用户]
不错,一直想看看你的文章,但没时间!

#43楼    回复  引用  查看    

2006-09-08 13:50 by wdhSoft[匿名]      
我顶,顶楼主,非常的好。

#44楼    回复  引用    

2006-09-12 21:31 by 永远爱你的人 [未注册用户]
上面的这几个:1.ESFramework介绍之(21)-- Tcp组件接口ITcp介绍
2.ESFramework介绍之(23)―― AgileTcp
11.ESFramework介绍之(24)―― 日志记录IEsbLogger

12.ESFramework介绍之(26)-- 支持复杂插件(InnerDealer 和 InnerDispatcher)
怎么打不开或.

#45楼 [楼主]   回复  引用  查看    

2006-09-13 09:04 by zhuweisky      
@永远爱你的人
链接已经更正,感谢提醒!

#46楼    回复  引用  查看    

2006-09-16 11:54 by yangli      
原来才发现我们是校友,哈哈

#47楼    回复  引用    

2006-09-18 15:35 by 永远爱你的人 [未注册用户]
@yangli
但不知道哪们是你的校友呀?

#48楼    回复  引用    

2006-09-25 17:04 by try1 [未注册用户]
为什么不用castle来代替spring

#49楼    回复  引用    

2006-12-01 12:00 by Lek [未注册用户]
10.AgileIM 即时通
链接失效了

#50楼    回复  引用    

2006-12-01 13:51 by kacy16 [未注册用户]
非常支持楼主!!

#51楼    回复  引用    

2007-02-14 18:12 by net [未注册用户]
good 谢谢 学习之

#52楼    回复  引用  查看    

2007-03-01 09:53 by kuailewangzi1212      
学习!!!

#53楼    回复  引用    

2007-05-08 11:54 by 福州流浪 [未注册用户]
请问各位大仙,网上很多人提到说.net的Socket类的异步方法内部使用的是完成端口机制,也就是说.net只需要用异步通讯机制就可以达到完成端口的效果,是这样么?
求教了

#54楼 [楼主]   回复  引用  查看    

2007-05-08 14:54 by zhuweisky      
to 福州流浪:
如果操作系统底层支持IOCP,.net的Socket类的异步方法将会启用IOCP。

#55楼    回复  引用    

2007-05-08 15:13 by 福州流浪 [未注册用户]
to 楼主:
多谢指点。
既然这样, _NET下可复用的TCP通信层实现之TCP组件 中提到的完成端口TCP组件是不是就没有很大的必要了,因为Windows后续的操作系统都是支持完成端口的,异步TCP组件应该可以达到很好的效果了。

不好意思,还是很早时有关注过楼主的 _NET下可复用的TCP通信层实现之TCP组件 系列大作,ESFramework系列的还没开始看,不知道是不是已经有解释过了
打算坚持学习ESFramework,支持楼主,已经加入QQ群了

#56楼    回复  引用    

2007-05-10 16:05 by 福州流浪 [未注册用户]
再向大家请教一个问题:

开一个服务器,连一个PC客户端(通过以太网连接),客户端结束进程或者关闭连接,服务端都可以捕捉到事件,在线列表当然也可以清掉

还是同一个服务器,连一个终端设备(走移动GPRS网络,服务器放在静态IP上),如果终端设备断电,服务器是没有任何反应的,收不到空信息,Receive也不会出异常。因为服务器一切如常,所以没有特殊处理的话,终端在线列表会永久存在一个失效的连接

现在想请问如果处理这种情况,就是加一些特殊处理,可以及时释放连接(先不管是不是终端设备的问题,服务器必须要处理好这种情况)。

原来的做法是开一个维护线程,某个Socket多少分钟内没有向服务器发任何数据的话,就把它断掉,释放资源。但在ESFramework里面没有发现这样的处理,想请教是不是有更好的做法

#57楼    回复  引用    

2007-05-10 16:19 by 福州流浪 [未注册用户]
如果PC客户端禁用网络或者拔网线,服务器也是一切如常,在线列表也会多一个失效的客户端。
要怎样加特殊处理啊,求教楼主。ESFramework中实在找不到相关的处理

#58楼    回复  引用    

2007-07-15 13:01 by netx [未注册用户]
在 TCP用户管理里面
在线定时检查器

#59楼    回复  引用    

2007-08-24 09:34 by bwzy [未注册用户]
ESFramework还更新不??

#60楼    回复  引用    

2007-08-27 13:47 by KAKA [未注册用户]
高级的示例没代码?

#61楼    回复  引用    

2007-09-01 09:22 by arbiter [未注册用户]
原来中国也有这种人才存在

#62楼    回复  引用    

2007-09-04 14:32 by Benchem [未注册用户]
ESFramework好多年没更新囖。。。。

2.0 Beta 后就没下文了。。。

#63楼    回复  引用    

2007-09-04 16:02 by 明月穿潭 [未注册用户]
是啊,好久没有更新了

#64楼    回复  引用    

2007-09-04 16:03 by 明月穿潭 [未注册用户]
不知道楼主还打算更新么?

#65楼    回复  引用  查看    

2007-11-21 12:12 by ithurricane      
好东西,正好学习网络开发

#66楼    回复  引用    

2008-05-05 17:06 by bendise [未注册用户]
ESFramework介绍之(4)――消息拦截器INetMessageHook
不能访问

#67楼    回复  引用  查看    

2008-07-31 17:19 by zhuds      
good good!!!