ESFramework ——可堪重任的网络通信框架

ESFramework是一套性能卓越、稳定可靠、强大易用的跨平台通信框架,支持应用服务器集群。其内置了消息的收发与自定义处理(支持同步/异步模型)、消息广播、P2P通道、文件传送(支持断点续传)、心跳检测、断线重连、登录验证、在线用户管理、好友与群组管理、性能诊断等功能。基于ESFramework,您可以方便快捷地开发出各种优秀的网络通信应用。此外,我们在长期实践中所积累的丰富经验,更将成为您强大的技术保障,从开发到上线直至后续运维,全程为您保驾护航,让您高枕无忧。具体而言,ESFramework 具有如下特性:(可跳过概要介绍,直接进入开发手册目录 或 Demo下载

1.高性能

ESFramework底层使用IOCP模型,使得数据收发与处理达到最高性能。当前主流配置的服务器(如至强4核双CPU、4-8G内存)可轻松处理10000个同时在线连接,每秒处理50000个以上的请求。当然,最终能达到的并发,更取决于具体应用的业务逻辑,如果业务逻辑复杂、处理单个请求都对CPU和内存的消耗都比较高,那么就会导致并发数下降,这时也许就要优化我们的业务逻辑代码了、或者使用更多的服务器来分担负载(比如迁移到ESPlatform)。关于ESFramework的性能测试的更多内容可以参见ESFramework 4.0 性能测试

2.可靠、稳定

ESFramework起始于2004年,从0.1版本不断完善和优化到今天4.0版本已经有8年时间,其内核(ESFramework.dll)已经相当成熟稳定,所有已经发现的内核bug都已被解决,而且自2009年以来,没有新的内核的bug被发现。另外,ESFramework只会在需要时才使用必要的资源(如CPU、内存),并且会及时释放持有的资源,不会有内存泄露等情况发生。如果您的业务逻辑代码没有bug,那么基于ESFramework的服务端正常运行一年,都不用重启一次。

3.功能强大丰富

现有的大多数通信框架仅仅解决了通信层的问题,而且几乎都是部分地解决。而ESFramework不仅仅完整地解决了通信层的需求,并且也解决了绝大多数通信系统中都关注的应用层的重要问题,这使得基于ESFramework开发分布式通信系统更迅速、更高效。

在通信层:ESFramework 支持TCP/UDP、文本协议/二进制协议、服务端/客户端以及它们组合的任意方式,并提供多种通信引擎供服务端开发人员和客户端开发人员使用。

在应用层:ESFramework 内置了在线用户管理、消息拦截、消息同步调用、回复异步调用、通道智能选择、客户端登录验证、心跳检测、消息优先级、断线自动重连、在线状态改变自动通知(好友与组友)、重登陆模式选择、完整的异常日志、文件传送(支持断点续传)、组广播、带ACK机制的信息发送、高效的二进制序列化器、等等功能。

在安全性:ESFramework 内置了常见的重要安全机制以防止恶意用户在应用层对服务端进行试探或攻击。这些机制有:消息格式完整验证、消息加密、验证未绑定的消息、绑定连接、关闭空连接等。

4.可靠的P2P

ESFramework提供了基于TCP和UDP的P2P通信(不仅是局域网,还支持广域网P2P通信),而且基于UDP的P2P做了增强,以保证基于UDP的P2P通信也像TCP一样可靠。在客户端之间需要高频通信的分布式系统中(如IM系统等),可靠的P2P通信将为您节省巨大的带宽和服务器成本。

5.高伸缩性的群集平台

ESPlatform平台支持基于ESFramework的应用程序的Cluster(群集),其内置了3种最常用的负载均衡策略。仅仅通过修改几行代码就可以将一个基于ESFramework的应用程序平滑迁入到ESPlatform平台中,以实现多台应用服务器的Cluster,从而应对日益增长的巨大并发。使用ESPlatform群集,我们可以非常方便地在运行时动态添加/移除应用服务器(AS)实例节点。

6.跨平台

跨平台是ESFramework的重要目标之一,ESFramework通过提供多平台的客户端引擎来实现这一点。基于ESFramework开发的不同平台的客户端之间可以相互通信,如此,异构环境将变得透明化。ESFramework已支持的平台如下图所示:

7.服务端性能诊断

ESFramework框架在服务端内置了性能跟踪诊断功能。如果基于ESFramework构建的服务端在运行时,遇到性能问题或某些故障,那么可以开启诊断功能,ESFramework将自动跟踪每种类型消息的处理情况,之后通过分析日志,就可以很快发现问题所在。

8.适用范围广

ESFramework 可以用于任何需要分布式通信的软件系统中,而且其群集功能还可以支持那些同时在线用户数巨大的系统。比如,即时通讯系统(IM),大型多人在线游戏(MMORPG)、在线网页游戏(WebGame)、文件传送系统(FTS)、数据采集系统(DGS)、分布式OA系统等等。

9.文档齐全、接口清晰规范

ESFramework提供的所有接口和API都具有良好的编码风格,与.NET Framework完全一致。我们提供了MSDN风格的帮助文档、Demo源码、ESFramework开发手册系列文章供您研究和学习使用ESFramework进行开发。

10.历史经验分享

我们在过去的10+年里,基于ESFramework开发了很多网络通信系统,也为诸多客户提供技术支持和运行故障排查服务,所以,在以下方面积累了丰富的经验:如基于ESFramework的最佳开发实践、服务端性能瓶颈排查、服务端运行故障排查、性能优化等等。如果您是第一次基于ESFramework进行二次开发,那么,我们分享的这些经验将为您的项目上线运行提供更强大的后续保障。

补充说明:关于ESFramework更详细的介绍,请参见详细说明或转到 Demo下载 

如果对您的项目来说,ESFramework太重量级,敬请了解轻量级通信引擎StriveEngine

时间: 2024-10-24 15:17:25

ESFramework ——可堪重任的网络通信框架的相关文章

成熟的C#网络通信框架介绍——ESFramework通信框架

ESFramework通信框架是一套性能卓越.稳定可靠.强大易用的跨平台C#网络通信框架,支持应用服务器集群.其内置了消息的收发与自定义处理(支持同步/异步模型).消息广播.P2P通道.文件传送(支持断点续传).心跳检测.断线重连.登录验证.在线用户管理.好友与群组管理.性能诊断等功能.基于ESFramework通信框架,您可以方便快捷地开发出各种优秀的网络通信应用.此外,我们在长期实践中所积累的丰富经验,更将成为您强大的技术保障,从开发到上线直至后续运维,全程为您保驾护航,让您高枕无忧.具体而

NetworkComms网络通信框架序言

03年大学毕业,主要做Web开发,大家可以看看networkcomms中文站: www.networkcomms.cn  自己基于网上开源程序二次开发的:) 从06年开始,便把主要的学习精力放到网络通信上, 主要使用C#语言,WinForm框架,sql Server数据库. 工作于大企业的IT部门,平时有较多的时间用于技术研究,即便这样,在学习的初期,几年的时间内,都无法开发出比较稳定的CS系统,网络通信中需要调试和考虑的地方太多,能开发稳定的可复用的通信系统,我想只有传说中的高手才能做到,而我

