.net Core 6 Windows Service Example

6 min read Jun 03, 2024
.net Core 6 Windows Service Example

Créer un service Windows avec .NET 6

Introduction

Un service Windows est une application qui s'exécute en arrière-plan sur un système d'exploitation Windows sans interface utilisateur. Il est idéal pour exécuter des tâches automatiques, des processus continus ou des applications qui ne nécessitent pas d'interaction utilisateur. Avec .NET 6, il est simple de créer des services Windows robustes et efficaces.

Créer un projet de service Windows avec .NET 6

  1. Installer le SDK .NET 6: Si vous ne l'avez pas déjà fait, téléchargez et installez le SDK .NET 6 depuis le site Web officiel de Microsoft.

  2. Créer un nouveau projet de console: Ouvrez une invite de commande ou PowerShell et utilisez la commande suivante pour créer un nouveau projet de console :

dotnet new console -n MyWindowsService
  1. Installer le package NuGet Microsoft.Extensions.Hosting.WindowsServices: Ce package permet d'intégrer le modèle de service Windows avec l'infrastructure d'hébergement de .NET 6. Exécutez la commande suivante dans le répertoire du projet :
dotnet add package Microsoft.Extensions.Hosting.WindowsServices
  1. Modifier le fichier Program.cs: Remplacez le code par le code suivant :
using Microsoft.Extensions.Hosting;
using System.ServiceProcess;

namespace MyWindowsService
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Vérifiez si l'application s'exécute dans le contexte du gestionnaire de contrôle de service (SCM)
            if (Environment.UserInteractive)
            {
                // Démarrer l'application comme une application console standard
                CreateHostBuilder(args).Build().Run();
            }
            else
            {
                // Démarrer l'application comme un service Windows
                ServiceBase.Run(new ServiceBase[] { new MyWindowsService() });
            }
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    // Enregistrez les services à utiliser par votre service Windows
                    services.AddHostedService();
                });
    }

    // Classe qui implémente le service Windows
    public class MyWindowsService : BackgroundService
    {
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                // Exécutez le code de votre service ici
                // Par exemple, écrire dans un fichier journal, communiquer avec une base de données ou appeler une API
                Console.WriteLine($"Service en cours d'exécution : {DateTime.Now}");
                await Task.Delay(1000, stoppingToken);
            }
        }
    }
}
  1. Créer un fichier MyWindowsService.cs: Ce fichier contiendra la classe qui définit le service Windows.
using System.ServiceProcess;
using Microsoft.Extensions.Hosting;

namespace MyWindowsService
{
    public class MyWindowsService : BackgroundService
    {
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                // Exécutez le code de votre service ici
                // Par exemple, écrire dans un fichier journal, communiquer avec une base de données ou appeler une API
                Console.WriteLine($"Service en cours d'exécution : {DateTime.Now}");
                await Task.Delay(1000, stoppingToken);
            }
        }
    }
}
  1. Installer le service Windows: Utilisez la commande suivante dans l'invite de commande ou PowerShell pour installer le service Windows :
dotnet publish -c Release -r win-x64
  1. Ouvrir l'outil "Services" de Windows: Ouvrez l'outil "Services" en tapant "services.msc" dans la barre de recherche Windows. Vous devriez trouver votre service Windows dans la liste.

  2. Démarrer le service: Cliquez avec le bouton droit sur votre service Windows et sélectionnez "Démarrer".

Exemple d'utilisation : Enregistrer un message dans un fichier

Dans l'exemple ci-dessus, la méthode ExecuteAsync écrit un message dans la console toutes les secondes. Vous pouvez facilement adapter ce code pour effectuer d'autres tâches, comme enregistrer des messages dans un fichier journal, communiquer avec une base de données ou appeler une API.

Conclusion

Créer un service Windows avec .NET 6 est un processus simple et efficace. Avec le modèle d'hébergement de .NET 6 et le package Microsoft.Extensions.Hosting.WindowsServices, vous pouvez créer des services Windows robustes et facilement intégrables à vos applications .NET. N'hésitez pas à adapter cet exemple à vos besoins et à explorer les nombreuses fonctionnalités offertes par .NET 6 pour le développement de services Windows.

Featured Posts