使用Dotnet core編寫Window Service程序實踐
近年來,需要編寫windows service的情況越來越少,但偶爾也會用到,比如計算機定期執行數據整理的任務等等
1、創建工程
我的習慣是建立三個工程,一個Windows Service主程序,一個Console主程序,一個業務邏輯庫
使用dotnet core命令創建工程
首先,可以使用dotnet new --list命令查看可以創建的工程類型
dotnet new console -n test-app // 創建Console應用,名稱爲“test-app”(可選)
dotnet new worker -n xxxxService // 創建Worker Service應用,用於創建Windows服務
dotnet new classlib -n xxxxBll // 創建類庫,用於編寫業務邏輯代碼(可選)
dotnet new sln -n xxxx // 創建解決方案
使用VS、VSCode或Rider等IDE打開解決方案,把項目添加到solution中,建立引用關係等操作。
注:Worker Service程序相對於以往的Windows Service開發,可以直接進行調試,小的工程也可以直接創建Worker,而無需創建test-app調試用工程與BLL類庫。
2、業務邏輯編寫與調試
設置test-app爲啓動項,可以方便的進行開發和調試,把業務邏輯代碼都寫到BLL中。
3、開發Windows Service
3.1、把Worker Service改造成Windows Service
1、在項目中添加nuget包:Microsoft.Extensions.Hosting.WindowsServices,選好對應版本。
例如,我的Microsoft.Extensions.Hosting版本是3.1.3,於是選擇Microsoft.Extensions.Hosting.WindowsServices的版本爲3.1.3
2、在program.cs內部,將UseWindowsService()添加到CreateHostBuilder
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
3、把BLL與Worker Service程序做好關聯即可發佈。