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:

  1. 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);
            }
        }
    }
    
  2. 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>();
    }
    
  3. 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.

  4. 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.

Materiały

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.