BackgroundService to klasa bazowa dostarczana przez ASP.NET Core, która umożliwia tworzenie i uruchamianie usług działających w tle (background services) w aplikacjach ASP.NET Core. Te usługi mogą wykonywać różne zadania, takie jak przetwarzanie danych w tle, wysyłanie powiadomień, planowanie zadań i wiele innych.
Oto główne cechy BackgroundService w kontekście ASP.NET Core Web API:
Implementacja klasy BackgroundService: Aby utworzyć usługę działającą w tle, musisz stworzyć własną klasę, która dziedziczy po BackgroundService. W tej klasie musisz zaimplementować metodę ExecuteAsync, która zawiera logikę twojej usługi.
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
public class MyBackgroundService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// Wykonuj zadania w tle
await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken);
}
}
}
Rejestracja usługi w Startup.cs: Następnie musisz zarejestrować swoją usługę w metodzie ConfigureServices w klasie Startup.cs. To jest miejsce, w którym deklarujesz, że BackgroundService ma być dostępny w kontenerze DI (Dependency Injection).
public void ConfigureServices(IServiceCollection services)
{
// Inne konfiguracje
services.AddHostedService<MyBackgroundService>();
}
Uruchamianie i zarządzanie usługą: Gdy twoja aplikacja ASP.NET Core zostanie uruchomiona, BackgroundService zostanie automatycznie uruchomiona jako usługa działająca w tle. Możesz zarządzać cyklem życia usługi w tle za pomocą wbudowanych narzędzi ASP.NET Core, takich jak IHostedService, IHostApplicationLifetime itp.
Możesz także dostosować BackgroundService, aby wykonywała określone zadania w tle, takie jak monitorowanie zmian w bazie danych, przetwarzanie kolejkowanych zadań lub inne zadania, które są przydatne dla twojej aplikacji ASP.NET Core Web API.
Zwalnianie zasobów: Pamiętaj, aby zwalniać zasoby i zatrzymywać usługę działającą w tle, gdy aplikacja jest zamykana lub zatrzymywana. Możesz to zrobić w metodzie StopAsync w klasie BackgroundService.
public override async Task StopAsync(CancellationToken cancellationToken)
{
// Wykonaj czynności zatrzymujące usługę
await base.StopAsync(cancellationToken);
}
BackgroundService to przydatna klasa bazowa w ASP.NET Core, która pozwala na tworzenie i zarządzanie usługami działającymi w tle w aplikacjach, w tym w interfejsach API. Dzięki temu możesz dodawać asynchroniczne zadania i procesy do swojej aplikacji, które mogą działać niezależnie od obsługi żądań HTTP, co może pomóc w zwiększeniu wydajności i funkcjonalności twojej aplikacji.
Background tasks with hosted services in ASP.NET Core
ASP.NET 6 BACKGROUND WORKER SERVICES - What you need to know and how to setup one.