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下载

ESPlatform.SimpleDemo 源码

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

 下载免费版本的ESFramework/ESPlatform 以及 demo源码  

Q Q:168757008

官网:www.oraycn.com

导航

首页

官方网站

立即咨询 

站内搜索

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