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.
Réponses
Trop de publicités?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
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