2009-05-08 3 views
0

Ich habe einen .NET WCF-Dienst, der ein Objekt exponiert, das Polymorphismus verwendet.WCF -> Websphere Integration Entwickler und Polymorphismus

Offensichtlich kann Websphere Integration Developer nicht richtig damit umgehen (ich bin nicht der Websphere-Entwickler), außer dass alle Felder aller möglichen Polymorphismen hinzugefügt werden und ein Enum oder ein solches verwendet wird, um zu sagen, dass es ein Objekt von dem und dem ist Art.

Ich kann nicht glauben, dass IBM ein Produkt geschaffen hat, das Polymorphismus nicht unterstützt! also .. Kann mir jemand erklären, wie ich damit umgehen soll, oder auf Ressourcen hinweisen, die ich weitergeben kann?

Antwort

1

Dies ist möglicherweise nicht das Problem, aber Sie sollten wissen, dass Webdienste im Allgemeinen keine virtuellen Methoden unterstützen. Als solche unterstützen sie Polymorphismus nicht wirklich.

In der Tat sind Web-Services überhaupt nicht objektorientiert. Bei ihnen dreht sich alles um XML, das nicht objektorientiert ist. Jede Ähnlichkeit mit Klassen mit Methoden und Eigenschaften ist eine Erfindung Ihrer Werkzeuge - speziell die Werkzeuge, die Ihre Proxy-Klassen erzeugen, betrachten die (XML-) Beschreibung des Web-Service und erzeugen Klassen, die mehr oder weniger wie beschrieben aussehen.

Manchmal mehr und manchmal weniger.

+0

Einverstanden. Aber Vererbungshierarchien können mit komplexen Typen und ComplexContent/Extension interoperabel modelliert werden. –

+0

@Rune: Wahr. Ich habe die Frage gelesen, dass es sich um OO-artigen Polymorphismus handelt, nicht um "Datenpolymorphismus". –

+0

Ich verstehe, warum, hätte klarer sein können. –

0

Das Problem ist, dass Ihr Kunde nur über den Vertrag oder WSDL über Ihren Service informiert.

Die wsdl definiert nur die Eingaben und Ausgaben der Methoden in Ihrem Vertrag (sowie die Datenverträge, die von diesen Methoden verwendet werden) - es stellt keine der Basisklassen usw. der Serviceklasse (oder irgend einer anderen Klasse) zur Verfügung der Datenverträge) wird Ihr Kunde anrufen.

Es ist nicht so, dass WebSphere keine Polymorphie verarbeiten kann - es ist eher so, dass die wsdl es nicht so ausdrücken kann, wie Sie es erwarten würden.

Verwandte Themen