【发布时间】:2015-05-07 15:07:51
【问题描述】:
我正处于为自定义 CMS 构建框架的最后阶段,该框架利用 SignalR 来发挥作用。
我在控制台应用程序中运行完美,但在生产环境中却不太理想。所以我决定将代码移植到 Windows 服务上,这并不是特别困难,但实际上关于部署和安装的信息很分散。
似乎有多个 SO 帖子和大量开发人员文章,但它们似乎从未涵盖整个主题。由于 Windows 服务对我来说非常陌生,我希望有人可以分解这是如何完成的。希望应该为其他人提供一个很好的资源。
那么关键的问题:
- 什么是最适合窗口服务生存的目录?
- 如何安装? (双击exe)?
- 安装后如何运行服务?
- SignalR 会在后台永久运行吗?
为了文章的完整性,我将添加一些代码:
public partial class SignalRService : ServiceBase
{
IDisposable SignalR;
public SignalRService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
string url = "http://localhost:8080";
SignalR = WebApp.Start(url);
}
protected override void OnStop()
{
SignalR.Dispose();
}
}
//Main that starts the service
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new SignalRService()
};
ServiceBase.Run(ServicesToRun);
}
如果有人能阐明这些关键点并集中资源供其他人查看,我将不胜感激。
问候,
【问题讨论】:
-
只是好奇,为什么不用 IIS 作为主机?
-
@Wasp 由于当前架构脱离系统,它遵循解耦系统的模式。老实说,我可以在 IIS 中运行,但我正在寻找最佳性能 - Self Host 避免了任何类型的 IIS 开销。加上更多的好处。另外我认为如果它不是自托管的,它需要放在一个应用程序中,我当然想避免这种情况。我真的很惊讶我对 Q(s) 没有任何兴趣哈哈。
标签: c# windows-services signalr windows-server-2012