Partager via


Architecture de programmation des applications de service

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 applications de service Windows sont basées sur une classe qui hérite de la System.ServiceProcess.ServiceBase classe. Vous remplacez les méthodes de cette classe et définissez les fonctionnalités pour eux afin de déterminer le comportement de votre service.

Les classes principales impliquées dans la création de service sont les suivantes :

En outre, une classe nommée ServiceController peut être utilisée pour manipuler le service lui-même. Cette classe n’est pas impliquée dans la création d’un service, mais peut être utilisée pour démarrer et arrêter le service, lui transmettre des commandes et retourner une série d’énumérations.

Définition du comportement de votre service

Dans votre classe de service, vous remplacez les fonctions de classe de base qui déterminent ce qui se passe quand l’état de votre service est modifié dans le Gestionnaire de contrôle des services. La ServiceBase classe expose les méthodes suivantes, que vous pouvez remplacer pour ajouter un comportement personnalisé.

Méthode Substituer pour
OnStart Indiquez quelles actions doivent être effectuées lorsque votre service commence à s’exécuter. Vous devez écrire du code dans cette procédure pour que votre service effectue un travail utile.
OnPause Indiquez ce qui doit se produire lorsque votre service est suspendu.
OnStop Indiquez ce qui doit se produire lorsque votre service cesse d’être en cours d’exécution.
OnContinue Indiquez ce qui doit se produire lorsque votre service reprend le fonctionnement normal après avoir été suspendu.
OnShutdown Indiquez ce qui doit se produire juste avant l’arrêt de votre système, si votre service s’exécute à ce moment-là.
OnCustomCommand Indiquez ce qui doit se produire lorsque votre service reçoit une commande personnalisée. Pour plus d’informations sur les commandes personnalisées, consultez MSDN online.
OnPowerEvent Indiquez comment le service doit répondre lorsqu’un événement de gestion de l’alimentation est reçu, tel qu’une batterie faible ou une opération suspendue.

Remarque

Ces méthodes représentent les états que le service passe à travers sa durée de vie ; le service passe d’un état à l’autre. Par exemple, vous n’obtiendrez jamais que le service réponde à une OnContinue commande avant que OnStart ait été appelé.

Il existe plusieurs autres propriétés et méthodes intéressantes. Voici quelques-uns des éléments suivants :

  • Méthode Run sur la ServiceBase classe. Il s’agit du point d’entrée principal du service. Lorsque vous créez un service à l’aide du modèle de service Windows, le code est inséré dans la méthode de Main votre application pour exécuter le service. Ce code ressemble à ceci :

    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[]
        { new Service1() };
    Run(ServicesToRun);
    
    Dim ServicesToRun() As System.ServiceProcess.ServiceBase
    ServicesToRun =
        New System.ServiceProcess.ServiceBase() {New Service1()}
    System.ServiceProcess.ServiceBase.Run(ServicesToRun)
    

    Remarque

    Ces exemples utilisent un tableau de type ServiceBase, dans lequel chaque service que votre application contient peut être ajouté, puis tous les services peuvent être exécutés ensemble. Si vous créez un seul service, toutefois, vous pouvez choisir de ne pas utiliser le tableau et simplement déclarer un nouvel objet héritant de ServiceBase, puis l'exécuter. Pour obtenir un exemple, consultez Guide pratique pour écrire des services par programmation.

  • Série de propriétés sur la ServiceBase classe. Celles-ci déterminent les méthodes qui peuvent être appelées sur votre service. Par exemple, lorsque la propriété CanStop est définie sur true, la méthode OnStop sur votre service peut être appelée. Lorsque la propriété CanPauseAndContinue est définie sur true, les méthodes OnPause et OnContinue peuvent être appelées. Si vous définissez l’une de ces propriétés avec la valeur true, vous devez ensuite remplacer et définir le traitement des méthodes associées.

    Remarque

    Votre service doit au moins remplacer OnStart et OnStop pour être utile.

Vous pouvez également utiliser un composant appelé ServiceController pour communiquer avec et contrôler le comportement d’un service existant.

Voir aussi