Condividi tramite


Servizi di hosting

Per diventare attivo, un servizio deve essere ospitato in un ambiente di runtime che lo crea e ne controlla il contesto e la durata. I servizi Windows Communication Foundation (WCF) sono progettati per l'esecuzione in qualsiasi processo di Windows che supporta codice gestito.

WCF fornisce un modello di programmazione unificato per la creazione di applicazioni orientate ai servizi. Questo modello di programmazione rimane coerente ed è indipendente dall'ambiente di runtime in cui viene distribuito il servizio. In pratica, questo significa che il codice per i tuoi servizi appare molto simile qualunque sia l'opzione di hosting.

Queste opzioni di hosting vanno dall'esecuzione all'interno di un'applicazione console a ambienti server, ad esempio un servizio Windows in esecuzione all'interno di un processo di lavoro gestito da Internet Information Services (IIS) o dal servizio di attivazione dei processi Windows (WAS). Gli sviluppatori scelgono l'ambiente di hosting che soddisfa i requisiti di distribuzione del servizio. Questi requisiti possono derivare dalla piattaforma in cui viene distribuita l'applicazione, dal trasporto su cui deve inviare e ricevere messaggi oppure dal tipo di riciclo del processo e da altre operazioni di gestione dei processi necessarie per garantire una disponibilità adeguata o su altri requisiti di gestione o affidabilità. Nella sezione successiva vengono fornite informazioni e indicazioni sulle opzioni di hosting.

Opzioni di hosting

Self-Host in un'applicazione gestita

I servizi WCF possono essere ospitati in qualsiasi applicazione gestita. Questa è l'opzione più flessibile perché richiede la distribuzione dell'infrastruttura minima. Si incorpora il codice per il servizio all'interno del codice dell'applicazione gestita e quindi si crea e si apre un'istanza ServiceHost di per rendere disponibile il servizio. Per altre informazioni, vedere Procedura: Ospitare un servizio WCF in un'applicazione gestita.

Questa opzione consente due scenari comuni: servizi WCF in esecuzione all'interno di applicazioni console e applicazioni client avanzate, ad esempio quelle basate su Windows Presentation Foundation (WPF) o Windows Form (WinForms). L'hosting di un servizio WCF all'interno di un'applicazione console è in genere utile durante la fase di sviluppo dell'applicazione. In questo modo è facile eseguire il debug, ottenere facilmente informazioni di traccia da per scoprire cosa accade all'interno dell'applicazione e spostarsi facilmente copiandole in nuove posizioni. Questa opzione di hosting semplifica anche le applicazioni client avanzate, ad esempio le applicazioni WPF e WinForms, per comunicare con l'esterno. Ad esempio, un client di collaborazione peer-to-peer che usa WPF per l'interfaccia utente e ospita anche un servizio WCF che consente ad altri client di connettersi e condividere informazioni.

Servizi Windows gestiti

Questa opzione di hosting consiste nella registrazione del dominio applicazione (AppDomain) che ospita un servizio WCF come servizio Windows gestito (in precedenza noto come servizio NT) in modo che la durata del processo del servizio sia controllata dal gestore di controllo dei servizi (SCM) per i servizi Windows. Analogamente all'opzione self-hosting, questo tipo di ambiente di hosting richiede che alcuni codici di hosting vengano scritti come parte dell'applicazione. Il servizio viene implementato sia come servizio Windows che come servizio WCF facendo in modo che erediti dalla ServiceBase classe e da un'interfaccia del contratto di servizio WCF. Il ServiceHost viene quindi creato e aperto all'interno di un metodo ridefinito OnStart(String[]) e chiuso all'interno di un metodo ridefinito OnStop(). Una classe del programma di installazione che eredita da Installer deve essere implementata anche per consentire l'installazione del programma come servizio Windows dallo strumento Installutil.exe. Per altre informazioni, vedere Procedura: Ospitare un servizio WCF in un servizio Windows gestito. Lo scenario abilitato dall'opzione di hosting del servizio Windows gestito è quello di un servizio WCF a esecuzione prolungata ospitato all'esterno di IIS in un ambiente sicuro che non è attivato dai messaggi. La durata del servizio viene invece controllata dal sistema operativo. Questa opzione di hosting è disponibile in tutte le versioni di Windows.

Internet Information Services (IIS)

L'opzione di hosting IIS è integrata con ASP.NET e usa le funzionalità offerte da queste tecnologie, ad esempio il riciclo dei processi, l'arresto inattiva, il monitoraggio dell'integrità dei processi e l'attivazione basata su messaggi. Nei sistemi operativi Windows XP e Windows Server 2003, questa è la soluzione preferita per l'hosting di applicazioni di servizio Web che devono essere altamente disponibili e altamente scalabili. IIS offre anche la gestibilità integrata che i clienti si aspettano da un prodotto server di classe enterprise. Questa opzione di hosting richiede che IIS sia configurato correttamente, ma non richiede la scrittura di codice di hosting come parte dell'applicazione. Per altre informazioni su come configurare l'hosting IIS per un servizio WCF, vedere Procedura: Ospitare un servizio WCF in IIS.

