2010-07-26 3 views
0

Je suis assez nouveau à WCF et SOA, donc je m'excuse si la question est mauvaise. De la manière dont je le vois, si je pouvais spécifier le nom et l'espace de noms d'un contrat dans app.config, je pourrais changer le service que mes clients utilisent lors de l'exécution plutôt que lors de la compilation. Sans la possibilité de spécifier Nom et Espace de noms dans app.config, mes contrats clients se limitent à la connexion à des services avec des contrats portant le même nom et dans le même espace de noms. Est-ce correct?Puis-je spécifier le nom et l'espace de noms d'un contrat dans app.config?

Y a-t-il un moyen de choisir Name et namespace pour un contrat donné dans app.config? Si non, pourquoi pas?

Répondre

3

Ce que vous demandez n'a pas de sens. Le nom et l'espace de nom identifient le contrat. Le contrat ne peut pas changer sans changer le client. C'est pourquoi le versionnement de service est souvent effectué par en ajoutant un nouveau contrat (avec une nouvelle combinaison nom/espace de noms), et non en modifiant un contrat existant.

Vous devriez considérer un contrat comme étant un accord incassable entre le client et le service - vous fournirez toujours cet ensemble d'opérations.

Vous pouvez, d'autre part, changer le point final que vos références clients si vous décidez souhaitez que votre client d'utiliser un autre mise en œuvre du contrat. Vous pouvez également modifier la liaison par laquelle l'implémentation est atteinte. Mais vous devez toujours maintenir le même contrat, à moins que vous ne vouliez commencer à mentir à vos clients.

+0

Salut John, merci pour votre réponse rapide! Supposons que j'ai un client qui a besoin d'une ou deux opérations d'un service. Je crée une version client du contrat du service avec uniquement ces opérations. J'utilise l'espace de noms et le nom du contrat du service. Si je voulais utiliser un service avec un nom et/ou un espace de noms différent, mais néanmoins défini avec les mêmes signatures que celles dont j'avais besoin, je devrais créer un autre contrat dans mon client qui correspondait au premier sauf Name and Namespace. Cela est logique pour les contrats de service, mais pour les contrats clients? –

+0

@Sam: vous ** ne faites pas ** des choses comme ça. Si le client n'a besoin que de quelques opérations sur un contrat plus important, il ne devrait tout simplement pas utiliser le reste d'entre eux. Si vous avez de nombreux clients qui n'ont besoin que de ces opérations, alors vous pourriez vouloir créer votre propre service qui offre un contrat avec seulement ces opérations. Votre service pourrait alors appeler le service "réel" pour les implémenter. BTW, que voulez-vous dire par "contrats clients"? –

+0

J'essaie de suivre l'exemple à: http://www.codeproject.com/Articles/55690/WCF-Loose-coupling-of-WCF-Service-and-Data-Contrac.aspx. Par contrat client, j'entends un contrat qui est utilisé uniquement dans la section '' dans app.config, pas dans ''. Je pense que ma confusion vient du fait que les opérations individuelles sont comme des services à grain fin, ce qu'elles ne sont pas (non?). –

Questions connexes