我之前在文章中介绍过使用NSSM将exe封装为服务,这种方式我个人是比较喜欢的,一来原始文件不受服务的开发约束,二来也可以提供简单的日志系统、线程守护等功能,是我个人比较倾向的行为。但是,有的场景下,可能还是需要原生的服务程序。这个时候,可以利用TopShelf简化程序的开发,如下是它的一些优点:
- Topshelf是.NET平台的Windows服务框架。Topshelf可以轻松创建Windows服务,测试服务,调试服务,并最终将其安装到Windows服务控制管理器(SCM)中。
- Topshelf通过允许开发人员专注于服务逻辑,而不是与.NET框架中的内置服务支持交互的细节。
- 开发人员不需要了解服务类的复杂细节,通过InstallUtil执行安装,或者了解如何将调试器附加到服务以进行故障排除问题。
简单的来说,TopShelf是一个Nuget库,是直接嵌入到程序中的。它简化了服务的构建过程,只需要简单的配置,就可以吧我们的控制台程序封装成一个服务。并且它具有两种行为:
- 开发的时候可以通过控制台程序直接运行,调试
- 部署的时候可以通过install参数将其安装成windows服务。
关于TopShelf的具体使用方法,网上已经有许多比较详尽的教程,这里列举了两篇,本文这里就不在累述了: