2011-05-20 4 views
1

J'ai une application ASP, qui appelle un service HTTP WCF, qui appelle un service TCP WCF (tous sur des serveurs différents). J'essaie finalement de passer un objet de classe entre les trois.Passer des objets entre les WCF

J'ai découvert que je ne peux pas le faire directement dans le HTTP WCF, même si mon objet de classe est défini de manière identique dans les deux WCF. Comme ceci:

Public Function CallOtherFunction(ByVal ThisClass as MyClass) 
Dim RetVal as Boolean 

    RetVal = CallMyOtherWCFFunction(ThisClass) 

End Function 

Au lieu de cela je dois:

Public Function CallOtherFunction(ByVal ThisClass as MyClass) 

Dim RetVal as Boolean 
Dim MyOutgoingClass as MyOtherWCF.MyClass 

    MyOutgoingClass.MyString = ThisClass.MyString 
    RetVal = CallMyOtherWCFFunction(MyOutgoingClass) 

End Function 

Mes objets sont assez grandes, de dire qu'ils ont beaucoup de propriétés. Une façon de ne pas avoir à déclarer une nouvelle variable dans ma fonction d'appel, donc mon code peut être un peu plus facile (comme le premier exemple)?

Merci, Jason

Répondre

5

Vous ne pouvez pas passer directement parce que ce sont deux types diffrent. Vous pouvez toutefois déclarer vos contrats de données dans un assembly partagé (utilisé par les trois projets, ou au moins par les services HTTP et TCP), et lorsque vous ajoutez la référence de service pour créer le proxy dans le service HTTP, vous spécifiez que vous voulez "réutiliser les types dans les assemblages référencés". De cette façon, il devrait utiliser le même type dans tous les projets.

Questions connexes