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.
![]() |
---|
La procedura di configurazione e le istruzioni di compilazione per questo esempio si trovano alla fine dell'argomento. |
![]() |
---|
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.
<UnitàInstallazione>:\WF_WCF_Samples
Se questa directory non esiste, andare alla sezione relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.
<UnitàInstallazione>:\WF_WCF_Samples\WCF\Basic\Services\Hosting\WindowsService
|
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 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
Assicurarsi di avere eseguito Procedura di installazione singola per gli esempi di Windows Communication Foundation.
Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.
Dopo che la soluzione è stata compilata, eseguire Setup.bat da un prompt dei comandi di Visual Studio 2010 con privilegi elevati per installare il servizio Windows con lo strumento Installutil.exe. Il servizio viene visualizzato in Servizi.
Per eseguire l'esempio in un solo computer o tra computer diversi, seguire le istruzioni in Running the Windows Communication Foundation Samples.