ESPlatform Demo -- 入门Demo,应用服务器群集(附源码)
ESPlatform用于将基于ESFramework构建的服务器群集起来,关于ESPlatform的详细介绍可参见开发手册中的文章(概念与模型 、迁移到群集平台 、从外部访问群集)。本文我们将实现一个Demo,来展现ESPlatform提供的服务器群集以及跨服务器通信等功能。
还记得我们前面提供的ESFramework的入门Demo,它演示了客户端与服务器、以及客户端与客户端之间的基本通信功能。只不过,在ESFramework的那个Demo中,相互通信的客户端连上的是同一个服务端。本文的Demo就是在那个老的ESFramework Demo的基础上来进行升级,使得位于不同服务器上的两个客户端之间也可以相互通信。本Demo运行起来的结构简化后是这样的:
一.项目结构
本Demo总共包含4个项目。
1.ESPlatform.ACMServer:这个是由官方提供的应用群集服务器ACMS的源码,本demo直接将其拷贝过来,未做任何修改。
2.ESPlatform.SimpleDemo.Core:用于定义公共的信息类型、通信协议。
3.ESPlatform.SimpleDemo.Server:Demo的服务端。
4.ESPlatform.SimpleDemo.Client:Demo的客户端。
二.应用群集管理服务器ACMS
ACMS由官方提供,本Demo没有任何特殊需求,所以,不需要对其进行任何修改。我们只需要关注配置文件中,TransferPort和Remoting端口的值。
<configuration> <appSettings> <!--应用群集中的服务器分配策略--> <add key="ServerAssignedPolicy" value="MinUserCount"/> <!--用于在AS之间转发消息的Port--> <add key="TransferPort" value="12000"/> </appSettings> <system.runtime.remoting> <application> <channels> <!--提供IPlatformCustomizeService和IClusterControlService Remoting服务的Port--> <channel ref="tcp" port="11000" > <serverProviders> <provider ref="wsdl" /> <formatter ref="soap" typeFilterLevel="Full" /> <formatter ref="binary" typeFilterLevel="Full" /> </serverProviders> <clientProviders> <formatter ref="binary" /> </clientProviders> </channel> </channels> </application> </system.runtime.remoting> </configuration>
三.Demo服务端
在升级老的Demo时,首先需要使用企业版的ESFramework.dll替换专业版,然后,使用其中的ESPlatform.Rapid.RapidServerEngine替代ESPlus.Rapid.RapidServerEngine,并在构造函数中指定:当前服务端实例的ID、ACMS的IP地址及其TransferPort和Remoting端口。
//使用简单的好友管理器,假设所有在线用户都是好友。(仅仅用于demo) ESPlatform.Server.DefaultFriendsManager friendManager = new ESPlatform.Server.DefaultFriendsManager(); this.engine = new ESPlatform.Rapid.RapidServerEngine(this.textBox_serverID.Text, this.textBox_acmsIP.Text, int.Parse(this.textBox_acmsPort.Text) ,int.Parse(this.textBox_transferPort.Text)); this.engine.FriendsManager = friendManager; this.engine.Initialize(int.Parse(this.textBox_serverPort.Text), new CustomizeHandler(), new BasicHandler()); friendManager.PlatformUserManager = this.engine.PlatformUserManager;
然后,本demo更换了主界面,直接在主界面可以指定相关配置信息,而其它的部分与老Demo完全一致。
四.Demo客户端
相对于老的Demo而言,客户端的修改非常小,只是将配置文件中的服务器的IP和端口移到了登录界面上,这样方便指定要连接的服务端的地址。除此之外,没有其它变化,甚至,客户端的项目都不需要引用ESPlatform.dll。
五.运行Demo
1.启动应用群集管理服务器ACMS。
2.启动第一个服务端,ServerID指定为0,监听6000端口。
3.启动第二个服务端,ServerID指定为1,监听6001端口。
4.启动第一个客户端,连接ServerID为0的服务端(6000端口)。
5.启动第二个客户端,连接ServerID为1的服务端(6001端口)。
6.两个客户端之间可以相互对话了。
(在正式的应用场景中,ACMS、两个服务端、两个客户端 可以部署在不同的机器器上)
下图是Demo运行起来的效果:
六.Demo下载
-----------------------------------------------------------------------------------------------------------------------------------------------
下载免费版本的ESFramework/ESPlatform 以及 demo源码
Q Q:168757008