为什么使用配置来启动
- 拒绝硬编码(写死代码)
- SuperSocket提供多种有用的配置选项
- 充分利用SuperSocket的工具
如何通过带引导程序的配置启动服务器
SuperSocket配置结点使用.NET默认的配置技术,下面是一个为SuperSocket设计的配置结点:
<configsections>
<section name="superSocket" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" />
</configsections>
服务器实例配置
<supersocket>
<servers>
<server ip="Any" name="TelnetServer" port="2020"
serverType="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer,
SuperSocket.QuickStart.TelnetServer_StartByConfig">
</server>
</servers>
</supersocket>
接下来,解释配置中的server结点:
- name:AppServer实例的名字
- serverType:将被运行的AppServer的全名。serverType属性中的值由“,”分隔,第一部分是Serve类的全称(命名空间+类名);后一部分则是该类所在的程序集的名称,通常也就是你自己的项目名称(注意区别于命名空间)。
- ip:监听的IP
- port:监听的端口
完整的配置介绍将在下一篇文章中。
使用引导程序来启动SuperSocket
static void Main(string[] args)
{
Console.WriteLine("Press any key to start the server!");
Console.ReadKey();
Console.WriteLine();
var bootstrap = BootstrapFactory.CreateBootstrap();
if (!bootstrap.Initialize())
{
Console.WriteLine("Failed to initialize!");
Console.ReadKey();
return;
}
var result = bootstrap.Start();
Console.WriteLine("Start result: {0}!", result);
if (result == StartResult.Failed)
{
Console.WriteLine("Failed to start!");
Console.ReadKey();
return;
}
Console.WriteLine("Press key 'q' to stop it!");
while (Console.ReadKey().KeyChar != 'q')
{
Console.WriteLine();
continue;
}
Console.WriteLine();
//停止服务器
bootstrap.Stop();
Console.WriteLine("The server was stopped!");
Console.ReadKey();
}
一些配置的例子:
- 服务器类型结点:
- 多服务器实例:
<superSocket>
<servers>
<server name="TelnetServer"
serverTypeName="TelnetServer"
ip="Any" port="2020">
</server>
</servers>
<serverTypes>
<add name="TelnetServer" type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/>
</serverTypes>
</superSocket>
<superSocket>
<servers>
<server name="TelnetServerA"
serverTypeName="TelnetServer"
ip="Any" port="2020">
</server>
<server name="TelnetServerB"
serverTypeName="TelnetServer"
ip="Any" port="2021">
</server>
</servers>
<serverTypes>
<add name="TelnetServer" type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/>
</serverTypes>
</superSocket>
由SuperSocket提供的运行容器——SuperSocket.SocketService.exe
直接使用SuperSocket.Socket.Service.exe
- 确保你的服务器所需的所有程序集,包括SuperSocket.SocketService.exe都存放在同一目录下。
- 将你的SuperSocket配置结点复制到SuperSocket.SocketService.exe.config文件中。
- 直接运行SuperSocket.SocketService.exe,你定义的服务器将开始运行。
将SuperSocket.SocketService.exe安装为Windows服务
使用命令行参数“-i”可以将SuperSocket.SocketService.exe安装为Windows服务:SuperSocket.SocketService.exe -i
安装后的Windows服务的名称被定义在配置文件中,可以根据自己的需要修改。
<appSettings>
<add key="ServiceName" value="SupperSocketService" />
</appSettings>
可以通过命令行参数“-u”来卸载已安装的服务:SuperSocketService.exe -u
没有评论:
发表评论