taidou服务器创建流程

来源:互联网 发布:qemu-ga windows 1053 编辑:程序博客网 时间:2024/06/13 20:55

这里写图片描述
一.创建taidou服务器端的工程

1.打开VS,因为是服务器端的程序,所以新建一个类库类型的TaidouServer项目

2.在TaidouServer里添加(5个类库:ExitGamesLibs.dll” “Photon.SocketServer.dll” “PhotonHostRuntimeInterfaces.dll”,ExitGames.Logging.Log4Net.dlllog4net.dll,log4net.dll)
路径为G:\photon server\photon\Photon-OnPremise-Server-SDK_v4-0-29-11263\lib
其中类库ExitGames.Logging.Log4Net.dlllog4net.dll和log4net.dll是用来日志输出的。

3.创建服务器端的启动类,及继承 Applicationbase的类TaidouApplication,实现ApplicationBase的抽象类。

接着创建一个PeerBase类ClientPeer,用来跟客户端进行交互。需继承Peer,然后实现抽象类。在ClientPeer类里创建一个空的构造方法,用来传递PeerBase需要的参数

//此构造方法用来传递TaidouApplication中PeerBase需要的参数。  IPhotonPeer就是客户端与服务器端交互的PhotonPeer类,当服务器端与客户端交互时,PhotonPeer会传递过来,他里面的参数我们可以通过PhotonPeer来取到 public ClientPeer(IRpcProtocol protocol, IPhotonPeer peer)            : base(new InitRequest (protocol, peer))        {    }

在TaidouApplication这边,当一个客户端连接到服务器端时,我们需要创建一个ClientPeer,及return一个ClientPeer

 protected override PeerBase CreatePeer(InitRequest initRequest)        {            return new ClientPeer(initRequest.Protocol, initRequest.PhotonPeer);//把协议的名称initRequest.Protocol和 initRequest.PhotonPeer传递过来        }

去掉其余抽象方法的抛出异常。

二.利用Log4Net给服务器添加日志输出的功能

方便我们调试,追踪错误,跟踪服务器的状态

1.用VS打开LoadBalancing。路径:G:\photon server\photon\Photon-OnPremise-Server-SDK_v4-0-29-11263\src-server\Loadbalancing\LoadBalancing里
找到4行代码复制到TaidouApplication的Setup里

   protected override void Setup()        {            //这4行代码是从G:\photon server\photon\Photon-OnPremise-Server-SDK_v4-0-29-11263\src-server\Loadbalancing\LoadBalancing里的LoadBalancing里的LoadBalancing/MasterServer/MasterApplication的setup里的            ExitGames.Logging.LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);//使用日志,首先要设置Log的工厂,工厂使用了Log4Net的一个实现            //接下来可以认为是设置两个变量的值的            GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(this.ApplicationRootPath, "log");//用来设置Photon:ApplicationLogPath属性的值的。Photon:ApplicationLogPath根据名字可以知道是一个日志的路径  this.ApplicationRootPath指的是应用的根目录G:\photon server\photon\Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy            GlobalContext.Properties["LogFileName"] = "TD" + this.ApplicationName;//用来表示生成日志的名字的              XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(this.BinaryPath, "log4net.config")));//用来指明Log4Net需要一个配置文件,配置文件叫log4net.config            //由于没有log4net.config配置文件,需要从G:\photon server\photon\Photon-OnPremise-Server-SDK_v4-0-29-11263\src-server\Loadbalancing\LoadBalancing里拉到本项目里            log.Debug("Application setup complete");        }

接下来需要修改log4net.config里的代码。把里面name=”Photon.LoadBalancing”的配置删除掉。进行日志功能初始化化后我们就能使用private static readonly ILogger log = ExitGames.Logging.LogManager.GetCurrentClassLogger();去得到一个日志输出的类,然后运用log.Debug进行日志输出。

2.部署Server,添加Server的配置
设置TaidouServer的输出路径,设置log4net.config配置文件的复制到输出目录的属性为始终复制
配置PhotonServer的配置文件,打开bin_Win64下边的PhotonServer.config来进行配置服务器
修改log4net.config里的root标签为 value=”DEBUG”及如下所示:

 <root>    <level value="DEBUG" />    <appender-ref ref="LogFileAppender" />     <appender-ref ref="ConsoleAppender" />    </root>

三.创建服务器端发起请求处理的基本架构

1.在TaidouServer项目里添加一个新的类库工程TaidouCommon.用来创建一些服务器端与客户端共享的类的。比如OperationCode
创建一个类OperationCode,并将其修改成枚举类型。

//OperationCode操作代码,用来代表当前操作是一个登录的请求还是别的请求,用来表示请求的类型的。 public enum  OperationCode:byte    {        Login,        GetServer,        Register,        Role    }

在TaidouServer里添加引用解决方案TaidouCommon。在TaidouServer下创建一个Handlers的文件夹。Handler是一个处理器,是用来处理服务器客户端的请求的。在Handlers里创建一个类HandlerBase,HandlerBase是所有Handler共有的父类。
让TaidouApplication去管理每一个Handler,创建一个字典来存储所有的Handler

 public  Dictionary<byte, HandlerBase> handlers = new Dictionary<byte, HandlerBase>();

2.创建一个登录请求LoginHandler,使其继承自HandlerBase,并为public。
在TaidouApplication里添加一个注册的方法,用于把所有的Handler注册给TaidouApplication,让TaidouApplication知道当前有哪些处理的Handler,然后来请求时,根据请求的OperationCode来识别使用什么样的Handler去处理

0 0
原创粉丝点击