I servizi ospitati da IIS possono usare solo il trasporto HTTP. La sua implementazione in IIS 5.1 ha introdotto alcune limitazioni in Windows XP. L'attivazione basata su messaggi fornita per un servizio WCF da IIS 5.1 in Windows XP blocca qualsiasi altro servizio WCF self-hosted nello stesso computer dall'uso della porta 80 per comunicare. I servizi WCF possono essere eseguiti nello stesso processo appdomain/pool di applicazioni/processo di lavoro di altre applicazioni quando sono ospitati da IIS 6.0 in Windows Server 2003. Tuttavia, poiché WCF e IIS 6.0 usano entrambi lo stack HTTP in modalità kernel (HTTP.sys), IIS 6.0 può condividere la porta 80 con altri servizi WCF self-hosted in esecuzione nello stesso computer, a differenza di IIS 5.1.

Servizio attivazione processi Windows (WAS)

Windows Process Activation Service (WAS) è il nuovo meccanismo di attivazione dei processi per Windows Server 2008 disponibile anche in Windows Vista. Mantiene il noto modello di processo IIS 6.0 (pool di applicazioni e attivazione di processi basati su messaggi) e le funzionalità di hosting (ad esempio protezione rapida degli errori, monitoraggio dell'integrità e riciclo), ma rimuove la dipendenza da HTTP dall'architettura di attivazione. IIS 7.0 usa WAS per eseguire l'attivazione basata su messaggi su HTTP. I componenti WCF aggiuntivi si collegano anche a WAS per fornire l'attivazione basata su messaggi sugli altri protocolli supportati da WCF, ad esempio TCP, MSMQ e named pipe. Ciò consente alle applicazioni che usano protocolli di comunicazione di usare le funzionalità iis, ad esempio il riciclo dei processi, la protezione rapida degli errori e il sistema di configurazione comune disponibile solo per le applicazioni basate su HTTP.

Questa opzione di hosting richiede che WAS sia configurato correttamente, ma non richiede di scrivere codice di hosting come parte dell'applicazione. Per altre informazioni su come configurare l'hosting WAS, vedere Procedura: Ospitare un servizio WCF in WAS.

Scegliere un ambiente di hosting

La tabella seguente riepiloga alcuni dei principali vantaggi e scenari associati a ognuna delle opzioni di hosting.

Ambiente host Scenari comuni Vantaggi e limitazioni principali
Applicazione gestita ("self-hosted") - Applicazioni console usate durante lo sviluppo.
- Rich WinForm e applicazioni client WPF che accedono ai servizi.
- Flessibile.
- Facile da distribuire.
- Non una soluzione aziendale per i servizi.
Servizi Windows (in precedenza noti come servizi NT) - Un servizio WCF di lunga durata ospitato all'esterno di IIS. - Durata del processo del servizio controllata dal sistema operativo, non attivata da messaggio.
- Supportato da tutte le versioni di Windows.
- Ambiente sicuro.
IIS 5.1, IIS 6.0 - Eseguire un servizio WCF affiancato al contenuto ASP.NET su Internet tramite protocollo HTTP. - Riciclo del processo.
- Arresto inattivo.
- Monitoraggio dello stato del processo.
- Attivazione basata su messaggi.
- Solo HTTP.
Servizio attivazione processi Windows (WAS) - Esecuzione di un servizio WCF senza installare IIS su Internet usando diversi protocolli di trasporto. - IIS non è obbligatorio.
- Riciclo del processo.
- Arresto inattivo.
- Monitoraggio dello stato del processo.
- Attivazione basata su messaggi.
- Funziona con HTTP, TCP, named pipe e MSMQ.
IIS 7.0 - Esecuzione di un servizio WCF con contenuti ASP.NET.
- Esecuzione di un servizio WCF su Internet tramite vari protocolli di trasporto.
- Vantaggi di WAS.
- Integrato con contenuto ASP.NET e IIS.

La scelta di un ambiente di hosting dipende dalla versione di Windows da cui viene distribuita, dai trasporti necessari per inviare messaggi e dal tipo di processo e dal riciclo del dominio dell'applicazione. Nella tabella seguente vengono riepilogati i dati correlati a questi requisiti.

Ambiente host Disponibilità della piattaforma Trasporti supportati Riciclo dei processi e degli AppDomain
Applicazioni gestite ("self-hosted") Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
NO
Servizi Windows (in precedenza noti come servizi NT) Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
NO
IIS 5.1 Windows XP Protocollo HTTP
IIS 6.0 Windows Server 2003 Protocollo HTTP
Servizio attivazione processi Windows (WAS) Windows Vista, Windows Server 2008 HTTP,

net.tcp,

net.pipe,

net.msmq

È importante notare che l'esecuzione di un servizio o qualsiasi estensione da un host non attendibile compromette la sicurezza. Inoltre, quando si apre un ServiceHost in modalità impersonificazione, un'applicazione deve assicurarsi che l'utente non sia disconnesso, ad esempio memorizzando nella cache il WindowsIdentity dell'utente.

Vedere anche