本篇內(nèi)容主要講解“用.NET Core3.0實(shí)現(xiàn)Worker Services的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“用.NET Core3.0實(shí)現(xiàn)Worker Services的方法”吧!
創(chuàng)新互聯(lián)建站專業(yè)成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,集網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文營銷等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計(jì),讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計(jì)制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。.NET CORE 3.0新增了Worker Services的新項(xiàng)目模板,可以編寫長時(shí)間運(yùn)行的后臺服務(wù),并且能輕松的部署成windows服務(wù)或linux守護(hù)程序。如果安裝的vs2019是中文版本,Worker Services變成了輔助角色服務(wù)。Worker Services 咱也不知道怎么翻譯成了這個(gè)名稱,咱也不敢亂翻譯,下文就保持原名稱。。。,本文將會演示如何創(chuàng)建一個(gè)Worker Services項(xiàng)目,并且部署為windows服務(wù)或linux守護(hù)程序運(yùn)行;
開始創(chuàng)建worker service 項(xiàng)目
創(chuàng)建新項(xiàng)目——》選擇輔助角色服務(wù)
項(xiàng)目創(chuàng)建成功之后,您會看到創(chuàng)建了兩個(gè)類: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(); });
Program類跟ASP.NET Core Web應(yīng)用程序非常類似,不同之處沒有了startup類,并且把worker服務(wù)添加到DI container中。
Worker.cs
public class Worker : BackgroundService { private readonly ILogger_logger; public Worker(ILogger 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只是一個(gè)簡單的類,它繼承自BackgroundService,而后者又實(shí)現(xiàn)IHostedService接口。
默認(rèn)的worker演示,沒隔1秒,循環(huán)打印運(yùn)行的時(shí)間。
部署為Windows服務(wù)運(yùn)行1.在項(xiàng)目中添加nuget包:Microsoft.Extensions.Hosting.WindowsServices
2.然后在program.cs內(nèi)部,將UseWindowsService()添加到CreateHostBuilder
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { services.AddHostedService(); });
3.執(zhí)行一下命令發(fā)布項(xiàng)目
dotnet publish -c Release -o C:\WorkerPub
4.然后使用sc.exe工具來管理服務(wù),輸入一下命令創(chuàng)建為windows服務(wù)
sc.exe create DemoWorkService binPath=C:\WorkerPub\WorkerService1.exe
查看服務(wù)狀態(tài)使用一下命令
sc.exe query DemoWorkService
啟動命令
sc.exe start DemoWorkService
在服務(wù)列表查看,DemoWorkService已安裝成功
停用 、刪除命令
sc.exe stop DemoWorkService sc.exe delete DemoWorkService
部署作為Linux守護(hù)程序運(yùn)行
部署linux守護(hù)程序也是很方便的執(zhí)行一下兩個(gè)步驟即可:
添加Microsoft.Extensions.Hosting.Systemd NuGet包到項(xiàng)目中,并告訴你的新Worker,其生命周期由systemd管理!
將UseSystemd()添加到主機(jī)構(gòu)建器中。
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSystemd() .ConfigureServices((hostContext, services) => { services.AddHostedService(); });
到此,相信大家對“用.NET Core3.0實(shí)現(xiàn)Worker Services的方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!