c#网络通信框架networkcomms内核解析 序言

networkcomms是我遇到的写的最优美的代码,很喜欢,推荐给大家:) 基于networkcomms2.3.1开源版本( gplv3)协议,写了一些文章,希望大家喜欢,个人水平有限,不足之处难免. networkcommsc#通信框架来自于美丽的英国剑桥,由大洋彼岸的两位工程师 Marc Fletcher, Matthew Dean开发. c#网络通信框架networkcomms内核解析之一 消息传送 c#网络通信框架networkcomms内核解析之二 消息处理流程 c#网络通信框架net

c#网络通信框架networkcomms内核解析之十 支持优先级的自定义线程池

本例基于networkcomms2.3.1开源版本  gplv3协议 如果networkcomms是一顶皇冠,那么CommsThreadPool(自定义线程池)就是皇冠上的明珠了,这样说应该不夸张的,她那么优美,简洁,高效. 在 <c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据>中我们曾经提到,服务器收到数据后,如果是系统内部保留类型数据或者是最高优先级数据,系统会在主线程中处理,其他的会交给自定义线程池进行处理. 作为服务器,处理成千上万的连接及数据,单线程性能

c#网络通信框架networkcomms内核解析之八 数据包的核心处理器

我们先回顾一个 c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据 中,主程序把PacketBuilder 中的数据交给核心处理器处理的过程 //创建优先级队列项目 PriorityQueueItem item = new PriorityQueueItem(priority, this, topPacketHeader, packetBuilder.ReadDataSection(packetHeaderSize, topPacketHeader.PayloadPac

Mycat开发实践---Mycat的网络通信框架

1从一个测试说起 网上有人对Cobar和MyCAT做了一个简单的比较测试,过程如下: 1 测试环境 利用A.B.C三大类服务器,在A台上面安装配置MyCAT及Cobar,这样保证了硬件方面的一致性.B类服务器上安装Apache这一web服务,使用PHP语言.C类安装MySQL数据库,其中B类与C类均不止一台,主要目的是为了作压力的均分.C类服务器安装了4台,存放了相同的数据库,对其中一个表进行分片存储. 测试软件使用的是loadRunner.在对两个中间件分别进行测试的过程中,采用的web服务器

网络通信框架之volley

介绍 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高. 不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码.于是乎,一些Android网络通信框架也就应

NetworkComms网络通信框架配套CodeSmith模板使用简介

NetworkComms网络通信框架配套CodeSmith模板使用简介 NetworkComms网络通信程序开发过程中,与数据库的交互部分,很多代码我们采用CodeSmith模板来生成. 此套CodeSmith模板目前只支持sql server 数据库 模板下载地址:  [模板下载]分享我所使用的数据库框架 我们以Sql server数据库为例 简单的看一下如何使用CodeSmith模板生成相关文件 首先双击打开模板文件 第二步:打开属性窗口 数据库配置完成后 ,选择相应的表 生成的代码如下:

Android 网络通信框架Volley的解析

在2013年Google I/O大会上,Android开发团队公布了一个新的网络通信框架:Volley.它适合处理通信频繁的网络操作,但对于每一次通信的数据量则有较为苛刻的限制.本文将介绍该通信框架的用法(包括使用现成和自定义的Request),并从源码的角度探究其工作机制. 目前,Android系统中用于实现HTTP通信的方式主要有HttpURLConnection和HttpClient两个类[1],而封装了它们的框架主要有AsyncHttpClient和Universal-Image-Loa