要想成为一个通信程序的开发高手,能够开发出稳定的?高效的?伸缩性好?可扩展性强的?单机承载数千甚至上万用户同时在线的网络应用系统,一般至少需要3年以上磨练与经验积累?积累过程中所经历的种种折磨,过来人一定都深有体会 -- 经常地加班加点?熬夜调试?就连做梦的时候都在想着那些不经常出现的bug究竟是什么原因导致的?要如何解决?
支持巨大并发的通信程序的开发是非常复杂的,其涉及到很多方面的专业知识,像TCP?UDP协议?Socket开发?多线程编程?线程池?并发架构?分布式架构?完成端口(IOCP)模型?异步编程模型?设计模式等等?
而现在,所有这些经验的结晶都浓缩在ESFramework框架中?ESFramework,是一套可高度复用的?灵活的?单纯而又强大的.NET通信框架,全部采用C#编写?ESFramework内置了对Tcp和Udp的支持,并且支持文本协议和流协议,提供了多种网络引擎供服务端和客户端开发人员轻松使用?采用ESFramework框架,使得您不需要了解Socket?不用再关心底层与通信相关的一切琐碎的事情,就可以在一个更高的层次上更快地开发属于您的高效稳定的网络通信应用?像IM系统?视频会议系统?数据采集系统等,凡是需要分布式通信的系统都可以使用ESFramework框架?
04年开始进行网络通信程序开发,到06年第一次发布ESFramework的相关介绍以来,ESFramework已经走过了4个年头,ESFramework也从0.1版本成长到4.0?ESFramework 4.0 已经不再是一个简单的通信框架,而是形成了一个解决巨大量(百万级)用户同时在线的高性能的通信体系和完整的解决方案?
ESFramework的层级结构如下所示:
查看原图(大图)
你的通信应用程序可以基于图中的任何一层来构建,但是选择的层次越高,框架帮你做的事情也就越多,你的开发也就越高效和快速?我们来粗略地看看每一层?
一.ESFramework
ESFramework
作为通信框架的核心,定义了消息处理的骨架流程,提供了多种通信引擎实现,相对单纯而稳定?在4年前,这个核心基本已经形成,我们再回顾一下消息处理的骨架流程:
查看原图(大图)
其特性列表如下:
(01)提供服务端通信引擎?
(02)提供客户端通信引擎?
(03)支持TCP协议和UDP协议?
(04)支持基于文本的通信消息和基于二进制的通信消息?
(05)支持消息拦截,如消息加密?压缩等
(06)增强的UDP引擎,提供可靠的UDP通信?
(07)消息优先级:High/Common/Low/CanBeDiscarded
(08)完整的异常日志记录?
(09)支持将异步的消息(请求/回复)转化为同步的方法调用?
(10)在线用户管理?心跳检测?
(11)TCP客户端掉线后自动重连?
(12)支持挂接P2P通道?
1. 通信引擎接口继承关系图
查看原图(大图)
2.内置通信引擎列表
ESFramework内置了多种通信引擎,以完全支持“客户端/服务端?TCP/UDP?文本协议/二进制协议”这些特性的组合?
查看原图(大图)
3.在线用户管理
服务端通过ESFramework.Server.UserManagement.IUserManager来管理所有的在线用户?
二.ESPlus
ESPlus 直接建立在ESFramework之上,ESPlus为ESFramework增强了许多常用的功能,用于快速高效地构建具体应用程序?
1.特性列表:
(01)常用的消息头(基于文本或二进制)
(02)常用的IContractHelper实现
(03)消息类型综合管理(MessageTypeRoomManager)
(04)可扩展的服务端P2P消息处理器(P2PMessageProcesser)?
(05)可扩展的服务端Broadcast消息处理器(BroadcastMessageProcesser)?
(06)动态的基于插件的消息处理器?
(07)文件收发器(FileTransceiver),支持文件断点续传功能?
2.扩展应用特性:
(01)基础消息处理结构:登录/登出/心跳/同名登录处理/超时通知/挤掉线通知/踢出通知/获取自己的IPE
(02)Chat: 基于文本/语音/视频的私聊?群聊等
(03)CustomizeInfo:支持使用自定义信息来进行服务器/客户端?客户端/客户端之间的交互?
(04)FileTransfering:文件的发送与接收及其相关控制?
(05)Group:静态组/动态组管理,包括动态组的创建?加入?退出?销毁等?
(06)Friend:好友管理,如好友添加?删除等?
(0 7)FileDirectory:支持客户端之间以及客户端与服务器之间的文件目录交互服务?
3.常用的窗口组件:
(01)MainServerForm:服务端主窗体,显示在线用户?线程数?连接数等信息,并提供自定义功能?
(02)EnhancedUdpSessionStateViewer:用于显示基于增强的UDP协议的每个Session的实时状态?
(03)FileTransferingViewer:用于显示所有文件传递的进度和状态信息?
(04)FileDirectoryBrowser:用于浏览/上传/下载好友或服务器上的目录文件?
4.自定义ESFramework增强
如果你需要自定义ESFramework增强,遵守ESPlus 增强层的规则,将可以使你自定义的增强无缝地与ESPlus集成?ESPlus 增强规则如下:
(01)一个标准的ESPlus 增强层至少包含三块:Contract?Server?Passive
(02)与该扩展相关的所有消息属于同一个消息分组?实现IMessageTypeRoom接口以表示这个分组?
(03)为上述消息分组中的每个类型的消息创建对应的消息协议?
(04)添加Server端使用的消息处理器和相关所需的组件
(05)添加Clientr端使用的消息处理器?IOutter接口实现?以及相关所需的组件
另外,ESPlus.Rapid命名空间为快速开发基于ESFramework应用的提供了数个组件,使得你可以仅用1-2个小时就可以上手ESFramework通信程序开发?可以通过这篇文章来了解如何使用ESPlus.Rapid快速开发基于ESFramework的通信程序?
查看原图(大图)
查看原图(大图)
查看原图(大图)
查看原图(大图)
在ESFramework解决方案中,我们非常方便的将一个独立的通信应用程序迁移到ESPlatform体系中,以应对日益增长的用户数量?这只要修改配置文件就可以做到?
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!