.Net Core 3 新功能 Worker Service
.Net Core Worker Service
這個 .Net Core 3 的新功能將 windows service 功能包裝起來,方便開發 windows service ,更將 linux service 包裝起來,可以維護同個 source code 佈署不同環境,但本文目前先實作 windows 的部分。
環境
- VS 2019
- Windows 10
- .net sdk 3.0.101
建立專案
- 開新資料夾並在下面執行
dotnet new worker
,資料夾下自動建立一個與資料夾相同名稱的專案。 - 安裝套件,Windows 可以只安裝
WindowsServices
,linux 可以只安裝Systemd
dotnet add package Microsoft.Extensions.Hosting --version 3.0.1
dotnet add package Microsoft.Extensions.Hosting.Systemd --version 3.0.1
dotnet add package Microsoft.Extensions.Hosting.WindowsServices --version 3.0.1
- 在
program.cs
下加入以下兩行,在不同 OS 會啟用但不互相影響。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSystemd() // for linux
.UseWindowsService() // for windows
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
建立 Windows Service
- Build
dotnet publish -o output
- 註冊服務
sc.exe create servicetest binPath=C:\Users\ghost\Projects\Github\demos\net-core-3-services\output\NetCore3Service.exe
- 啟動服務
sc.exe start servicetest
- 在 Services 可以觀察到服務已啟動