.NET Core 使用Topshelf方式創(chuàng)建Windows服務(wù)

Topshelf是一個(gè).NET Standard庫(kù),它消除了在.NET Framework和.NET Core中創(chuàng)建Windows服務(wù)的那些麻煩。
安裝Install-Package Topshelf
using System;using System.Collections.Generic;using System.Text;using Topshelf;namespace ConsoleApp2222{public class LoggingService : ServiceControl{private void Log(string logMessage){Console.WriteLine(logMessage);}public bool Start(HostControl hostControl){Log("Starting");return true;}public bool Stop(HostControl hostControl){Log("Stopping");return true;}}}
在Program.cs文件的Main方法中
1、服務(wù)的名稱
2、服務(wù)是否自動(dòng)啟動(dòng)
3、服務(wù)崩潰之后的重啟時(shí)間
部署服務(wù)using System;using Topshelf;namespace ConsoleApp2222{internal class Program{private static void Main(string[] args){HostFactory.Run(x =>{x.Service<LoggingService>();x.EnableServiceRecovery(r => r.RestartService(TimeSpan.FromSeconds(10)));x.SetServiceName("TestService");x.StartAutomatically();});}}}

ConsoleApp2222.exe?installConsoleApp2222.exe?start調(diào)試服務(wù)如果我們的服務(wù)代碼已經(jīng)在Visual Studio中打開了,我們就可以直接啟動(dòng)調(diào)試。Topshelf會(huì)模擬在控制臺(tái)中啟動(dòng)服務(wù)。我們應(yīng)該能在控制臺(tái)中看到以下的消息。

這確實(shí)符合了我們的需求。它啟動(dòng)了我們的服務(wù),并像真正的Windows服務(wù)一樣在后臺(tái)運(yùn)行。我們可以像往常一樣設(shè)置斷點(diǎn),基本上它遵循的流程和正常安裝的服務(wù)一樣。
我們可以通過(guò)ctrl+c, 來(lái)關(guān)閉我們的應(yīng)用,但是在運(yùn)行服務(wù)執(zhí)行Stop方法之前,它是不能被關(guān)閉的,這使我們可以調(diào)試服務(wù)的關(guān)閉流程。與調(diào)試指令和配置標(biāo)志相比,這要容易的多。
這里需要注意一個(gè)問(wèn)題。如果你收到的以下內(nèi)容的消息:

這意味著你嘗試調(diào)試的服務(wù)實(shí)際上已經(jīng)作為Windows服務(wù)被安裝在系統(tǒng)中了,你需要停止(不需要卸載)這個(gè)正在運(yùn)行的服務(wù),才可以正常調(diào)試。
參考文檔
https://topshelf.readthedocs.io/en/latest/configuration/config_api.html
https://github.com/Topshelf/Topshelf
http://topshelf-project.com/
往期精彩回顧
【推薦】.NET Core開發(fā)實(shí)戰(zhàn)視頻課程?★★★
.NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門篇-開篇及總體規(guī)劃
【.NET Core微服務(wù)實(shí)戰(zhàn)-統(tǒng)一身份認(rèn)證】開篇及目錄索引
Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)
.NET Core中的一個(gè)接口多種實(shí)現(xiàn)的依賴注入與動(dòng)態(tài)選擇看這篇就夠了
10個(gè)小技巧助您寫出高性能的ASP.NET Core代碼
用abp vNext快速開發(fā)Quartz.NET定時(shí)任務(wù)管理界面
在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務(wù)輕松實(shí)現(xiàn)作業(yè)調(diào)度
現(xiàn)身說(shuō)法:實(shí)際業(yè)務(wù)出發(fā)分析百億數(shù)據(jù)量下的多表查詢優(yōu)化
關(guān)于C#異步編程你應(yīng)該了解的幾點(diǎn)建議
