SuperSocket 1.4系列文档(4) 使你的SuperSocket AppServer运行
在SocketService中运行你的AppServer
SuperSocket 提供了一个名叫"SocketService"的项目,它是一个能够让AppServer运行于其中的容器。 SocketService能够使你的AppServer 以控制台或者windows服务的形式运行 (需注册)。
有两种方法可以让你的AppServer运行于SocketService之中:
- 复制你的AppServer的dll输出到SocketService的编译输出目录
- 在你的AppServer项目中引用SocketService 项目。如果你是用这种方式,你需要新建一个名为"SuperSocket.SocketService.exe.config"的配置文件,并且设置这个文件的Build Action为Content和Copy if newer。新建此文件的原因是VS.NET不会复制SocketService项目的配置文件到此项目的输出目录,但最终运行的程序是SuperSocket.SocketService.exe,所以文件SuperSocket.SocketService.exe.config是必须的。QuickStart中的示例项目都是通过这种方式构建。
不管你用哪一种方法,在你运行SocketService之前,必须添加你的socket服务器定义到配置文件SuperSocket.SocketService.exe.config之中。
这里有一个配置示例:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="socketServer" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine"/>
</configSections>
<appSettings>
<add key="ServiceName" value="BroardcastService"/>
</appSettings>
<socketServer loggingMode="IndependantFile">
<servers>
<server name="BroardcastServer"
serviceName="BroardcastService"
ip="Any" port="911" mode="Async">
</server>
</servers>
<services>
<service name="BroardcastService"
type="SuperSocket.QuickStart.BroadcastService.BroadcastServer, SuperSocket.QuickStart.BroadcastService" />
</services>
</socketServer>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
同时,将SuperSocket提供的log4net配置文件(Config/log4net.config)包含到你的启动项目里面(同样是Config目录下),并确保它编译时被输出。
定义你的SocketServer时候主要有两个地方需要注意:
1) 定义你的服务:
<services>
<service name="BroardcastService"
type="SuperSocket.QuickStart.BroadcastService.BroadcastServer, SuperSocket.QuickStart.BroadcastService" />
</services>
服务是指你在此程序中能运行的的类型,你应该将你实现的AppServer的完整类型名称和简称添加到你的服务节点。
2) 定义你的服务器实例
<servers>
<server name="BroardcastServer"
serviceName="BroardcastService"
ip="Any" port="911" mode="Async">
</server>
</servers>
在你添加完服务节点之后,你就可以基于你刚添加的服务来添加你的服务器实例。一个Server xml节点代表了一个服务器运行实例。Server节点的属性"serviceName" 被用来确定一个服务器实例运行的AppServer的类型。Server节点还有其他必填属性,例如: name, ip 和 port。你还可以定义其他的可选属性,相关的属性介绍你可以在下面的链接中找到:http://www.cnblogs.com/jzywh/archive/2011/04/20/2022946.html
你完成的配置之后,你就可以启动你的SuperSocket了。
1) 以控制台的形式启动
运行输出目录的批处理文件 "RunServer.bat" 就可以让你的SuperSocket 以控制台程序的形式运行
2) 以Windows服务的形式启动
SocketService项目提供了两个批处理文件用于windows service,InstallService.bat用于安装SuperSocket服务,UninstallService.bat 用于卸载服务。因为SocketService默认的启动方式是手动启动,所以在安装完服务之后请手动启动服务。
你也可以在你自己的应用程序容器中运行SuperSocket.
添加SuperSocket相关的引用到你的项目,然后添加下面的代码到你的应用程序入口:
LogUtil.Setup();
SocketServiceConfig serverConfig = ConfigurationManager.GetSection("socketServer") as SocketServiceConfig;
if (!SocketServerManager.Initialize(serverConfig))
{
return;
}
if (!SocketServerManager.Start())
{
SocketServerManager.Stop();
return;
}
无论怎样,在应用程序配置文件中添加SuperSocket相关的配置都是必需的, 同时确保把SuperSocket提供的log4net配置文件log4net.config输出到目录/Config也是使日志功能正常工作的必要条件。