3 votes

Exposer deux fois la même classe en utilisant WCF

J'ai deux services WCF qui exposent le même objet. Disons que le premier service (SerA) expose une classe (classA) et que le second service (SerB) qui ajoute la classA remplie expose également cette classe (car cette classe est incluse dans les paramètres). Maintenant, lorsque je récupère la classA de SerA, elle est concaténée avec un espace de noms SerA.classA et lorsque je l'ajoute en utilisant le second service, elle nécessite une classe comme SerB.ClassA. Existe-t-il un moyen de spécifier que les deux classes sont identiques ? J'ai essayé de changer l'espace de noms dans reference.vb et cela fonctionne mais ce serait un vrai problème lorsque la référence du service est mise à jour. Quelqu'un peut-il m'aider ? Merci de votre compréhension.

2voto

marc_s Points 321990

Vous pouvez mettre votre ClassA (et d'autres contrats de données) dans une bibliothèque de classes et d'y faire référence à partir des deux services. De cette façon, les deux services devraient utiliser la même définition de DataContracts.ClassA définition.

C'est toujours une bonne idée de séparer vos services en projets distincts :

  • les services (contrats de service, d'opération, de données et éventuellement de messages) dans une bibliothèque de classes ("Contrats") - voire dans plusieurs bibliothèques
  • la ou les mises en œuvre du service dans une bibliothèque de classes
  • le(s) service(s) hôte(s) - si nécessaire (sans utiliser IIS) - dans un assemblage séparé (console app)

De cette manière, vous pouvez réutiliser certaines parties de vos contrats de service et éventuellement des implémentations.

MArc

0voto

Monsters X Points 1016

Pas de réponse à cette question, hein ?

Le problème est que la référence de service génère sa propre définition de classe

Par exemple, j'ai une classe " voiture "dans une bibliothèque commune, et service1 service wcf que j'utilise à partir de Projet client Mais lorsque j'ajoute une référence au service1, j'obtiens

ClientProject.Service1_ref.Car

créé au sein de Reference.cs

Pour l'instant, je dois corriger cela en modifiant le reference.cs pour utiliser les classes communes à chaque fois, ce qui n'est vraiment pas bon.

éditer : Ce gars a la réponse, n'utilisez pas "ajouter une référence de service", il est facile de le faire autrement : http://devx.com/codemag/Article/39837/1763/page/5 - Monsters X 0 secondes ago edit

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