Procedura: ospitare un servizio WCF in un'applicazione gestita
Per ospitare un servizio all'interno di un'applicazione gestita, incorporare il codice per il servizio nel codice dell'applicazione gestita, definire un endpoint per il servizio in modo imperativo nel codice o in modo dichiarativo tramite la configurazione e quindi creare un'istanza di ServiceHost.
Per iniziare a ricevere messaggi, chiamare Open su ServiceHost. In tal modo viene creato e aperto il listener per il servizio. Questo tipo di hosting di un servizio viene spesso chiamato "self-hosting"" perché è la stessa applicazione gestita a svolgere il lavoro di hosting. Per chiudere il servizio, chiamare System.ServiceModel.Channels.CommunicationObject.Close su ServiceHost.
Un servizio può essere ospitato anche in un servizio Windows gestito, in Internet Information Services (IIS) o nel servizio di attivazione dei processi di Windows (WAS, Windows Process Activation Service). Per ulteriori informazioni sulle opzioni di hosting per un servizio, vedere Servizi host.
L'hosting di un servizio in un'applicazione gestita è l'opzione più flessibile perché richiede la distribuzione di un'infrastruttura minima. Per ulteriori informazioni sui servizi di hosting nelle applicazioni gestite, vedere Hosting in un'applicazione gestita.
Nella procedura seguente viene illustrato come implementare un servizio indipendente in un'applicazione console. Per l'esempio pratico sul quale è basata questa procedura, vedere Self Host Sample.
Per creare un servizio indipendente
Definire un endpoint del servizio per il servizio tramite la configurazione.
Creare un'interfaccia per il servizio. Vedere Procedura: definire un contratto di servizio di Windows Communication Foundation.
Implementare l'interfaccia per creare il tipo di servizio. Vedere Procedura: implementare un contratto di servizio di Windows Communication Foundation. Nell'esempio seguente, l'implementazione viene chiamata
MathService
.Creare un metodo per avviare il servizio. In questo esempio, viene utilizzato il metodo Main.
Creare un'istanza della classe Uri con l'indirizzo di base per il servizio. In questo esempio è utilizzata la proprietà statica AppSettings della classe ConfigurationManager per selezionare un indirizzo di base. Assicurarsi di aggiungere al progetto un riferimento a System.Configuration.dll. L'indirizzo di base può quindi essere impostato nel file di configurazione per l'applicazione host sotto l'elemento <appSettings>.
Nel file di configurazione dell'applicazione, aggiungere un elemento <appSettings>. Utilizzare quindi l'elemento <add> con un attributo key appropriato. In questo caso, il valore della key corrisponde al parametro passato alla proprietà AppSettings nel passaggio precedente.
Creare un'istanza della classe ServiceHost, passando un Type che rappresenta il tipo di servizio e l'URI (Uniform Resource Identifier) dell'indirizzo di base a ServiceHost.
Chiamare il metodo Open sull'oggetto ServiceHost.
Per creare un endpoint nella configurazione
- Aggiungere un file di configurazione alla stessa directory dell'assembly del servizio. Per ulteriori informazioni sulla configurazione, vedere Configurazione di associazioni per i servizi Windows Communication Foundation.
Esempio
Nell'esempio seguente viene creato un oggetto ServiceHost per ospitare un servizio di tipo CalculatorService
, quindi viene chiamato il metodo Open su ServiceHost. Nel codice viene fornito un indirizzo di base, mentre nella configurazione viene fornito il percorso relativo.
Per creare un client per il servizio utilizzando ServiceMetadata Utility Tool (svcutil.exe), l'associazione per l'endpoint deve utilizzare il protocollo HTTP. Per ulteriori informazioni sulle associazioni, vedere Utilizzo di associazioni per configurare servizi e client e Associazioni fornite dal sistema. Per l'esempio completo sul quale è basato questo argomento, vedere l'esempio Self-Host.
Vedere anche
Attività
Procedura: ospitare un servizio WCF in IIS
Procedura: definire un contratto di servizio di Windows Communication Foundation
Procedura: implementare un contratto di servizio di Windows Communication Foundation
Riferimenti
Uri
AppSettings
ConfigurationManager
Concetti
Servizi host
Utilizzo di associazioni per configurare servizi e client
Associazioni fornite dal sistema