Partager via


Hôte de service Windows

L’exemple WindowsService illustre un service Windows Communication Foundation (WCF) hébergé dans un service Windows géré. Les services Windows sont contrôlés à l’aide de l’applet Services dans le Panneau de configuration et peuvent être configurés pour démarrer automatiquement après un redémarrage du système. L’exemple se compose d’un programme client et d’un programme de service Windows. Le service est implémenté en tant que programme .exe et contient son propre code d’hébergement. Dans d’autres environnements d’hébergement, tels que les services WAS (Windows Process Activation Services) ou Internet Information Services (IIS), il n’est pas nécessaire d’écrire du code d’hébergement.

Remarque

La procédure de configuration et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.

Après avoir généré ce service, il doit être installé avec l’utilitaire Installutil.exe comme n’importe quel autre service Windows. Si vous allez apporter des modifications au service, vous devez d’abord le désinstaller avec installutil /u. Les fichiers Setup.bat et Cleanup.bat inclus dans cet exemple sont les commandes à installer et à démarrer le service Windows, et à arrêter et désinstaller le service Windows. Le service WCF ne peut répondre qu’aux clients si le service Windows est en cours d’exécution. Si vous arrêtez le service Windows à l’aide de l’applet Services du Panneau de configuration et exécutez le client, une EndpointNotFoundException exception se produit lorsqu’un client tente d’accéder au service. Si vous redémarrez le service Windows et réexécutez le client, la communication réussit.

Le code de service inclut une classe d’installation, une classe d’implémentation de service WCF qui implémente le contrat ICalculator et une classe de service Windows qui agit comme hôte d’exécution. La classe d’installation, qui hérite de Installer, permet au programme d’être installé en tant que service NT par l’outil Installutil.exe. La classe d’implémentation de service, WcfCalculatorService, est un service WCF qui implémente un contrat de service de base. Ce service WCF est hébergé à l’intérieur d’une classe de service Windows appelée WindowsCalculatorService. Pour se qualifier en tant que service Windows, la classe hérite de ServiceBase et implémente les méthodes OnStart(String[]) et OnStop(). Dans OnStart(String[]), un objet ServiceHost est créé pour le type WcfCalculatorService et ouvert. Dans OnStop(), le ServiceHost est fermé en appelant la méthode Close(TimeSpan) de l'objet ServiceHost. L'adresse de base du host est configurée à l'aide de l'élément <add>, qui est un enfant de <baseAddresses>, qui est un enfant de l'élément <host>, qui est un enfant de l'élément <service>.

Le point de terminaison défini utilise l’adresse de base et un <wsHttpBinding>. L’exemple suivant montre la configuration de l’adresse de base ainsi que le point de terminaison qui expose CalculatorService.

<services>
  <service name="Microsoft.ServiceModel.Samples.WcfCalculatorService"
           behaviorConfiguration="CalculatorServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
      </baseAddresses>
    </host>
    <!-- This endpoint is exposed at the base address provided by host: http://localhost:8000/ServiceModelSamples/service.  -->
    <endpoint address=""
              binding="wsHttpBinding"
              contract="Microsoft.ServiceModel.Samples.ICalculator" />
    ...
  </service>
</services>

Lorsque vous exécutez l’exemple, les requêtes et réponses d’opération s’affichent dans les fenêtres de console du service et de la console cliente. Appuyez sur Entrée dans chaque fenêtre de console pour arrêter le service et le client.

Pour configurer, générer et exécuter l’exemple

  1. Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer l’édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Building the Windows Communication Foundation Samples.

  3. Une fois la solution générée, exécutez Setup.bat à partir d’une invite de commandes Visual Studio avec élévation de privilèges pour installer le service Windows à l’aide de l’outil Installutil.exe. Le service doit apparaître dans Services.

  4. Pour exécuter l’exemple dans une configuration monoposte ou multiposte, suivez les instructions de Exécution des exemples Windows Communication Foundation.

Voir aussi