ESPlus 3.0 正式发布!

      距离ESPlus 2.0发布已经有半年的时间了,在这半年多的时间中,有数十家公司在他们的项目或产品中正式使用了ESFramework 4.0,并根据实际的使用状况,给我们反馈了很多有益的建议。基于这些建议和ESFramework的长期发展规划,今天,我们推出了ESPlus 3.0 。在新版本的ESFramework/ESPlus中,我们重构了部分接口,这将使得框架的使用更加容易上手;新版本也加入了更多实用的新特性,开发者能更细腻地控制ESFramework提供的强大功能。另外,ESPlus 3.0也是接下来ESPlatform的群集平台1.0能进行发布的前提条件。

      接下来我们将从Bug修复、内核优化、特性变更三个方面描述最新版本与上一版本的区别。

一.Bug修复列表

1.基于TCP的P2P通道偶尔会自动关闭的bug。

2.客户端被挤掉线后,可能还会自动重连的bug。

3.客户端P2P引擎在某种情况下,会写大量日志的bug。

4.未登录成功的用户断开连接时,UserManager也会触发SomeOneDisconnected事件的bug。 

 

二.内核优化列表

1.基于UDP的P2P优化:增强UDP引擎性能;改进算法,降低重发率;增大发送速度。

2.TCP客户端引擎优化:减少初始化所需的启动时间。 

 

三.特性变更列表

1.好友与组

      将好友与组二项,由Rapid引擎的必需两翼,转变成可选功能。

(1)增加ESPlus.Application.Friends和ESPlus.Application.Friends和ESPlus.Application.Friends和ESPlus.Application.Group命名空间,来容纳好友与组的相关功能。

(2)IFriendsManager、IGroupManager由作为服务端IRapidServerEngine的Initialize方法的参数转变成了其注入属性。

(3)IRapidServerEngine增加了只读属性IFriendsController和IGroupController,用于控制好友与组的相关行为。

(4)IRapidPassiveEngine增加了只读属性FriendsOutter和GroupOutter。

(5)那些不需要好友与组特性的开发者,就不再需要去了解这两个选项。也不用设置IRapidServerEngine的FriendsManager和GroupManager属性。

 

2.客户端ICustomizeOutter

(1)增加异步投递消息(Post)的功能;

(2)增加回复异步调用的功能;

(4)增加发送大数据块(Blob)的功能。详情请参见 ESFramework 使用技巧 -- 大数据块信息

(5)支持在通道繁忙时,可以选择是否丢弃要发送的数据。

(6)通过ICustomizeOutter进行同步调用时,如果连接断开,不再需要等到超时,而是直接抛出异常。

(7)BroadcastInGroup方法转移成为IGroupOutter的Broadcast方法。

 

3.ICustomzieHandler

      请特别注意,在新版本中,服务端和客户端共用同一个ICustomizeHandler接口,即ESPlus.Application.CustomizeInfo.ICustomizeHandler。最新的接口定义更加简洁,如下所示:

    public interface ICustomizeHandler
    {
        /// <summary>
        /// 处理接收到的信息(包括大数据块信息)。
        /// </summary>
        /// <param name="sourceUserID">发出信息的用户ID。如果为null,表示信息来自服务端。</param>
        /// <param name="informationType">自定义信息类型</param>
        /// <param name="info">信息</param>
        void HandleInformation(string sourceUserID, int informationType, byte[] info);       

        /// <summary>
        /// 处理接收到的请求并返回应答信息。
        /// </summary>
        /// <param name="sourceUserID">发送请求信息的用户ID。如果为null,表示信息来自服务端。</param>     
        /// <param name="informationType">自定义请求信息的类型</param>  
        /// <param name="info">请求信息</param>
        /// <returns>应答信息</returns>
        byte[] HandleQuery(string sourceUserID, int informationType, byte[] info);     
    }

      就像注释所解释的,如果方法的参数sourceUserID的值为null,就表示这个自定义信息是来自服务端的【用于客户端时】。当然,如果是用于服务端,则方法的第一个参数sourceUserID是绝对不会为null的。

      至于广播信息,已经迁移到了ESPlus.Application.Group命名空间,客户端接收到的广播信息时由IGroupOutter触发BroadcastReceived事件进行通知。

 

4.客户端IBasicOutter

(1)Logon方法如果超时没有回复,则由抛出TimeoutException异常改为返回登录失败。

(2)增加PingByP2PChannel的功能。

(3)好友/组友上下线通知事件转移到对应的IFriendsOutter和IGroupOutter接口中。

 

5.Rapid引擎更加内聚

(1)客户端IRapidPassiveEngine不再暴露内部的核心引擎。

(2)为了弥补由(1)带来的部分引擎信息不能访问的不足,IRapidPassiveEngine增加属性和事件:ChannelIsBusy属性,ConnectionInterrupted事件、ConnectionRebuildStart事件。

(3)服务端IRapidServerEngine增加了FriendsController和GroupController属性,并且将原来的FriendNotifyEnabled属性和GroupNotifyEnabled属性转移到了IFriendsController和IGroupController中。

 

6.可独立部署的P2P服务器

(1)P2P服务端可以独立部署,也可以集成于Rapid服务端引擎中一起部署。

(2)IRapidServerEngine增加了UseAsP2PServer属性,用于控制是否集成P2P服务器。

(3)IRapidPassiveEngine增加了P2PServerAddress用于设定独立P2P服务器的地址。

 详情可参见 ESFramework 使用技巧 -- 部署P2P服务器

 

 四.版本说明

      本次发布的dll的版本如下:ESFramework 4.0.9.0, ESPlus 3.0.0.0 ,并且发布的所有的程序集都采用了强签名。

      最新版本ESFramework/ESPlus的SDK、帮助文档、demo、已开放的源码等 都已经更新并放到我们的官网供大家下载试用(http://www.oraycn.com/ESFramework_download.aspx)。

      本博客的《ESFramework开发手册》系列文章也已经全部更新完毕。新版本更详细的使用说明可以参见开发手册相应的文章。

      对于从未了解过ESFramework的朋友,可以从 ESFramework 开发手册(00) -- 概述 这篇文章开始。谢谢。

-----------------------------------------------------------------------------------------------------------------------------------------------  
 

导航

首页

官方网站

立即咨询 

站内搜索

ESFramework 通信框架

详细说明

SDK下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK下载

OMCS FAQ

版本变更记录

OrayTalk 企业即时通讯系统

详细说明

客户端下载

傲瑞实用组件

SDK下载

NPush 消息推送组件

StriveEngine 轻量级的通信引擎

MFile 语音视频录制组件

MCapture 语音视频采集组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

傲瑞组件 FAQ

授权

授权流程

产品授权说明

产品选购指南

授权SDK使用说明

其它

SDK使用技巧

联系我们

电话:027-87638960

Q Q:168757008

邮件:master@oraycn.com