要想成为一个通信程序的开发高手,能够开发出稳定的、高效的、伸缩性好、可扩展性强的、单机承载数千甚至上万用户同时在线的网络应用系统,一般至少需要3年以上磨练与经验积累。积累过程中所经历的种种折磨,过来人一定都深有体会 -- 经常地加班加点、熬夜调试、就连做梦的时候都在想着那些不经常出现的bug究竟是什么原因导致的、要如何解决。
支持巨大并发的通信程序的开发是非常复杂的,其涉及到很多方面的专业知识,像TCP、UDP协议、Socket开发、多线程编程、线程池、并发架构、分布式架构、完成端口(IOCP)模型、异步编程模型、设计模式等等。
而现在,所有这些经验的结晶都浓缩在ESFramework框架中。ESFramework,是一套可高度复用的、灵活的、单纯而又强大的.NET通信框架,全部采用C#编写。ESFramework内置了对Tcp和Udp的支持,并且支持文本协议和流协议,提供了多种网络引擎供服务端和客户端开发人员轻松使用。采用ESFramework框架,使得您不需要了解Socket、不用再关心底层与通信相关的一切琐碎的事情,就可以在一个更高的层次上更快地开发属于您的高效稳定的网络通信应用。像IM系统、视频会议系统、数据采集系统、MMORPG、WebGame、在线休闲游戏等,凡是需要分布式通信的系统都可以使用ESFramework框架。(ESFramework 4.0 有哪些优点?)
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)TCP客户端引擎支持Sock5代理。
(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)CustomizeInfo:支持使用自定义信息来进行服务器/客户端、客户端/客户端之间的交互。
(03)FileTransfering:文件的发送与接收及其相关控制。
(04)P2PSession:P2P打洞以及P2P通道管理。
(05)Group:静态组/动态组管理。
(06)Friend:好友管理。
3.常用的窗口组件:
(01)MainServerForm:服务端主窗体,显示在线用户、线程数、连接数等信息,并提供自定义功能。
(02)EnhancedUdpSessionStateViewer:用于显示基于增强的UDP协议的每个Session的实时状态。
(03)FileTransferingViewer:用于显示所有文件传递的进度和状态信息。
4.自定义ESFramework增强
如果你需要自定义ESFramework增强,遵守ESPlus 增强层的规则,将可以使你自定义的增强无缝地与ESPlus集成。ESPlus 增强规则如下:
(01)一个标准的ESPlus 增强层至少包含三块:Contract、Server、Passive
(02)与该扩展相关的所有消息属于同一个消息分组。实现IMessageTypeRoom接口以表示这个分组。
(03)为上述消息分组中的每个类型的消息创建对应的消息协议。
(04)添加Server端使用的消息处理器和相关所需的组件
(05)添加Clientr端使用的消息处理器、IOutter接口实现、以及相关所需的组件
5.Rapid引擎
ESPlus.Rapid命名空间为快速开发基于ESFramework应用的提供了数个组件,使得你可以仅用1-2个小时就可以上手ESFramework通信程序开发。可以通过这篇文章来了解如何使用ESPlus.Rapid快速开发基于ESFramework的通信程序。
三.ESFramework.SL
如果您的通信应用的客户端是基于Silverlight开发的,那么可以直接使用ESFramework.SL来与基于ESFramework的服务端进行高效地通信。ESFramework.SL内置的TCP客户端引擎采用了与Rapid客户端引擎完全一致的封装,如果您已经了解了ESPlus提供的Rapid引擎,那么就可以直接上手ESFramework.SL开发。
四.ESPlatform
ESPlatform 旨在协助快速构建大型(百万人同时在线)通信应用。ESPlatform支持三种群集(Cluster)模型:垂直分割模型、水平分割模型、交叉模型(垂直分割与水平分割相结合)。 如果你的通信应用是基于ESFramework构建的,那么当同时在线的用户人数剧增时,就可以非常容易地迁移到ESPlatform(有些迁移也许只要修改一下配置就可以),以解决巨大并发的问题。关于ESPlatform的介绍可参见这里。
快速上手系列:
ESFramework 4.0 快速上手 -- Rapid引擎
ESFramework 4.0 快速上手 -- Rapid引擎(续)
ESFramework 4.0 快速上手 -- 如何使用自定义消息?
ESFramework 4.0 快速上手 -- 离线消息如何实现?
ESFramework 4.0 快速上手 -- 玩的就是“心跳”
ESFramework 4.0 快速上手 -- 重登陆模式
ESFramework 4.0 快速上手 -- 异常日志
ESFramework 4.0 快速上手 -- 在Silverlight中使用ESFramework
ESFramework 4.0 快速上手 -- 监控自定义信息
ESFramework 4.0 快速上手 -- 使用紧凑的序列化器,数倍提升性能
ESFramework 4.0 快速上手 -- 使用ACK机制发送自定义信息
ESFramework 4.0 快速上手 -- 文件传送,如此简单
ESFramework 4.0 快速上手 -- 客户端登录验证
ESFramework 4.0 快速上手 -- 入门Demo,一个简单的IM系统(附源码)
ESFramework 4.0 快速上手 -- 聊天系统Demo,增加Silverlight客户端(附源码)
ESFramework 4.0 快速上手 -- 聊天系统Demo,增加文件传送功能(附源码)
高级进阶系列:
ESFramework 4.0 进阶(01)-- 消息
ESFramework 4.0 进阶(02)-- 核心:消息处理的骨架流程
ESFramework 4.0 进阶(03)-- 驱动力:通信引擎(上)
ESFramework 4.0 进阶(04)-- 驱动力:通信引擎(下)
ESFramework 4.0 进阶(05)-- 在线用户管理
ESFramework 4.0 进阶(06)-- 正规消息发送器
ESFramework 4.0 进阶(07)-- 消息同步调用
ESFramework 4.0 进阶(08)-- 挂接P2P通道
ESFramework 4.0 进阶(09)-- ESPlatform 支持的三种群集模型
ESFramework 4.0 进阶(10)-- 垂直分割群集模型与多通道引擎
ESFramework 4.0 进阶(11)-- 好友与组
ESFramework 4.0 进阶(12)-- 文件断点续传原理与实现
更多介绍:
ESFramework 4.0 有哪些优点?
ESFramework 4.0 性能测试
ESFramework 4.0 版本升级说明(持续更新)
相关下载:
ESFramework下载以及ESFramework的最新进展,请访问http://www.oraycn.com/ 或 http://www.cnblogs.com/oraycn/,或QQ:372841921