Condividi tramite


Host del servizio Windows

In questo esempio viene illustrato un servizio Windows Communication Foundation (WCF) ospitato in un servizio Windows gestito. I servizi Windows vengono controllati mediante l'applet Servizi nel Pannello di controllo e possono essere configurati per l'avvio automatico dopo un riavvio del sistema. L'esempio è costituito da un programma client e da un programma di Servizio Windows. Il servizio viene implementato come programma con estensione exe e contiene il proprio codice di hosting. In altri ambienti host, quali ad esempio il servizio di attivazione dei processi di Windows (WAS, Windows Process Activation Service) o Internet Information Services (IIS), non è necessario scrivere codice di hosting.

Nota

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.

Dopo avere compilato questo servizio, è necessario installarlo con l'utilità Installutil.exe come qualsiasi altro servizio Windows. Se si apportano modifiche al servizio, è prima necessario arrestarlo con installutil /u. I file Setup.bat e Cleanup.bat inclusi in questo esempio sono i comandi per installare e avviare il servizio Windows e per arrestarlo e disinstallarlo. Il servizio WCF può rispondere ai client solo se il servizio Windows è in esecuzione. Se si arresta il servizio Windows utilizzando l'applet Servizi dal Pannello di controllo e si esegue il client, si verifica un'eccezione EndpointNotFoundException quando un client tenta di accedere al servizio. Se si riavvia il servizio Windows e si esegue di nuovo il client, la comunicazione ha esito positivo.

Il codice del servizio include una classe Installer, ovvero una classe di implementazione del servizio WCF che implementa il contratto ICalculator, e una classe del servizio Windows che funge da host di runtime. La classe Installer, che eredita da Installer, consente di installare il programma come servizio NT mediante lo strumento Installutil.exe. La classe di implementazione del servizio, WcfCalculatorService, è un servizio WCF che implementa un contratto di servizio di base. Questo servizio WCF è ospitato in una classe del servizio Windows denominata WindowsCalculatorService. Per essere qualificata come un servizio Windows, la classe eredita da ServiceBase e implementa i metodi OnStart e OnStop. In OnStart, viene creato un oggetto ServiceHost per il tipo WcfCalculatorService e viene aperto. In OnStop, ServiceHost viene chiuso chiamando il metodo Close dell'oggetto ServiceHost. L'indirizzo di base dell'host viene configurato utilizzando l'elemento <add> of <baseAddress>, che è un elemento figlio dell'elemento <baseAddresses>, a sua volta figlio dell'elemento <host>, il quale è figlio dell'elemento <service>.

L'endpoint definito utilizza l'indirizzo di base e un wsHttpBinding Element. Nell'esempio seguente viene mostrata la configurazione dell'indirizzo di base e l'endpoint che espone CalculatorService.

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

Quando si esegue l'esempio, le richieste e le risposte dell'operazione vengono visualizzate nelle finestre della console client e del servizio. Premere INVIO in tutte le finestre della console per arrestare il servizio e il client.

Per impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di avere eseguito Procedura di installazione singola per gli esempi di Windows Communication Foundation.

  2. Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.

  3. Dopo che la soluzione è stata compilata, eseguire Setup.bat per installare il servizio Windows utilizzando lo strumento Installutil.exe. Il servizio viene visualizzato in Servizi.

  4. Per eseguire l'esempio su una configurazione con un solo computer o tra computer diversi, seguire le istruzioni in Esecuzione degli esempi di Windows Communication Foundation.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.