ESPlus.Rapid命名空间提供了我们可以直接使用的客户端Rapid引擎和服务端Rapid引擎。Rapid引擎将ESFramework和ESPlus提供的各种组件装配成一个整体,将结构的复杂性隐藏在引擎的内部,而提供给我们一个简单易用的接口。在引擎对象初始化成功之后,我们就可以使用引擎对象暴露出的四大武器了。Rapid引擎底层使用的核心是ESFramework的StreamTcpEngine,其采用TCP协议、并使用了紧凑的二进制消息格式。(说明一下,即使不了解ESFramework更底层的引擎,像StreamTcpEngine,也不会影响Rapid引擎的高效使用。)
ESPlus.Rapid. IRapidPassiveEngine和ESPlus.Rapid.RapidPassiveEngine分别是客户端Rapid引擎的接口和实现类。观察IRapidPassiveEngine接口的定义,我们就可以了解客户端Rapid引擎的使用方法了。
ESPlus.Rapid. IRapidServerEngine和ESPlus.Rapid.RapidServerEngine分别是客户端Rapid引擎的接口和实现类。我们来看看IRapidServerEngine接口的定义。
我们的所有Demo都是使用的ESPlus提供的默认主窗体ESPlus.Widgets.MainServerForm。 一般,只有在调试和测试阶段,我们才会使用该窗体来实时显示每个在线用户的状态。在正式发布时,则建议不要使用该窗体了。特别是在高性能的应用中,该窗体会实时刷新每个用户的状态数据,其消耗CPU是不可忽视的(可以通过将MainServerForm构造函数的showUserList参数设为false,来关闭用户状态显示)。MainServerForm的构造函数如下所示:
当服务端Rapid引擎初始化成功之后,就可以构造MainServerForm并将其显示出来了,其截图如下:
简单提一下,图中显示的设备类型可以是.NET客户端、Silverlight客户端、ios客户端等等。不同平台的客户端引擎可以连接上同一个服务器,并相互通信。
如果具体的应用需要在主窗体中做更多的事情,则需要自己来实现。后面我们会放出MainServerForm的源码,大家也可以在其基础上添加所需的功能。
当然,我们也可以在windows服务中使用服务端Rapid引擎,主要在windows服务启动的时候初始化Rapid引擎就可以了,这样就不需要主窗体了,而且,这样节省了UI刷新所消耗的性能。
当基于ESFramework/ESPlus开发分布式通信应用时,可以遵循下面的步骤:
(1) 系统中的客户端用户之间是否存在好友关系、是否需要相互通信?如果是,则要实现IFriendManager接口;否则,直接使用ESPlus提供的EmptyFriendManager类。
(2) 系统中是否需要将客户端用户进行分组/群、是否需要在组内进行广播消息?如果是,则要实现IGroupManager接口;否则,直接使用ESPlus提供的EmptyGroupManager类。
(3) 分析项目需求,定义所有的自定义信息类型和自定义信息协议。
(4) 在客户端和服务端分别实现各自的ICustomizeHandler接口,用于处理自定义信息、完成系统业务功能。
(5) 在服务端实现IBasicHandler接口,用于验证用户账密。如果不需要验证,则直接使用ESPlus提供的EmptyBasicHandler。
(6) 实例化客户端和服务端Rapid引擎,设置相关属性的值,并将上述各实现类的对象传入相应的Initialize方法。
(7) 在客户端,预定并处理引擎的TcpPassiveEngine属性暴露的连接状态变化事件。如果有需要,还可以预定并处理BasicOutter的相关状态通知事件。在服务端,预定并处理Rapid引擎的UserManager属性的用户状态变化事件。
(8) 使用引擎实例通过属性暴露的四大武器,进一步实现系统业务功能。
到此为止,我们已经将基于ESFramework/ESPlus进行二次开发所需要掌握的所有基础设施都已介绍完毕,大家基本可以上手ESFramework/ESPlus开发了。如果,现在大家再去阅读我们demo的源码,应该就更清楚明白了。
后续我们将写一些高阶一点的文章,帮助大家更好地理解和使用ESFramework。敬请关注,谢谢。
-----------------------------------------------------------------------------------------------------------------------------------------------
关于ESFramework的任何问题,欢迎联系我们:
电话:027-87638960
Q Q:372841921