9

如标题所示,我想问一下使用这些将我的代码托管在 Windows 服务上的可能性有什么区别。据我所知,这三个都允许我创建将作为服务安装的 exe。

4

2 回答 2

16

Topshelf 是我的首选,因为它可以让您获得两全其美的服务和控制台应用程序。使用 sc.exe 允许您将任何控制台应用程序作为服务执行,但 exe 本身并不作为服务进行交互。直接开发 Windows 服务让您拥有一项服务并与 Windows 进行交互,但调试或作为普通控制台应用程序运行并不容易。Topshelf 允许您充分利用作为服务运行和作为普通控制台应用程序运行的优势。

于 2012-12-02T17:48:33.870 回答
4

Windows 服务是响应服务控制消息(如开始、停止、暂停、继续等)的特殊应用程序类型。

虽然确实可以使用 sc.exe 之类的东西将任何类型的进程转变为服务,但这些进程不会处理前面提到的控制消息。您通常会发现您将能够启动一个进程但不能停止它等。

我倾向于做的是将我的服务抽象出来(我认为 Topshelf 会这样做),拥有一个可以由本机 Windows 服务应用程序或控制台应用程序加载的服务库,这样我就可以两全其美(通常在安慰)。

于 2012-12-02T17:48:57.867 回答