Partager via


Architecture de programmation d'une application de service

Mise à jour : novembre 2007

Les applications de service Windows reposent sur une classe qui hérite de la classe System.ServiceProcess.ServiceBase. Vous substituez les méthodes de cette classe et définissez pour elles des fonctionnalités pour déterminer le comportement de votre service.

Les principales classes intervenant dans la création des services sont les suivantes :

En outre, il est possible d'utiliser une classe appelée ServiceController pour manipuler le service. Cette classe n'intervient pas dans la création d'un service, mais elle peut être utilisée pour le démarrer et l'arrêter, lui passer des commandes et retourner une série d'énumérations.

Définition du comportement de votre service

Dans la classe de votre service, vous substituez les fonctions de classe de base déterminant ce qui se produit quand l'état de votre service est modifié dans le Gestionnaire de contrôle des services. La classe ServiceBase expose les méthodes suivantes que vous pouvez substituer pour ajouter un comportement personnalisé.

Méthode

À substituer pour

OnStart

Indiquer quelles actions doivent être accomplies au démarrage de votre service. Vous devez écrire du code dans cette procédure pour que votre service accomplisse un travail utile.

OnPause

Indiquer ce qui se passe lorsque votre service est suspendu.

OnStop

Indiquer ce qui se passe lorsque votre service est arrêté.

OnContinue

Indiquer ce qui se passe lorsque votre service redémarre après une suspension.

OnShutdown

Indiquer ce qui doit se passer juste avant l'arrêt de votre service si celui-ci est à ce moment-là en cours d'exécution.

OnCustomCommand

Indiquer ce qui se passe lorsque votre service reçoit une commande personnalisée. Pour plus d'informations sur les commandes personnalisées, consultez MSDN Online.

OnPowerEvent

Indiquer comment le service doit répondre lorsqu'il reçoit un événement de gestion de l'alimentation (batterie faible ou opération suspendue, par exemple)

Remarque :

Ces méthodes représentent les états par lesquels passe votre service durant sa vie ; le service passe successivement par ces différents états. Par exemple, un service ne doit jamais répondre à une commande OnContinue avant que la méthode OnStart ne soit appelée.

D'autres propriétés et méthodes présentent un intérêt. Ces éléments sont les suivants :

  • Appelez la méthode Run sur la classe ServiceBase. Il s'agit du point d'entrée principal du service. Lorsque vous créez un service en vous servant du modèle de service Windows, du code est inséré dans la méthode Main de votre application pour exécuter le service. Le code présente l'aspect suivant :

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

    Ces deux exemples font appel à un tableau de type ServiceBase, auquel chaque service que contient votre application peut être ajouté, après quoi tous les services peuvent s'exécuter ensemble. Toutefois, si vous ne créez qu'un seul service, vous pouvez choisir de ne pas utiliser le tableau et de simplement déclarer un nouvel objet héritant de la classe ServiceBase, puis de l'exécuter. Pour un exemple, consultez Comment : écrire les services par programme.

  • Une série de propriétés de la classe ServiceBase. Elles déterminent quelles méthodes peuvent être appelées pour votre service. Par exemple, lorsque la propriété CanStop a la valeur true, la méthode OnStop de votre service peut être appelée. Par exemple, lorsque la propriété CanPauseAndContinue a la valeur true, les méthodes OnPause et OnContinue peuvent être appelées. Lorsque vous attribuez la valeur true à l'une ou l'autre de ces propriétés, vous devez ensuite substituer puis définir le traitement des méthodes associées.

    Remarque :

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

Vous pouvez également utiliser un composant appelé ServiceController pour communiquer avec un service existant et contrôler son comportement. Pour plus d'informations sur ServiceController, consultez Surveillance des services Windows.

Voir aussi

Tâches

Comment : créer des services Windows

Concepts

Introduction aux applications de service Windows

Autres ressources

Surveillance des services Windows