.net 6 Windows Service

5 min read Jun 03, 2024
.net 6 Windows Service

Créer un service Windows avec .NET 6

Introduction

Les services Windows sont des applications qui s'exécutent en arrière-plan sur un serveur Windows et qui effectuent des tâches sans intervention de l'utilisateur. Ils sont souvent utilisés pour des tâches telles que la surveillance des systèmes, la gestion des données, ou l'exécution de processus automatisés.

Dans le passé, la création de services Windows avec .NET nécessitait l'utilisation de la classe System.ServiceProcess.ServiceBase. Avec .NET 6, Microsoft a introduit une nouvelle approche plus simple et plus moderne pour créer des services Windows en utilisant les interfaces IHostedService et IBackgroundService. Cette nouvelle approche offre une meilleure modularité et une plus grande flexibilité.

Création d'un service Windows avec .NET 6

Voici les étapes pour créer un service Windows simple avec .NET 6:

  1. Créer un nouveau projet .NET 6 Console App: Ouvrez Visual Studio et créez un nouveau projet de type "Console App (.NET 6)".
  2. Ajouter les packages nécessaires: Vous devrez ajouter les packages suivants à votre projet:
    • Microsoft.Extensions.Hosting: Ce package fournit les outils nécessaires pour créer un hôte d'application.
    • Microsoft.Extensions.Logging: Ce package fournit les outils nécessaires pour enregistrer les événements du service.
  3. Créer une classe de service: Créez une nouvelle classe et implémentez l'interface IHostedService. Cette classe sera responsable de l'exécution des tâches de votre service.
  4. Définir la méthode StartAsync: Cette méthode sera appelée lorsque le service est démarré. Vous pouvez y ajouter le code qui initialise votre service et lance les tâches que vous souhaitez exécuter.
  5. Définir la méthode StopAsync: Cette méthode sera appelée lorsque le service est arrêté. Vous pouvez y ajouter le code qui nettoie les ressources utilisées par votre service.
  6. Configurer l'hôte de l'application: Dans la méthode Main de votre application, configurez l'hôte de l'application en utilisant la classe Host.CreateDefaultBuilder. Ajoutez votre classe de service à la liste des services en utilisant la méthode AddHostedService.
  7. Construire et déployer le service: Utilisez la commande dotnet publish pour construire et déployer votre service.
  8. Installer le service: Utilisez la commande sc create pour installer votre service Windows.

Exemple de code

Voici un exemple de code pour un service Windows qui affiche un message de bienvenue toutes les 5 secondes:

using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace WindowsServiceExample
{
    public class WelcomeService : IHostedService
    {
        private readonly ILogger _logger;

        public WelcomeService(ILogger logger)
        {
            _logger = logger;
        }

        public Task StartAsync(CancellationToken cancellationToken)
        {
            _logger.LogInformation("Service démarré");

            // Exécuter la tâche en boucle
            Task.Run(async () =>
            {
                while (!cancellationToken.IsCancellationRequested)
                {
                    _logger.LogInformation("Bienvenue !");
                    await Task.Delay(5000);
                }
            });

            return Task.CompletedTask;
        }

        public Task StopAsync(CancellationToken cancellationToken)
        {
            _logger.LogInformation("Service arrêté");

            return Task.CompletedTask;
        }
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService();
                })
                .Build()
                .Run();
        }
    }
}

Conclusion

L'utilisation de l'interface IHostedService pour créer des services Windows avec .NET 6 est une approche moderne, efficace et facile à utiliser. Elle offre une meilleure modularité et une plus grande flexibilité par rapport aux méthodes traditionnelles.

N'hésitez pas à explorer les fonctionnalités de IHostedService et des autres interfaces de service pour créer des services Windows robustes et efficaces.