在标题中,我想问一下在Windows服务上使用这些托管代码的可能性有什么区别。据我所知,这三个允许我创建将作为服务安装的exe。
答案 0 :(得分:14)
Topshelf是我的首选,因为它可以让您充分利用服务和控制台应用程序。使用sc.exe可以将任何控制台应用程序作为服务执行,但exe不会作为服务本身进行交互。直接开发Windows服务让您拥有一项服务并与Windows进行交互,但是作为普通的控制台应用程序进行调试或运行并不容易。 Topshelf允许您充分利用作为服务运行和作为普通控制台应用程序运行。
答案 1 :(得分:3)
Windows服务是响应服务控制消息的特殊应用程序类型,如“开始”,“停止”,“暂停”,“继续”等。
虽然您可以使用sc.exe之类的东西将任何类型的进程转换为服务,但这些进程将无法处理前面提到的控制消息。你通常会发现你将能够开始一个过程,但不能阻止它等。
我倾向于抽象出我的服务(我认为Topshelf这样做),有一个可以由本机Windows服务应用程序或控制台应用程序加载的服务库,这样我就可以拥有两全其美的服务(通常在控制台下调试。