NETCore中的WorkerService是什么/怎么用-創(chuàng)新互聯

本篇內容主要講解“NET Core中的Worker Service是什么/怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“NET Core中的Worker Service是什么/怎么用”吧!

在細河等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網站制作、網站設計、外貿網站建設 網站設計制作定制網站制作,公司網站建設,企業(yè)網站建設,品牌網站設計,全網整合營銷推廣,外貿網站制作,細河網站建設費用合理。

當你想到ASP.NET Core時,可能會想到Web應用程序后端代碼,包括MVC和WebAPI。MVC視圖和Razor頁面還允許使用后端代碼生成帶有HTML元素的前端UI。全新的Blazor更進一步,允許使用WebAssembly在Web瀏覽器中運行客戶端.NET代碼。最后,我們現在有了一個Worker Service應用程序的模板。

這是在ASP.NET Core早期預覽中引入的。雖然項目模板最初列在Web模板下,但此后在向導中重新定位了一個級別。這是在.NET Core中創(chuàng)建長時間運行的跨平臺服務的好方法。本文介紹Windows操作系統。

NET Core中的Worker Service是什么/怎么用

Worker Service項目

在VisualStudio 2019中創(chuàng)建新的Worker Service項目的最快方法是使用新模板。還可以使用適當的DotNetCLI命令。

啟動VisualStudio并選擇Worker Service模板,如下所示:

NET Core中的Worker Service是什么/怎么用

要使用命令行,使用以下命令,-o是一個可選標志,用于為項目提供輸出文件夾名:

dotnet new worker -o myproject

程序和后臺服務

Program.cs類包含Main()方法和CreateHostBuilder()方法。這可以在下面的片段中看到:

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

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

要注意的事情:

1. Main方法調用CreateHostBuilder()方法,并運行它。

2. 在ASP.NET Core中,WebHostBuilder將被Generic HostBuilder替代。

3. CreateHostBuilder()創(chuàng)建主機并通過調用AddHostService<T>

Worker.cs,定義如下:

public class Worker : BackgroundService
{
 // ...
 
 protected override async Task ExecuteAsync(CancellationToken stoppingToken)
 {
  // do stuff here
 }
}

要注意的事情:

1. Worker類實現BackgroundService 類,它來自命名空間Microsoft.Extensions.Hoting

2. 然后,Worker類可以重寫ExecuteAsync()方法來執(zhí)行任何長期運行的任務。

Worker Service 中使用Logging

若要在Worker Service項目中使用日志記錄,可以在Program.cs:

using Microsoft.Extensions.Logging;
public static IHostBuilder CreateHostBuilder(string[] args) =>
 Host.CreateDefaultBuilder(args)
 .UseWindowsService()
 .ConfigureLogging(loggerFactory => loggerFactory.AddEventLog())
 .ConfigureServices(services =>
 {
 services.AddHostedService<Worker>();
 });

1.在使用擴展方法之前,將其NuGet包添加到項目中:

Microsoft.Extensions.Logging.EventLog

2.將適當的命名空間添加到代碼中:

using Microsoft.Extensions.Logging;

3.調用方法ConfigreLogging()并調用適當的日志記錄方法,例如:AddEventLog()。

  • AddConsole()

  • AddDebug()

  • AddEventLog()

  • AddEventSourceLogger()


這個Worker類通過注入ILogger<Work>對象到構造函數中:

private readonly ILogger<Worker> _logger;

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

運行Worker Service

在繼續(xù)之前,請將調用添加把UseWindowsService()添加到Program類或者確認它已經在那里了。官方文檔中UseServiceBaseLifetime()在預覽版中。在新的版本此方法已重命名為UseWindowsService()中。

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

根據代碼文檔,UseWindowsService()進行下列工作:

1. 將主機生存期設置為WindowsServiceLifetime

2. 設置 ContentRoot

3. 啟用以應用程序名稱作為默認名稱的事件日志記錄。

你可以以各種方式運行Worker Service:

1.在VisualStudio中生成和調試/運行。

2.發(fā)布到exe文件并運行它

3.運行sc(從Windows\System 32)創(chuàng)建新服務

若要將Worker Service發(fā)布為具有依賴關系的exe文件,請運行以下命令:

dotnet publish -o C:\path\to\project\pubfolder

-o參數可用于指定要生成已發(fā)布文件的文件夾的路徑。它可以是指向項目文件夾的路徑,然后是一個新的子文件夾名,以保存已發(fā)布的文件。

若要創(chuàng)建新服務,請運行sc.exe從System 32文件夾中傳入從發(fā)布命令生成的exe文件的名稱。

> C:\Windows\System32\sc create MyServiceName binPath=C:\path\to\project\pubfolder\MyProjectName.exe

當手動運行服務時,你將看到以下的日志輸出:

info: WorkerServiceSample.Worker[0] Making doc 1 at: 06/09/2019 00:09:52 -04:00Making your document...
info: WorkerServiceSample.Worker[0] Making doc 2 at: 06/09/2019 00:10:05 -04:00Making your document...
info: Microsoft.Hosting.Lifetime[0]
 Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
 Hosting environment: Development

服務安裝完成后,會出現在Windows的服務列表中:

NET Core中的Worker Service是什么/怎么用

到此,相信大家對“NET Core中的Worker Service是什么/怎么用”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯建站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

當前名稱:NETCore中的WorkerService是什么/怎么用-創(chuàng)新互聯
分享鏈接:http://muchs.cn/article2/dhdhic.html

成都網站建設公司_創(chuàng)新互聯,為您提供外貿網站建設、服務器托管、搜索引擎優(yōu)化手機網站建設、網站設計公司、網站策劃

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

手機網站建設