摘要:
好久没有写关于ESFramework的文章了,曾很早就承诺过要写一篇介绍基于ESFramework实现NAPT P2P的文章,今天终于能抽出时间做这件事。网络地址转换NAT(或者NAPT)的基本理论知识,网上有很多相关资料,不是很清楚的朋友可以先了解下什么是NAT、以及为什么要使用NAT。使用NAT的一个非常常见的场合就是P2P技术,要使两个隐藏在不同的局域网后面机器能够相互通信,并不是一件非常简单的事情,因为,这两台机器没有公网地址,相互之间是无法直接通过IPEndPoint访问的。NAT解决了这个问题,虽然并不是所有的操作系统都完整的支持NAT,幸运的是,主流的操作系统一般都是支持的。通常 阅读全文
摘要:
ESFramework介绍之(7)-- 服务器代理IServerAgent (本文原作于2006.03.15,第一次修正于2006.06.06,修正后适用于ESFramework V0.3+) (本文是ESFramework对客户端开发的支持特性之一 ,如果要按顺序阅读,请转到ESFramework介绍(序)) 分布式系统的构建一般有两种模式,一是基于消息(如Tcp,http等),一是基于方法调用(如RPC、WebService、Remoting)。深入想一想,它们其实是一回事。如果你了解过.NET的Proxy,那么你会发现,方法调用和消息请求/回复实际上是可以相互转换的,.NET的Prox. 阅读全文
摘要:
ESFramework介绍之(4)――消息拦截器INetMessageHook 网络上传输的消息经常是经过加密和压缩,有的特定类型的消息可能还需要进行其它变形,ESFramework通过INetMessageHook对这些功能提供支持。需要说明的是,ESFramework对消息进行截获(Hook)处理有两种方式,一是仅仅Hook处理消息主体(Body),而不对消息头作任何变换;另一种方式是对整个消息(包括消息头和主体)都进行Hook处理。通常,第一种方式已经能够满足我们的大多数应用,并且效率也更高,如果应用有更特殊的要求,可以采用第二种方式。本文先介绍第一种方式,后面的文章中会对第二种给予讲. 阅读全文
摘要:
ESFramework介绍之(32)―― Tcp客户端核心组件关系图 如果你的客户端基于ESFramework构建,并使用Tcp与服务端通信。通过这篇文章你将知道如何迅速、高效地创建客户端应用。 ESFramework对基于Tcp客户端的支持主要在ESFramework.Network.Tcp.Passive命名空间,下图给出了该命名空间中的核心组件,以及这些组件之间的关系: 下面解释一下这些组件的作用、职责。我们从最底层的通信组件NetworkStream向上看:(1)NetworkStream 即是System.Net.Sockets.NetworkStream类,在ESFramewor. 阅读全文
摘要:
ESFramework介绍之(20)―― 插件自动升级 当我们的服务平台搭建成功后,所需要做的主要事情就是开发服务端功能插件(IFunAddin)和客户端插件(IPassiveAddin),每个插件对(AddinPair)实现了一组相似或相近的需求/功能。 好了,我们已经开发了十多对插件对,然后分别XCopy到了各个服务器节点上,“整个系统”已经投入了运行。通过前面的介绍(回顾),相信大家对我们的“整个系统”有了个大致的映像。我们的IRAS服务器通常只存在于一个节点上,而我们的AS和对应的多个FS通常分布在非常多个节点上(比如每个大中城市都分配一个AS),而且这些节点相距非常遥远,深圳AS位. 阅读全文
摘要:
ESFramework介绍之(8)-- 客户端插件IPassiveAddin 前文已经提到了,在IServerAgent的基础上,客户端也可以采用插件的结构形式,客户端插件需要实现IPassiveAddin接口。我的想法是,当客户端主程序加载一个新的PassiveAddin时,可以在某个菜单的子Items上添加一项,当双击这个子菜单项时,则弹出该客户端插件提供的“业务操作窗体”。这只是使用客户端插件的可行方式之一,你完全可以根据你的应用来决定使用形式。IPassiveAddin接口定义如下: 1 ///<summary>2///IPassiveAddin用于客户端的插件。通常一个P 阅读全文
摘要:
本实验用于测试ESFramework服务端引擎的性能,测试程序使用ESFramework 4.0版本。一.准备工作测试的机器总共有3台,都是普通的PC,一台作为服务器,两台作为客户端。作为服务器是PC配置如下:操作系统:Windows Server 2003 Enterprise Edition SP2CPU:Pentium Dual-Core CPU E5400 @ 2.70GHz内存:2G二.测试策略 本实验所采用的策略是这样的:(1)每个客户端实例首先与服务器建立N个TCP连接,然后依次在每个TCP连接上发送一个36字节的消息。遍历一次完毕后,等待(Sleep)M毫秒,再进行下一轮遍历发 阅读全文
摘要:
现在我们将在ESFrameworkDemo -- 文件传送Demo的基础上,使用ESPlus提供的第四个武器,为其增加P2P通信的功能。在阅读本文之前,请务必先掌握ESFramework 开发手册(04) -- 可靠的P2P一文中介绍的P2P的基础知识以及相关API的用法。 本Demo主要演示以下功能:(1)创建基于TCP的P2P通道(2)创建基于UDP的P2P通道(内部使用可靠的UDP)(3)使用P2P通道发送消息和传送文件一.服务端 在P2P打洞的过程中,服务端会参与协助P2P通道的建立,整个过程是由ESFramework/ESPlus内部自动完成的,而这个过程对于框架使用者是透明的。P. 阅读全文