Condividi tramite


Host del servizio Windows

L'esempio WindowsService illustra un servizio Windows Communication Foundation (WCF) ospitato in un servizio Windows gestito. I servizi Windows vengono controllati usando l'applet Servizi in 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 aver 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 usando 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(String[]) e OnStop(). In OnStart(String[]), viene creato un oggetto ServiceHost per il tipo WcfCalculatorService e viene aperto. In OnStop(), ServiceHost viene chiuso chiamando il metodo Close(TimeSpan) dell'oggetto ServiceHost. L'indirizzo di base dell'host viene configurato usando l'elemento <add>, figlio di <baseAddresses>, figlio dell'elemento <host>, figlio dell'elemento <service>.

L'endpoint definito usa l'indirizzo di base e un <wsHttpBinding>. 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="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>

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 aver eseguito la 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 Building the Windows Communication Foundation Samples.

  3. Dopo che la soluzione è stata compilata, eseguire Setup.bat da un prompt dei comandi di Visual Studio con privilegi elevati per installare il servizio Windows con lo strumento Installutil.exe. Il servizio viene visualizzato in Servizi.

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

Vedi anche