Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Cet article ne s’applique pas aux services hébergés dans .NET. Pour obtenir le contenu le plus récent sur les services Windows utilisant Microsoft.Extensions.Hosting.BackgroundService et le modèle de service Worker, consultez :
Les services Microsoft Windows, anciennement appelés services NT, vous permettent de créer des applications exécutables longues qui s’exécutent dans leurs propres sessions Windows. Ces services peuvent être démarrés automatiquement lorsque l’ordinateur démarre, peuvent être suspendus et redémarrés, et n’affichent aucune interface utilisateur. Ces fonctionnalités rendent les services idéaux pour une utilisation sur un serveur ou chaque fois que vous avez besoin de fonctionnalités longues qui n’interfèrent pas avec les autres utilisateurs qui travaillent sur le même ordinateur. Vous pouvez également exécuter des services dans le contexte de sécurité d’un compte d’utilisateur spécifique différent de l’utilisateur connecté ou du compte d’ordinateur par défaut. Pour plus d’informations sur les services et les sessions Windows, consultez la documentation du Kit de développement logiciel (SDK) Windows.
Vous pouvez facilement créer des services en créant une application installée en tant que service. Par exemple, supposons que vous souhaitez surveiller les données du compteur de performances et réagir aux valeurs de seuil. Vous pouvez écrire une application de service Windows qui écoute les données du compteur de performances, déploie l’application et commence à collecter et analyser des données.
Vous créez votre service en tant que projet Microsoft Visual Studio, en définissant du code dans celui-ci qui contrôle les commandes pouvant être envoyées au service et quelles actions doivent être effectuées lorsque ces commandes sont reçues. Les commandes qui peuvent être envoyées à un service incluent le démarrage, la suspension, la reprise et l’arrêt du service ; vous pouvez également exécuter des commandes personnalisées.
Après avoir créé et généré l’application, vous pouvez l’installer en exécutant l’utilitaire de ligne de commande InstallUtil.exe et en passant le chemin d’accès au fichier exécutable du service. Vous pouvez ensuite utiliser le Gestionnaire de contrôle des services pour démarrer, arrêter, suspendre, reprendre et configurer votre service. Vous pouvez également effectuer de nombreuses de ces mêmes tâches dans le nœud Services dans l’Explorateur de serveurs ou à l’aide de la ServiceController classe.
Applications de service et autres applications Visual Studio
Les applications de service fonctionnent différemment de nombreux autres types de projet de plusieurs façons :
Le fichier exécutable compilé créé par un projet d’application de service doit être installé sur le serveur avant que le projet puisse fonctionner de manière significative. Vous ne pouvez pas déboguer ni lancer une application de service en appuyant sur F5 ou F11 ; vous ne pouvez pas non plus exécuter immédiatement un service ni entrer dans son code. Au lieu de cela, vous devez installer et démarrer votre service, puis connecter un débogueur au processus du service. Pour plus d’informations, consultez Guide pratique pour déboguer des applications de service Windows.
Contrairement à certains types de projets, vous devez créer des composants d’installation pour les applications de service. Les composants d’installation installent et inscrivent le service sur le serveur et créent une entrée pour votre service auprès du Gestionnaire de contrôle des services Windows. Pour plus d’informations, consultez Guide pratique pour ajouter des programmes d’installation à votre application de service.
La
Main
méthode de votre application de service doit émettre la commande Run pour les services que votre projet contient. LaRun
méthode charge les services dans le Gestionnaire de contrôle des services sur le serveur approprié. Si vous utilisez le modèle de projet Services Windows , cette méthode est écrite automatiquement pour vous. Notez que le chargement d’un service n’est pas la même chose que le démarrage du service. Pour plus d’informations, consultez « Durée de vie du service » ci-dessous.Les applications de service Windows s’exécutent dans une station de fenêtre différente de la station interactive de l’utilisateur connecté. Une station de fenêtre est un objet sécurisé qui contient un Presse-papiers, un ensemble d’atomes globaux et un groupe d’objets de bureau. Étant donné que la station du service Windows n’est pas une station interactive, les boîtes de dialogue déclenchées à partir d’une application de service Windows ne sont pas visibles et peuvent entraîner l’arrêt de la réponse de votre programme. De même, les messages d’erreur doivent être consignés dans le journal des événements Windows plutôt que déclenchés dans l’interface utilisateur.
Les classes de service Windows prises en charge par le .NET Framework ne prennent pas en charge l’interaction avec les stations interactives, c’est-à-dire l’utilisateur connecté. Le .NET Framework n’inclut pas non plus de classes qui représentent des stations et des bureaux. Si votre service Windows doit interagir avec d’autres stations, vous devez accéder à l’API Windows non managée. Pour plus d’informations, consultez la documentation du Kit de développement logiciel (SDK) Windows.
L’interaction du service Windows avec l’utilisateur ou d’autres stations doit être soigneusement conçue pour inclure des scénarios tels qu’il n’y a pas d’utilisateur connecté, ou l’utilisateur ayant un ensemble inattendu d’objets de bureau. Dans certains cas, il peut être plus approprié d’écrire une application Windows qui s’exécute sous le contrôle de l’utilisateur.
Les applications de service Windows s’exécutent dans leur propre contexte de sécurité et sont démarrées avant que l’utilisateur ne se connecte à l’ordinateur Windows sur lequel il est installé. Vous devez planifier soigneusement le compte d’utilisateur dans lequel exécuter le service ; un service exécuté sous le compte système dispose de plus d’autorisations et de privilèges qu’un compte d’utilisateur.
Durée de vie du service
Un service passe par plusieurs états internes dans sa durée de vie. Tout d’abord, le service est installé sur le système sur lequel il s’exécutera. Ce processus exécute les programmes d’installation du projet de service et charge le service dans le Gestionnaire de contrôle des services pour cet ordinateur. Le Gestionnaire de contrôle des services est l’utilitaire central fourni par Windows pour administrer les services.
Une fois le service chargé, il doit être démarré. Le démarrage du service lui permet de commencer à fonctionner. Vous pouvez démarrer un service à partir du Gestionnaire de contrôle des services, de l’Explorateur de serveurs ou du code en appelant la Start méthode. La méthode Start transmet le traitement à la méthode OnStart de l'application et traite tout code que vous y avez défini.
Un service en cours d’exécution peut exister indéfiniment jusqu’à ce qu’il soit arrêté ou suspendu ou jusqu’à ce que l’ordinateur s’arrête. Un service peut exister dans l’un des trois états de base : Running, Pausedou Stopped. Le service peut également signaler l’état d’une commande en attente : ContinuePending, , PausePendingou StartPendingStopPending. Ces états indiquent qu’une commande a été émise, telle qu’une commande pour suspendre un service en cours d’exécution, mais n’a pas encore été effectuée. Vous pouvez interroger le Status pour déterminer l'état d'un service, ou utiliser le WaitForStatus pour effectuer une action lorsqu'un de ces états se produit.
Vous pouvez suspendre, arrêter ou reprendre un service à partir du Gestionnaire de contrôle des services, de l’Explorateur de serveurs ou en appelant des méthodes dans le code. Chacune de ces actions peut appeler une procédure associée dans le service (OnStopou OnPauseOnContinue), dans laquelle vous pouvez définir un traitement supplémentaire à effectuer lorsque le service change d’état.
Types de services
Il existe deux types de services que vous pouvez créer dans Visual Studio à l’aide du .NET Framework. Les services qui sont le seul service d’un processus sont affectés au type Win32OwnProcess. Les services qui partagent un processus avec un autre service sont affectés au type Win32ShareProcess. Vous pouvez récupérer le type de service en interrogeant la ServiceType propriété.
Vous pouvez parfois voir d’autres types de services si vous interrogez des services existants qui n’ont pas été créés dans Visual Studio. Pour plus d’informations sur ceux-ci, consultez ServiceType.
Services et composant ServiceController
Le ServiceController composant est utilisé pour se connecter à un service installé et manipuler son état ; à l’aide d’un ServiceController composant, vous pouvez démarrer et arrêter un service, suspendre et continuer son fonctionnement et envoyer des commandes personnalisées à un service. Toutefois, vous n’avez pas besoin d’utiliser un ServiceController composant lorsque vous créez une application de service. En fait, dans la plupart des cas, votre ServiceController composant doit exister dans une application distincte de l’application de service Windows qui définit votre service.
Pour plus d’informations, consultez ServiceController.
Spécifications
Les services doivent être créés dans un projet d’application de service Windows ou dans un autre projet .NET Framework qui crée un fichier .exe lors de la génération et hérite de la ServiceBase classe.
Les projets contenant des services Windows doivent avoir des composants d’installation pour le projet et ses services. Cette opération peut être facilement effectuée à partir de la fenêtre Propriétés . Pour plus d’informations, consultez Guide pratique pour ajouter des programmes d’installation à votre application de service.
Voir aussi
- Windows Service Applications
- Architecture de programmation des applications de service
- Guide pratique pour créer des services Windows
- Guide pratique pour installer et désinstaller des services
- Guide pratique pour démarrer les services
- Guide pratique pour déboguer des applications de service Windows
- Procédure pas à pas : création d’une application de service Windows dans le Concepteur de composants
- Guide pratique pour ajouter des programmes d’installation à votre application de service