Domanda

Mentre sto imparando ad usare i servizi WCF, incontro costantemente tutorial su Internet che menzionano l'uso di un ServiceHost quando utilizzo un servizio WCF.

Che cos'è esattamente questo ServiceHost ?


Nel mio progetto attuale sto usando un servizio WCF e ho un riferimento ad esso dalla mia app e ogni volta che voglio consumarlo dalla mia app, ho solo un'istanza del suo ServiceClient come questo:

new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress);

E quindi accedere ai miei metodi web ( OperationContract ) da quell'istanza (ovviamente aprendolo prima di consumare il metodo e chiudendolo successivamente con Open e Close )

Il mio servizio WCF è l'host nel mio IIS e accedo al .svc dalla mia app per creare un'istanza del ServiceClient .

Quindi, perché e dove viene utilizzato ServiceHost ?

È stato utile?

Soluzione

Un ServiceHost offre sostanzialmente tutto il necessario per ospitare un servizio WCF in un'impostazione non IIS o WAS. Un luogo comune per un ServiceHost sarebbe in un'app console o in un servizio Windows. Vedi il codice di esempio da MSDN per come impostare un ServiceHost in un app console .

Altri suggerimenti

L'implementazione del servizio è solo una classe .NET: è necessario disporre di un ambiente di runtime per poter essere eseguita in qualche modo. Questo è lo scopo di ServiceHost: caricherà la tua classe di servizio, imposterà gli endpoint e gli ascoltatori di canale e tutto il resto, e quindi darà alla tua classe di servizio un "ecosistema". per vivere e operare.

Puoi creare tu stesso un'istanza di una classe ServiceHost in un'app console, un servizio Windows o persino un'app Winforms e quindi rendere la tua classe di servizio WCF disponibile al mondo esterno - oppure puoi delegare tale lavoro a IIS o WAS. Anche IIS o WAS useranno un ServiceHost per ospitare il tuo servizio WCF: lo fanno semplicemente automagicamente dietro le quinte e "su richiesta". - ogni volta che arriva una richiesta per il tuo servizio WCF.

Marc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top