Partager via


Windows Service Host

L’exemple WindowsService illustre un service WCF (Windows Communication Foundation) hébergé dans un service Windows managé. Les services Windows sont contrôlés à l’aide de l’applet Services du Panneau de configuration, et peuvent être configurés de façon à 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 WAS (Windows Process Activation Services) ou IIS (Internet Information Services), vous n'avez pas besoin d'écrire le code d'hébergement.

Notes

La procédure d'installation ainsi que les instructions de génération correspondant à cet exemple figurent en fin de rubrique.

Après avoir généré ce service, il doit être installé avec l'utilitaire Installutil.exe comme tout autre service Windows. Si vous voulez 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 pour installer et démarrer le service Windows, et pour fermer et désinstaller le service Windows. Le service WCF peut répondre aux clients uniquement si le service Windows est en cours d’exécution. Si vous arrêtez le service Windows en utilisant l’applet Services du Panneau de configuration et si vous exécutez le client, une exception EndpointNotFoundException est levée lorsqu’un client essaie d’accéder au service. Si vous redémarrez le service Windows et exécutez à nouveau le client, la communication réussit.

Le code de service inclut une classe Installer, une classe d’implémentation de service WCF qui implémente le contrat ICalculator, et une classe de service Windows qui agit en tant qu’hôte d’exécution. La classe Installer, qui hérite de Installer, permet à l'outil Installutil.exe d'installer le programme comme un service NT. La classe d’implémentation du service, WcfCalculatorService, est un service WCF qui implémente un contrat de service de base. Ce service WCF est hébergé dans une classe de service Windows appelée WindowsCalculatorService. Pour prétendre au titre de 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 de l’hôte 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 illustre la configuration de l'adresse de base ainsi que le point de terminaison qui expose le 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 de l'opération s'affichent dans les fenêtres de console du service et du client. Appuyez sur ENTER 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. Après avoir généré la solution, exécutez Setup.bat à partir d’une invite de commandes de 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 à un ou plusieurs ordinateurs, suivez les instructions figurant dans Exécution des exemples Windows Communication Foundation.

Voir aussi