Condividi tramite


Hosting in un'applicazione di servizio Windows

I servizi Windows, precedentemente noti come servizi Windows NT, offrono un modello di processo particolarmente adatto ad applicazioni che devono risiedere in un eseguibile a esecuzione prolungata e che non visualizzano alcuna forma di interfaccia utente. La durata del processo di un'applicazione di servizio Windows viene gestita da Gestione controllo servizi (SCM), che consente di avviare, interrompere e sospendere le applicazioni di servizio Windows. È possibile configurare un processo di servizio Windows perché venga automaticamente avviato all'avvio del computer, rendendolo un ambiente host adatto ad applicazioni sempre attive. Per ulteriori informazioni su applicazioni di servizio Windows, vedere la pagina sulle applicazioni di servizio Windows (la pagina potrebbe essere in inglese).

Le applicazioni che ospitano servizi Windows Communication Foundation (WCF) a esecuzione prolungata condividono molte caratteristiche dei servizi Windows. In particolare, i servizi WCF sono eseguibili server a esecuzione prolungata che non interagiscono direttamente con l'utente e non implementano quindi alcuna forma di interfaccia utente. Pertanto, l'hosting di servizi WCF all'interno di un'applicazione di servizio Windows è una delle opzioni per la creazione di efficaci applicazioni WCF a esecuzione prolungata.

Gli sviluppatori WCF devono spesso decidere se ospitare le proprie applicazioni WCF in un'applicazione di servizio Windows o nell'ambiente host IIS (Internet Information Services) o del servizio di attivazione dei processi di Windows (WAS). È consigliabile considerare l'utilizzo di applicazioni di servizio Windows alle condizioni seguenti:

  • L'applicazione richiede l'attivazione esplicita. È, ad esempio, consigliabile utilizzare servizi Windows quando l'applicazione deve essere avviata automaticamente all'avvio del server, invece di essere avviata dinamicamente in risposta al primo messaggio in ingresso.

  • Il processo che ospita l'applicazione deve restare in esecuzione una volta avviato. Una volta avviato, un processo di servizio Windows resta in esecuzione, a meno che non venga esplicitamente interrotto da un amministratore del server tramite Gestione controllo servizi. Le applicazioni ospitate in IIS o WAS possono essere avviate e interrotte dinamicamente, per utilizzare le risorse di sistema in modo ottimale. Le applicazioni che richiedono il controllo esplicito sulla durata del processo host dovrebbero utilizzare servizi Windows invece di IIS o WAS.

  • È necessario eseguire il servizio WCF su Windows Server 2003 e utilizzare trasporti diversi da HTTP. Su Windows Server 2003, l'ambiente host IIS 6.0 è limitato alla sola comunicazione HTTP. Le applicazioni di servizio Windows non sono soggette a questa restrizione e possono utilizzare qualsiasi trasporto supportato da WCF, inclusi net.tcp, net.pipe e net.msmq.

Per ospitare WCF in un'applicazione di servizio Windows

  1. Creare un'applicazione di servizio Windows. È possibile scrivere applicazioni di servizio Windows in codice gestito utilizzando le classi nello spazio dei nomi System.ServiceProcess. Questa applicazione deve includere una classe che eredita da ServiceBase.

  2. Collegare la durata dei servizi WCF alla durata dell'applicazione di servizio Windows. In genere, si desidera che i servizi WCF ospitati in un'applicazione di servizio Windows divengano attivi quando viene avviato il servizio di hosting, interrompano l'ascolto dei messaggi quando viene arrestato il servizio di hosting e interrompano il processo di hosting quando il servizio WCF rileva un errore. Per ottenere questo risultato, è possibile procedere come segue:

    • Eseguire l'override di OnStart per aprire una o più istanze di ServiceHost. Una sola applicazione di servizio Windows può ospitare più servizi WCF, che vengono avviati e interrotti come gruppo.

    • Eseguire l'override di OnStop per chiamare Closed su ServiceHost per tutti i servizi WCF in esecuzione avviati durante OnStart.

    • Eseguire la sottoscrizione all'evento Faulted di ServiceHost e utilizzare la classe ServiceController per arrestare l'applicazione di servizio Windows in caso di errore.

    Le applicazioni di servizio Windows che ospitano servizi WCF vengono distribuite e gestite nello stesso modo delle applicazioni di servizio Windows che non utilizzano WCF.

Vedere anche

Attività

Procedura: ospitare un servizio WCF in un servizio Windows gestito
Host del servizio Windows

Riferimento

System.ServiceProcess

Altre risorse

Procedura dettagliata: creazione di un'applicazione di servizio per Windows nella finestra Progettazione componenti
Architettura di programmazione delle applicazioni di servizio
Funzionalità di hosting di AppFabric