1. 程式人生 > 程式設計 >.NET Core3.0建立Worker Services的實現

.NET Core3.0建立Worker Services的實現

.NET Core3.0建立Worker Services的實現

.NET CORE 3.0新增了Worker Services的新專案模板,可以編寫長時間執行的後臺服務,並且能輕鬆的部署成windows服務或linux守護程式。如果安裝的vs2019是中文版本,Worker Services變成了輔助角色服務。Worker Services 咱也不知道怎麼翻譯成了這個名稱,咱也不敢亂翻譯,下文就保持原名稱。。。,本文將會演示如何建立一個Worker Services專案,並且部署為windows服務或linux守護程式執行;

開始建立worker service 專案

建立新專案——》選擇輔助角色服務

.NET Core3.0建立Worker Services的實現

.NET Core3.0建立Worker Services的實現

專案建立成功之後,您會看到建立了兩個類:Program和Worker。

Program.cs

public static void Main(string[] args)
    {
      CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
          .ConfigureServices((hostContext,services) =>
        {
          services.AddHostedService<Worker>();
        });

Program類跟ASP.NET Core Web應用程式非常類似,不同之處沒有了startup類,並且把worker服務新增到DI container中。

Worker.cs

public class Worker : BackgroundService
  {
    private readonly ILogger<Worker> _logger;

    public Worker(ILogger<Worker> logger)
    {
      _logger = logger;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
      while (!stoppingToken.IsCancellationRequested)
      {
        _logger.LogInformation("Worker running at: {time}",DateTimeOffset.Now);
        await Task.Delay(1000,stoppingToken);
      }
    }
  }

worker只是一個簡單的類,它繼承自BackgroundService,而後者又實現IHostedService介面。

預設的worker演示,沒隔1秒,迴圈列印執行的時間。

.NET Core3.0建立Worker Services的實現

部署為Windows服務執行1.在專案中新增nuget包:Microsoft.Extensions.Hosting.WindowsServices

.NET Core3.0建立Worker Services的實現

2.然後在program.cs內部,將UseWindowsService()新增到CreateHostBuilder

public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
       .UseWindowsService()
        .ConfigureServices((hostContext,services) =>
        {
          services.AddHostedService<Worker>();
        });

3.執行一下命令釋出專案

dotnet publish -c Release -o C:\WorkerPub

.NET Core3.0建立Worker Services的實現

4.然後使用sc.exe工具來管理服務,輸入一下命令建立為windows服務

sc.exe create DemoWorkService binPath=C:\WorkerPub\WorkerService1.exe

.NET Core3.0建立Worker Services的實現

檢視服務狀態使用一下命令

sc.exe query DemoWorkService 

.NET Core3.0建立Worker Services的實現

啟動命令

sc.exe start DemoWorkService 

.NET Core3.0建立Worker Services的實現

在服務列表檢視,DemoWorkService已安裝成功

.NET Core3.0建立Worker Services的實現

停用 、刪除命令

sc.exe stop DemoWorkService 
sc.exe delete DemoWorkService 

部署作為Linux守護程式執行

部署linux守護程式也是很方便的執行一下兩個步驟即可:

新增Microsoft.Extensions.Hosting.Systemd NuGet包到專案中,並告訴你的新Worker,其生命週期由systemd管理!

將UseSystemd()新增到主機構建器中。

public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)
    .UseSystemd()
    .ConfigureServices((hostContext,services) =>
    {
      services.AddHostedService<Worker>();
    });

到此這篇關於.NET Core3.0建立Worker Services的實現的文章就介紹到這了,更多相關.NET Core3.0建立Worker Services內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!