Introduction aux services Windows en C#
Les services Windows sont des outils puissants dans l'écosystème .NET, capables d'effectuer des tâches en arrière-plan sans intervention de l'utilisateur. La création d'un service Windows en C# peut sembler complexe, mais dans sa vidéo "Intro to Windows Services in C# - How to create, install, and use a service using Topshelf", Tim Corey la décompose étape par étape.
Dans cet article, nous allons parcourir cette vidéo, en abordant chaque sujet pour assurer la clarté et la continuité.
Introduction aux services Windows
Tim présente les services Windows comme des outils d'automatisation puissants et souvent négligés. Ces applications sont conçues pour fonctionner en arrière-plan et exécuter des tâches sans nécessiter d'interface utilisateur. Parmi les exemples courants, citons l'agent SQL Server ou les services Hyper-V.
Tim insiste sur l'importance de la pratique pour maîtriser le langage C#. Il recommande de télécharger le code source dont le lien figure dans la description de la vidéo pour un apprentissage pratique.
Création d'une application de démonstration de la console
À l'aide de Visual Studio, Tim crée un nouveau projet d'application console appelé SimpleHeartbeatService. Bien que vous puissiez utiliser un modèle de projet Windows Service, Tim préfère l'approche console pour des raisons de simplicité de débogage.
L'idée ici n'est pas de savoir quel code je mets ici, mais plutôt de savoir comment créer le service lui-même", note Tim.
Qu'est-ce qu'un service Windows?
Tim ouvre l'onglet Services dans Windows à l'aide de la recherche dans le menu Démarrer (il suffit de taper "services" et d'appuyer sur Entrée). Il explique que les services fonctionnant en arrière-plan exécutent des fonctions vitales du système d'exploitation, comme le bureau à distance ou le serveur MySQL.
L'objectif est de créer une nouvelle entrée dans cette liste à l'aide d'un code personnalisé.
Types de projets Visual Studio : Console App vs. Windows Service
Vous pourriez être tenté de sélectionner le projet Windows Service dans Visual Studio, mais Tim explique qu'il est plus difficile à déboguer. La traduction doit rester professionnelle et préserver l'exactitude technique tout en expliquant les caractéristiques et les avantages de ces outils de développement.
"Le projet de type service intégré rend le débogage plus difficile parce qu'il faut d'abord l'installer, puis attacher un débogueur."
Ajouter Topshelf via NuGet
Pour simplifier la mise en œuvre du service, Tim ajoute Topshelf, un framework open-source, via NuGet. Cette bibliothèque populaire (avec des millions de téléchargements) aide à créer des services Windows sans code standard.
Étapes :
-
Cliquez avec le bouton droit de la souris sur Références
-
Sélectionnez Gérer les paquets NuGet
- Rechercher et installer Topshelf
Écrire la logique du service
Tim crée une classe Heartbeat avec deux méthodes publiques : Start() et Stop(). Dans le constructeur, il configure un System.Timers.Timer pour qu'il s'exécute toutes les secondes.
L'événement Elapsed de cette minuterie ajoute l'heure actuelle à un fichier .txt dans le dossier C#. Cela imite une tâche d'arrière-plan qui s'exécute en continu.
"Ce minuteur écrira dans un fichier texte toutes les secondes, montrant que le service est vivant."
Cela permet de simuler le fonctionnement de processus longs dans des services réels, comme la numérisation de dossiers ou l'impression de documents.
Service de câblage avec Topshelf
À l'aide de HostFactory.Run, Tim intègre Topshelf dans l'application :
-
Définit la classe Heartbeat
-
Cartographie des méthodes Start() et Stop()
- Configure le service pour qu'il s'exécute en tant que LocalSystem, en accordant les autorisations nécessaires
Il définit également des métadonnées pour le service :
-
Nom du service : HeartbeatService
-
Nom d'affichage : Heartbeat Service
- Description : Utilisé à des fins de démonstration dans une vidéo YouTube
Exécution du service en tant qu'application console
Avant l'installation, Tim exécute l'application pour la tester. Le timer ajoute correctement des horodatages au fichier heartbeat.txt. En utilisant la fonction de surveillance de Notepad++, il montre les mises à jour en temps réel.
Installation et vérification du service
Tim copie le fichier .exe et les fichiers connexes du dossier bin\Debug vers un emplacement permanent (comme C:\demos\NHeartbeatService). À l'aide d'une invite de commande administrative, il exécute les commandes suivantes :
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start
Cette opération ajoute le service au gestionnaire de contrôle des services. En ouvrant à nouveau l'onglet Services et en cliquant sur Actualiser, le service est désormais visible et fonctionne.
"Il est très facile d'installer un service, et il est très facile de faire des choses avec un service"
Pour désinstaller :
SimpleHeartbeatService.exe uninstall
SimpleHeartbeatService.exe uninstall
Recap : Avantages et considérations
Tim rappelle que la création et l'installation d'un service à l'aide de Topshelf sont simples. Toutefois, il prévient que l'écriture infinie de fichiers peut entraîner des problèmes de stockage, ce qui est un bon rappel pour une bonne gestion des journaux.
Idées de service dans le monde réel
Tim partage des idées pratiques pour les services Windows :
-
Nettoyage de dossiers : Supprimer les anciens fichiers des téléchargements
-
Organisation d'images : Trier les photos dans des dossiers par date
-
Traitement CSV : Surveiller un dossier et importer automatiquement des fichiers CSV dans une base de données
- Automatisation des courriels : Surveiller un tableau du service d'assistance et envoyer des notifications
Ces exemples montrent comment utiliser les services pour automatiser les tâches d'arrière-plan et s'intégrer à des outils tels que SQL Server, OneDrive et les planificateurs de tâches.
Conclusion
Tim conclut en encourageant les développeurs à expérimenter. Faites attention à la mémoire, au stockage et à l'enregistrement des événements. Si vous avez besoin d'une mise à jour automatique, de paramètres de sécurité ou d'un déploiement plus robuste, une configuration supplémentaire sera nécessaire.
"Il y a beaucoup de puissance ici, et beaucoup de choses que vous pouvez faire."
Conclusion
Grâce à la démonstration pas à pas de Tim Corey dans sa vidéo, la création d'un service Windows en C# devient accessible et pratique. En tirant parti de Topshelf, une application console peut être convertie en un service Windows entièrement fonctionnel avec une configuration minimale. Qu'il s'agisse de gérer des fichiers journaux, de traiter des événements de base de données ou d'effectuer des automatisations, les services offrent un moyen puissant et évolutif de créer des applications .NET Framework ou .NET Core en arrière-plan et en temps réel.
Ce tutoriel vous permettra de comprendre, de créer et d'installer des services de manière efficace. N'oubliez pas de faire des tests approfondis et de toujours exécuter le programme d'installation ou l'invite de commande en tant qu'administrateur.


