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 altre informazioni sulle applicazioni di servizio Windows, vedere Applicazioni di servizio Windows.

Le applicazioni che ospitano servizi Windows Communication Foundation (WCF) a esecuzione prolungata condividono molte caratteristiche con i 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'uso di applicazioni di servizio Windows alle condizioni seguenti:

  • L'applicazione richiede l'attivazione esplicita. È, ad esempio, consigliabile usare 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 usare le risorse di sistema in modo ottimale. Le applicazioni che richiedono il controllo esplicito sulla durata del processo host dovrebbero usare servizi Windows invece di IIS o WAS.

  • È necessario eseguire il servizio WCF su Windows Server 2003 e usare 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 usare qualsiasi trasporto supportato da WCF, inclusi net.tcp, net.pipe e net.msmq.

Procedure

  1. Creare un'applicazione di servizio Windows. È possibile scrivere applicazioni di servizio Windows in codice gestito usando 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:

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

Vedi anche