Exemple de BackgroundService dans ASP.NET Core
Introduction
ASP.NET Core offre une variété de fonctionnalités pour créer des applications web robustes et performantes. Parmi ces fonctionnalités, le modèle BackgroundService
est un outil précieux pour exécuter des tâches en arrière-plan sans affecter la réactivité de votre application principale. Dans cet article, nous allons explorer un exemple concret de l'utilisation de BackgroundService
dans ASP.NET Core.
Qu'est-ce que BackgroundService ?
BackgroundService
est une interface dans ASP.NET Core qui définit une méthode ExecuteAsync
qui est exécutée de manière asynchrone en arrière-plan. Cela permet d'exécuter des tâches longues ou périodiques sans bloquer le thread principal de l'application.
Exemple pratique : Tâche périodique
Imaginons que vous souhaitez exécuter une tâche qui met à jour une base de données toutes les 5 minutes. Voici un exemple de code qui utilise BackgroundService
pour réaliser cette tâche :
public class UpdateDatabaseService : BackgroundService
{
private readonly ILogger _logger;
private readonly IDatabaseContext _dbContext;
public UpdateDatabaseService(ILogger logger, IDatabaseContext dbContext)
{
_logger = logger;
_dbContext = dbContext;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
try
{
_logger.LogInformation("Mise à jour de la base de données...");
// Code pour mettre à jour la base de données
await _dbContext.SaveChangesAsync();
_logger.LogInformation("Base de données mise à jour avec succès.");
}
catch (Exception ex)
{
_logger.LogError(ex, "Erreur lors de la mise à jour de la base de données.");
}
await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken);
}
}
}
Dans cet exemple, la méthode ExecuteAsync
est exécutée en boucle jusqu'à ce que le token d'annulation soit demandé. À chaque itération, la méthode met à jour la base de données et attend 5 minutes avant de recommencer.
Configuration de BackgroundService
Pour utiliser BackgroundService
, vous devez l'enregistrer dans votre application ASP.NET Core. Voici un exemple de code dans le fichier Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
services.AddHostedService();
// Autres services
}
En ajoutant UpdateDatabaseService
à la collection de services, ASP.NET Core l'initialise et le lance en arrière-plan.
Conclusion
BackgroundService
est un outil puissant pour exécuter des tâches en arrière-plan dans ASP.NET Core. Il permet de séparer les tâches longues ou périodiques du thread principal, améliorant ainsi la réactivité et les performances de votre application. En utilisant cet exemple, vous pouvez facilement implémenter vos propres services d'arrière-plan et optimiser votre application ASP.NET Core. N'hésitez pas à explorer les options avancées de BackgroundService
pour des scénarios plus complexes.