Topshelf vs sc.exe vs Windows Service项目类型

use*_*956 9 c# windows-services topshelf

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

ken*_*nny 14

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


Llo*_*oyd 6

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

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

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