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 :
System.ServiceProcess.ServiceBase — Vous substituez les méthodes de la classe ServiceBase lorsque vous créez un service et créez le code qui déterminera le fonctionnement de votre service dans cette classe héritée.
System.ServiceProcess.ServiceProcessInstaller et System.ServiceProcess.ServiceInstaller —Vous utilisez ces classes pour installer et désinstaller votre service.
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 |
---|---|
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. |
|
Indiquer ce qui se passe lorsque votre service est suspendu. |
|
Indiquer ce qui se passe lorsque votre service est arrêté. |
|
Indiquer ce qui se passe lorsque votre service redémarre après une suspension. |
|
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. |
|
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. |
|
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