Procédure pas à pas : création d'une application de service Windows dans le Concepteur de composants
Notes
Le modèle Service Windows et les fonctionnalités associées ne sont pas disponibles dans la version standard de Visual Studio.
Les procédures de cette rubrique décrivent le processus de création d'une application de service Windows simple qui écrit des messages dans un journal des événements. La création et l'utilisation du service comportent plusieurs étapes de base :
Créez un projet à l'aide du modèle d'application Service Windows. Ce modèle crée une classe qui hérite de ServiceBase et écrit la majeure partie du code de base du service, notamment le code servant à démarrer le service.
Écrivez le code des procédures OnStart et OnStop, puis substituez toutes les autres méthodes que vous souhaitez redéfinir.
Ajoutez les programmes d'installation nécessaires à votre application de service. Par défaut, une classe contenant deux programmes d'installation ou plus est ajoutée à votre application lorsque vous cliquez sur le lien Ajouter le programme d'installation : l'un d'entre eux sert à installer le processus, tandis que le ou les autres programmes servent à installer chacun des services associés que comprend votre projet.
Générez votre projet.
Créez un projet d'installation pour installer votre service puis installez-le.
Accédez au Gestionnaire de contrôle des services Windows 2000 et démarrez votre service.
Pour commencer, créez votre projet et définissez les valeurs nécessaires au fonctionnement correct du service.
Notes
Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.
Création d'un service
Pour créer et configurer votre service
Dans le menu Fichier, cliquez sur Nouveau projet.
La boîte de dialogue Nouveau projet s'affiche.
Sélectionnez le projet Service Windows dans la liste des modèles de projet Visual Basic ou Visual C#, puis nommez-le MyNewService. Cliquez sur OK.
Notes
Le modèle de projet ajoute automatiquement une classe Component appelée Service1 qui hérite de System.ServiceProcess.ServiceBase.
Cliquez sur le concepteur pour sélectionner Service1. Ensuite, dans la fenêtre Propriétés, affectez aux propriétés ServiceName et (Name) de Service1 la valeur MyNewService.
Ajout de fonctionnalités au service
Dans la section suivante, vous ajoutez un journal des événements personnalisé au service Windows. Les journaux des événements ne sont en aucune façon associés aux services Windows. Dans ce cas-ci, le composant EventLog est utilisé comme un exemple du type de composants que vous pouvez ajouter à un service Windows.
Pour ajouter une fonctionnalité de journal des événements personnalisé à votre service
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Service1.vb ou Service1.cs, puis sélectionnez Concepteur de vues.
À partir de l'onglet Composants de la boîte à outils, faites glisser un composant EventLog jusqu'au concepteur.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Service1.vb ou Service1.cs, puis sélectionnez Afficher le code.
Ajoutez ou modifiez le constructeur pour définir un journal des événements personnalisé.
' To access the constructor in Visual Basic, select New from the ' method name drop-down list. Public Sub New() MyBase.New() InitializeComponent() If Not System.Diagnostics.EventLog.SourceExists("MySource") Then System.Diagnostics.EventLog.CreateEventSource("MySource", "MyNewLog") End If EventLog1.Source = "MySource" EventLog1.Log = "MyNewLog" End Sub
public MyNewService() { InitializeComponent(); if (!System.Diagnostics.EventLog.SourceExists("MySource")) { System.Diagnostics.EventLog.CreateEventSource( "MySource","MyNewLog"); } eventLog1.Source = "MySource"; eventLog1.Log = "MyNewLog"; }
Pour définir les actions à effectuer lors du démarrage du service
Dans l'éditeur de code, recherchez la méthode OnStart qui a été automatiquement substituée lorsque vous avez créé le projet, puis écrivez le code requis pour définir les actions à exécuter au moment où le service démarre :
' To access the OnStart in Visual Basic, select OnStart from the ' method name drop-down list. Protected Overrides Sub OnStart(ByVal args() As String) EventLog1.WriteEntry("In OnStart") End Sub
protected override void OnStart(string[] args) { eventLog1.WriteEntry("In OnStart"); }
Notes
Une application de service est conçue pour avoir une durée d'exécution longue. C'est la raison pour laquelle elle sert généralement à interroger ou à surveiller un des composants du système. La surveillance est configurée dans la méthode OnStart. Toutefois, la méthode OnStart n'effectue pas elle-même la surveillance. La méthode OnStart doit retourner au système d'exploitation dès que le service est en cours d'exécution. Elle ne doit pas s'exécuter indéfiniment en boucle ni se bloquer. Pour définir un mécanisme d'interrogation simple, vous pouvez utiliser le composant System.Timers.Timer. La méthode OnStart vous permet de définir des paramètres sur le composant, puis d'attribuer à la propriété Enabled la valeur true. La minuterie déclenche alors périodiquement des événements dans votre code, lesquels indiquent au service qu'il peut effectuer son analyse.
Pour définir les actions à effectuer lors de l'arrêt du service
Dans l'éditeur de code, sélectionnez la procédure OnStop de la liste déroulante Nom de la méthode, qui a été substituée automatiquement lorsque vous avez créé le projet. Écrivez un code pour déterminer ce qui se produit lorsque le service est arrêté :
Protected Overrides Sub OnStop() EventLog1.WriteEntry("In OnStop.") End Sub
protected override void OnStop() { eventLog1.WriteEntry("In onStop."); }
Vous pouvez également substituer les méthodes OnPause, OnContinue et OnShutdown afin de définir d'autres types de traitement pour votre composant.
Pour définir d'autres actions du service
Pour la méthode que vous souhaitez gérer, substituez la méthode appropriée et définissez les actions à exécuter.
Le code suivant illustre une substitution de la méthode OnContinue :
Protected Overrides Sub OnContinue() EventLog1.WriteEntry("In OnContinue.") End Sub
protected override void OnContinue() { eventLog1.WriteEntry("In OnContinue."); }
Certaines actions personnalisées doivent être exécutées lors de l'installation d'un service Windows. À cette fin, il est possible de recourir à la classe Installer. Visual Studio peut créer ces programmes d'installation spécialement pour un service Windows et les ajouter à votre projet.
Pour créer les programmes d'installation de votre service
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Service1.vb ou Service1.cs, puis sélectionnez Concepteur de vues.
Cliquez sur l'arrière-plan du concepteur pour sélectionner le service lui-même plutôt que son contenu.
Avec le concepteur dans le focus, cliquez avec le bouton droit, puis cliquez sur Ajouter le programme d'installation.
Par défaut, une classe Component comprenant deux programmes d'installation est ajoutée à votre projet. Le composant est appelé ProjectInstaller et contient le programme d'installation de votre service ainsi que le programme d'installation du processus associé au service.
En mode Design pour ProjectInstaller, cliquez sur ServiceInstaller1 ou sur serviceInstaller1.
Dans la fenêtre Propriétés, assurez-vous que la propriété ServiceName a la valeur MyNewService.
Dans le concepteur, cliquez sur ServiceProcessInstaller1 (pour un projet Visual Basic) ou serviceProcessInstaller1 (pour un projet Visual C#). Affectez à la propriété Account la valeur LocalSystem. Le service sera ainsi installé et exécuté sous un compte de services local.
Note de sécurité Le compte LocalSystem dispose d'autorisations générales, y compris la possibilité d'écrire dans le journal des événements. Utilisez ce compte avec précaution car il peut augmenter le risque d'attaques par des logiciels malveillants. Pour les autres tâches, utilisez le compte LocalService, qui se comporte comme un utilisateur non privilégié de l'ordinateur local et présente des informations d'identification anonymes à tout serveur distant.
Pour générer votre projet de service
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis cliquez sur Propriétés. Le Concepteur de propriétés du projet s'affiche.
Dans la liste Objet de démarrage de la page Application, cliquez sur MyNewService.
Appuyez sur CTRL+MAJ+B pour générer le projet.
À présent que le projet est généré, il peut être déployé. Un projet d'installation installera les fichiers projet compilés et exécutera les programmes d'installation requis pour exécuter le service Windows. Pour créer un projet d'installation complet, vous devrez ajouter la sortie de projet, MyNewService.exe, au projet d'installation puis une action personnalisée afin d'installer MyNewService.exe. Pour plus d'informations sur les projets d'installation, consultez Projets d'installation et de déploiement. Pour plus d'informations sur les actions personnalisées, consultez Procédure pas à pas : création d'une action personnalisée.
Pour créer un projet d'installation de votre service
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur votre solution, pointez sur Ajouter, puis cliquez sur Nouveau projet.
Sous Modèles installés, développez Autres types de projets puis développez Configuration et déploiement.
Sélectionnez Programme d'installation de Visual Studio.
Dans le volet Modèles, sélectionnez Projet d'installation. Appelez le projet MyServiceSetup. Cliquez sur OK.
Un projet d'installation est ajouté à la solution.
Ensuite, ajoutez la sortie du projet de service Windows, MyNewService.exe, à la configuration.
Pour ajouter MyNewService.exe au projet d'installation
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur MyServiceSetup, pointez sur Ajouter, puis cliquez sur Sortie du projet.
La boîte de dialogue Ajouter le groupe de sorties du projet apparaît.
MyNewService est sélectionné dans la zone Projet.
Dans la liste, sélectionnez Sortie principale, puis cliquez sur OK.
Un élément de projet pour la sortie principale de MyNewService est ajouté au projet d'installation.
Ajoutez à présent une action personnalisée afin d'installer le fichier MyNewService.exe.
Pour ajouter une action personnalisée au projet d'installation
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur votre projet d'installation, pointez sur Affichage, puis cliquez sur Actions personnalisées.
L'éditeur Actions personnalisées s'affiche.
Dans l'éditeur des actions personnalisées, cliquez avec le bouton droit sur le nœud Actions personnalisées et cliquez sur Ajouter une action personnalisée.
La boîte de dialogue Sélectionner un élément dans le projet s'affiche.
Double-cliquez sur Dossier d'application dans la liste pour l'ouvrir, sélectionnez Sortie principale de MyNewService (Actif), puis cliquez sur OK.
La sortie principale est ajoutée aux quatre nœuds des actions personnalisées, Installer, Valider, Restaurer et Désinstaller.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet MyServiceSetup, puis cliquez sur Générer.
Pour installer le service Windows
Pour installer MyNewService.exe, dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet d'installation, puis choisissez Installer.
Suivez les étapes de l'Assistant Installation. Générez et enregistrez votre solution.
Pour démarrer et arrêter le service
Pour ouvrir le Gestionnaire de contrôle des services dans Windows 7, Windows Vista et Windows Server, cliquez avec le bouton droit sur Ordinateur dans le menu Démarrer, puis cliquez sur Gérer. Dans la console Gestion de l'ordinateur, développez le nœud Services et applications dans le volet gauche. Cliquez sur Services.
MyNewService devrait maintenant apparaître dans la liste affichée dans la section Services de la fenêtre.
Sélectionnez votre service dans la liste, cliquez dessus avec le bouton droit, puis cliquez sur Démarrer.
Cliquez avec le bouton droit sur le service, puis cliquez sur Arrêter.
Pour vérifier la sortie du journal des événements de votre service
Ouvrez l'Explorateur de serveurs et accédez au nœud Journaux des événements.
Notes
Le modèle Service Windows et les fonctionnalités associées ne sont pas disponibles dans la version standard de Visual Studio.
Recherchez la liste associée à MyNewLog et développez-la. Vous devriez voir des entrées relatives aux actions exécutées par votre service.
Pour désinstaller votre service
- Dans le menu Démarrer, ouvrez le Panneau de configuration, puis cliquez sur Ajout/suppression de programmes. Recherchez votre service et cliquez sur Désinstaller.
Étapes suivantes
Vous pouvez également opter pour l'utilisation d'un composant ServiceController qui vous permet d'envoyer des commandes au service que vous avez installé.
Vous pouvez utiliser un programme d'installation pour créer un journal des événements lors de l'installation de l'application plutôt que lors de son exécution. En outre, le journal des événements sera supprimé par le programme d'installation lors de la désinstallation de l'application.
Voir aussi
Tâches
Comment : ajouter des programmes d'installation à votre application de service
Comment : installer et désinstaller des services
Comment : déboguer les applications de service Windows
Référence
Comment : accéder à l'Explorateur de serveurs/bases de données et l'initialiser
Concepts
Introduction aux applications de service Windows