Question

Alors que j'apprends actuellement à utiliser les services WCF, je rencontre régulièrement des didacticiels sur Internet qui mentionnent l'utilisation d'un ServiceHost lors de l'utilisation d'un service WCF.

En quoi consiste exactement ce ServiceHost ?

Dans mon projet actuel, j'utilise un service WCF et y trouve une référence depuis mon application. Chaque fois que je veux le consommer depuis mon application, je viens d'instancier son ServiceClient comme ceci:

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

Ensuite, accédez à mes méthodes Web ( OperationContract ) à partir de cette instance (évidemment, ouvrez-la avant de consommer la méthode, puis fermez-la avec Open et Fermer )

Mon service WCF est hôte dans mon IIS et je viens d'accéder au .svc depuis mon application pour instancier le ServiceClient .

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

Était-ce utile?

La solution

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. Voir l'exemple de code fourni par MSDN pour comment configurer un ServiceHost dans un application console .

Autres conseils

Votre implémentation de service est juste une classe .NET. Vous devez disposer d’un environnement d’exécution pour pouvoir l’exécuter. C'est ce à quoi sert ServiceHost: il va charger votre classe de service, configurer les points de terminaison et les écouteurs de canal, etc., et donner ainsi à votre classe de service un "écosystème". vivre et opérer.

Vous pouvez soit instancier vous-même une classe ServiceHost dans une application console, un service Windows ou même une application Winforms, et rendre ainsi votre classe de service WCF disponible au monde extérieur - ou vous pouvez déléguer ce travail à IIS ou WAS. Même IIS ou WAS utilisera un ServiceHost pour héberger votre service WCF - ils le font simplement de manière automatique en coulisse et "à la demande". - chaque fois qu'une demande pour votre service WCF arrive.

Marc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top