38 votes

WCF: Qu'est-ce qu'un ServiceHost?

Comme je suis en train d'apprendre à utiliser les Services WCF, je suis constamment à la rencontre des tutoriels sur internet qui mentionnent l'utilisation d'un ServiceHost lors de l'utilisation d'un Service WCF.

Qu'est-ce exactement ce ServiceHost ?


Dans mon projet actuel, je suis en utilisant un Service WCF et d'avoir une référence à partir de mon application et chaque fois que je veux consommer à partir de mon application, j'ai juste instancier son ServiceClient comme tel:

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

Et puis l'accès de mon site web méthodes (OperationContracts) de cette instance (à l'évidence de l'ouvrir avant la consommation de la méthode et de la fermeture par la suite avec Open et Close)

Mon service WCF est l'hôte dans mon IIS et j'ai juste accès à l' .svc à partir de mon application pour instancier l' ServiceClient.

Alors, pourquoi et où est - ServiceHost utilisé?

32voto

Andy White Points 36586

Un ServiceHost vous fournit essentiellement tout ce dont vous avez besoin pour héberger un service WCF dans un paramètre autre que IIS ou WAS. Un lieu commun pour un hôte de service serait dans une application console ou un service Windows. Consultez l'exemple de code fourni par MSDN pour savoir comment configurer un ServiceHost dans une application console:

http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost.aspx

26voto

marc_s Points 321990

Votre service de la mise en œuvre est tout un .Classe de NET - vous besoin d'avoir un environnement d'exécution pour elle, de sorte qu'il peut être exécuté en quelque sorte. C'est ce que l'ServiceHost est - il vous permettra de charger votre classe de service, de définir les points de terminaison et le canal des auditeurs et des trucs du genre, et donc de donner à votre classe de service d'un "écosystème" à vivre et à fonctionner dans.

Vous pouvez instancier un ServiceHost classe dans une application console, un service de Windows, ou même une application Winforms, et donc faire à votre service WCF classe disponible pour le monde extérieur - ou vous pouvez déléguer ce travail à IIS ou a ÉTÉ. Même IIS ou a ÉTÉ utilisera un ServiceHost pour accueillir votre service WCF - ils juste de le faire automatiquement derrière les coulisses, et "à la demande" - lorsqu'une demande pour votre service WCF est en.

Marc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X