如何在 ASP.NET Core 中排程後臺任務(作業)?
後臺任務,也稱為作業,本質上是並非旨在在應用程式的正常流程中執行的服務,例如傳送電子郵件確認或定期清理資料庫以清除非活動帳戶。這些作業並非旨在與客戶互動或處理使用者輸入。相反,它們在後臺執行,處理佇列中的專案或執行長時間執行的程序。
在後臺作業或服務中執行這些任務的主要優勢在於,您可以保持應用程式的響應能力。例如,當用戶註冊時,您可以安排一個後臺作業向用戶傳送電子郵件,而不是在同一請求中傳送電子郵件。
ASP.NET Core 透過提供在應用程式啟動時在後臺執行任務的抽象來支援後臺任務。在 ASP.NET Core 中,這些型別的後臺任務稱為託管服務,因為您將它們託管在應用程式中。
您可以使用**IHostedService**介面在後臺執行任務。託管服務只是表示包含後臺任務邏輯的類。當應用程式啟動時,您會註冊多個在應用程式執行期間在後臺執行的後臺任務。當應用程式停止時,服務也會停止。即使是 ASP.NET Core 伺服器 Kestrel 也作為 IHostedService 執行。
IHostedService 介面包含兩種方法
**StartAsync(CancellationToken):** 提供啟動後臺任務的邏輯。
**StopAsync(CancellationToken):** 在應用程式停止之前呼叫。它提供結束後臺任務的邏輯。
示例
這是一個說明託管服務配置的示例。
public class Program{
public static void Main(string[] args){
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>{
webBuilder.UseStartup<Startup>();
})
.ConfigureServices(services =>{
services.AddHostedService<VideosWatcher>();
});
}您可以使用BackgroundService類作為基類來實現IHostedService介面。它包含一個ExecuteAsync(CancellationToken)方法,該方法用於執行後臺服務。該方法返回一個表示後臺服務生命週期的Task物件。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP