Bei einem kürzlich durchgeführten Projekt wurde unser .Net-basiertes Entwicklerteam mit der Integration einer ganzen Reihe von Java-basierten Webdiensten auf der ganzen Welt beauftragt, und wir hatten wirklich eine überraschend große Menge von Problemen (na ja, wir sind sicherlich nicht mehr überrascht) weil das von WCF generierte XML von den Java-Diensten nicht akzeptiert wird.
Es scheint auch, dass es nicht wirklich so viele gute Informationen zu diesem Thema gibt. Wir haben einige gute Tipps von Yaron Naves exzellentem WCF-Blog http://webservices20.blogspot.com und auch vom MSDN WCF-Forum http: //social.msdn.microsoft.com/Forums/en-US/wcf/threads .
Gibt es hier jemanden, der wirklich das Gefühl hat, dass er das geschafft hat und die entscheidende Ressource zu diesem Thema kennt? Würde mich für Tipps zu Büchern, Blogs oder Websites interessieren.
Bearbeiten:
Ich bin hin und her gerissen, wenn ich die für diesen Thread akzeptierte Antwort
festlege , da jede der beiden besten Antworten einen gewissen Wert hat: 1. Wir werden wahrscheinlich mehr HTTP-Webanfragen implementieren, anstatt WCF zu bekämpfen.
2. Der WCF Express Interop Bindings 1.0 war aber auch ein sehr vernünftiger Tipp.
Antworten:
Ah ja ... SOAP, der gepriesene Heilige Gral des Rechnens. Eine Verkehrssprache, die Interop zwischen Systemen auf der ganzen Welt verspricht.
Und dann lernen Sie die Unterschiede zwischen SOAP-Implementierungen auf Java und PHP und .NET kennen. Oder sogar zwischen dem WebSphere SOAP-Service und dem Apache SOAP-Client. Es spielt keine Rolle, mit verschiedenen WS-I-Kompatibilitätsstandards umzugehen. Sagen Sie mir jetzt bitte, warum Sie einen Kompatibilitätsstandard für ein Protokoll benötigen , das auf Kompatibilität ausgelegt ist. Sprechen Sie über Ironie (und ich meine echte Ironie, nicht die Marke Alanis Morrissette für Ironie ).
Die einzige Möglichkeit, Probleme bei der Kommunikation zwischen zwei SOAP-Endpunkten zu vermeiden, besteht darin, dass sich beide auf derselben Plattform befinden und die Plattform in den meisten Fällen über ein effizienteres Remote-Betriebsprotokoll verfügt.
Was ich hier sage, ist, dass SOAP größtenteils nutzlos ist. Jetzt Kleinbuchstaben Seife, ich benutze das jeden Tag und ich bin dankbar, dass die meisten Menschen das gleiche tun.
Davon abgesehen, wenn Sie darauf bestehen, Ihren Kopf gegen eine Mauer zu schlagen. Hier ist ein guter Anfang Microsoft verfügt über eine Reihe von Bindungen, um die Interoperabilität mit den meisten wichtigen Java-Servern zu ermöglichen. Der spaßige Teil ist natürlich herauszufinden, welche mit welchen von Ihnen integrierten Diensten zusammenarbeiten.
quelle
Meiner Meinung nach ist Ihre Beobachtung ziemlich genau. Die übergeordneten Implementierungen der XML-basierten Kommunikation sind normalerweise nicht mit verschiedenen Plattformen kompatibel, auch wenn dies der Fall ist beide „SOAP“ genannt. Geringe Unterschiede in der Implementierung, wahrscheinlich beide im Rahmen des implementierten Standards, führen zu Problemen im realen Einsatz.
Meine Empfehlung für Dienstleister: Verwenden Sie eine einfache Implementierung anstelle einer sehr komplexen und theoretisch besseren Implementierung. Schließen Sie beispielsweise keine extrem komplexen Authentifizierungsschemata ein, wenn Sie diese nicht benötigen.
Meine Empfehlung für Servicekonsumenten (Sie, nehme ich an): Wenn Sie mit einer Implementierung auf hoher Ebene auf einer anderen Plattform als Ihrer kommunizieren, reduzieren Sie sich auf eine Implementierung auf niedrigerer Ebene. Es wird plötzlich ganz einfach, wenn Sie einfach herausfinden, was das eigentliche zu sendende XML ist, und dann die üblichen guten Codierungspraktiken anwenden, um dies zu erreichen, anstatt darauf zu bestehen, die Implementierung auf hoher Ebene Ihrer eigenen Plattform zu verwenden.
Ich hoffe, es war nicht zu abstrakt. Kurz gesagt , wenn Sie sich auf der .NET-Plattform befinden, die eine Verbindung zu einer Java-Plattform herstellt, möchten Sie möglicherweise einfach die Header und XML in einer HTTP-Webanforderung zusammenstellen und auf diese Weise senden.
quelle
Sie werden die gleichen Probleme haben, PHP-Webdienste zu verbrauchen.
Unsere einzige Antwort darauf war, den Protokolltyp auf REST anstatt auf SOAP zu ändern. Wir haben noch nie das SOAP-Zeug zum Zusammenspiel bekommen, so sehr für Simple!
quelle