2010-01-06 3 views
5

Je connecte un client WCF à un groupe de services exécutant tous le même contrat et tous sur le même hôte. J'espérais qu'il y aurait un moyen de combiner les définitions de point de terminaison pour réduire le fouillis de configuration. Je préférerais également ne pas le faire par programmation - juste par configuration. En ce moment, ma config a cette répété plusieurs fois:Configuration du client WCF - adresse de base?

<endpoint address="http://hostname/ServiceA.svc" 
     binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_MyBinding" 
     contract="ServiceReference.ISearchService" name="ServiceA"> 
</endpoint> 

<endpoint address="http://hostname/ServiceB.svc" 
     binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_MyBinding" 
     contract="ServiceReference.ISearchService" name="ServiceB"> 
</endpoint> 

// continued for ServiceC, ServiceD, etc 

Pour les configurations de serveur, il y a quelques notion of "baseAddressPrefixFilters" qui peuvent être utilisés à cette fin - est-il quelque chose pour la configuration du client?

Répondre

3

Il existe le concept d'une adresse de base dans WCF - malheureusement, cela ne fonctionne que si vous vous auto-hébergez, par ex. hébergez votre service dans une application de console ou un service NT. Cependant, cela ne fonctionne que sur le serveur - il n'y a rien de similaire du côté client. Côté client, vous devez toujours définir l'adresse de service complète complète à laquelle votre point de terminaison doit se connecter.

Si vous hébergez dans IIS, votre adresse de service est déterminée par le nom du serveur, le répertoire virtuel (et éventuellement ses sous-répertoires) et le nom du fichier * .svc utilisé pour héberger le service dans IIS. C'est une convention de système fixe et vous ne pouvez pas l'influencer, malheureusement (.NET 4 apportera un remède à cela).

+2

Des nouvelles sur la façon de faire cela avec .Net 4 maintenant? J'ai du mal à trouver une solution. – flayn

+0

@flo: voir [Introduction du développeur à WCF 4] (http://msdn.microsoft.com/fr-fr/library/ee354381.aspx) et recherchez «activation sans fichier» (activation de service sans * physique) fichier .svc) et 'Intégrer WCF avec ASP.NET Routes' qui vous permet d'utiliser des routes (comme dans ASP.NET MVC) pour définir vos activations de service (vous donne de" jolies "URL sans l'extension * .svc) - mais cela la deuxième caractéristique semble être pour les services basés sur REST seulement :-( –

Questions connexes