WCFからJava Webサービスへの相互運用には、驚くほど問題があるようです。良いリソースはありますか?


13

最近のプロジェクトでは、当社の.Netベースの開発チームは世界中のJavaベースのWebサービスのホスト全体と統合することを任されており、驚くべきことに(もちろん、これ以上驚くことはありません)大量の問題がありましたWCFによって生成されたXMLはJavaサービスによって受け入れられないためです。

また、我々はヤロンネーブの優れたWCFのブログから、いくつかの良いヒントを得ている多くの良い情報が被写体に見つけることが本当に存在していないようですhttp://webservices20.blogspot.com、また、MSDN WCFのフォーラムで はhttp: //social.msdn.microsoft.com/Forums/en-US/wcf/threads

ここに本当に自分がこれを倒したと感じ、主題に関する決定的なリソースを知っている人はいますか?書籍、ブログ、またはWebサイトに関するヒントに興味があります。

編集:
2つのベストアンサーのそれぞれにいくつかの価値があるため、このスレッドで受け入れられた回答を設定するのに
困惑しています。
2.しかし、WCF Express Interop Bindings 1.0も非常に賢明なヒントでした。


WCFについては何も知りませんが、SOAPベースのXMLパケットを生成するのでしょうか、それともRESTfulサービスで消費できるXMLの塊を生成するのですか?
マルタインVerburg

1
XML、JSON、またはRDF + XMLを返します。
アランB

wcfクライアントとjava webserviceの間で何がうまくいかなかったのか例を挙げていただけますか webservice = soapまたは何か違うことを意味しますか?
k3b

1
詳細を調べることはこの質問の範囲外です。例については、スタックオーバーフローに関する私のプロファイルを確認できます。ここでは、WCF(または一般的に.Net)クライアントで他のプラットフォームに基づいたWebサービスと相互運用する他の誰かが同じ問題を抱えているかどうかを知りたいだけです。
ビョルン

回答:


15

あぁ... SOAP、コンピューティングの名高い聖杯。世界中のシステム間の相互運用を約束した共通語。

そして、JavaとPHPおよび.NETでのSOAP実装の違いを理解します。または、WebSphere SOAPサービスとApache SOAPクライアント間でさえも。異なるWS-I互換性標準を扱うことを気にしないでください。互換性のために構築されたプロトコルの互換性基準が必要な理由を教えてください、皮肉なことについて話してください(そして、Alanis Morrissetteブランドの皮肉はなく、本当の皮肉を意味します)。

2つのSOAPエンドポイントが通信する際に問題が発生しないのは、両方が同じプラットフォーム上にあり、ほとんどの場合、プラットフォームがより効率的なリモート操作プロトコルを持つ場合です。

ここで私が言っているのは、ほとんどの場合、SOAPは役に立たないということです。今ではローション石鹸、私は毎日それを使用し、ほとんどの人が同じことをしてくれてありがたいです。

そうは言っても、レンガの壁に頭を打ちつけようとするなら。Microsoftが主要なJavaサーバーのほとんどとの相互運用を可能にするバインディングのセットを持っていることを始めるのに良い場所はここにあります。もちろん楽しいのは、どのサービスが統合されているどのサービスと連携しているかを見つけることです。


5
SOAPは新しいCORBAです:)
gbjbaanb

どういうわけか、クライアント統合プロジェクトでかなり頻繁に成功しているようです。どうやらYMMV。
デビッドJ.リゼフスキー

9

私の意見では、あなたの観察は非常に正確です。XMLベースの通信の高レベルの実装、両方とも「SOAP」と呼ばれる場合でも、通常は異なるプラットフォームと互換性がありません。実装の微妙な違いは、おそらく実装された標準の範囲内であり、実際の使用で問題を引き起こします。

サービスプロバイダーへの私の推奨事項: 非常に複雑で理論的に優れた実装ではなく、単純な実装を使用します。たとえば、非常に複雑な認証スキームを必要としない場合は含めないでください。

サービス利用者への私の推奨事項(あなた、私が推測します): あなたとは異なるプラットフォームで高レベルの実装と通信する場合、低レベルの実装に低下します。送信する実際のXMLが何であるかを単純に把握し、それを達成するために通常の優れたコーディング手法を使用すると、独自のプラットフォームの高レベル実装の使用を主張する代わりに、突然非常に簡単になります。

抽象的すぎないことを願っています。つまり、Javaプラットフォームに接続している.NETプラットフォームを使用している場合、HttpWebRequestでヘッダーとxmlを単純にアセンブルし、その方法で送信することができます。


4

PHP Webサービスの使用でも同じ問題が発生します。

これに対する唯一の答えは、プロトコルタイプをSOAPではなくRESTに変更することでした。SOAPを相互運用することはできませんでした。


ほとんどの場合、既存のWebサービスを変更するオプションはまったくありません。どのような場合でも、SOAPでそれらに接続する必要があります。だから私はあなたのために解決された答えがないことを恐れています。;)
ビヨン

1
>「既存のWebサービスを変更するオプションはありません」その場合。自分を締めて、あなたは大まかな乗り心地にいる。java / androidからwcf / soap Webサービスを呼び出そうとして、2週間の頭打ちから回復しました。私の救いは、あなたとは異なり、私がサービスにアクセスし、REST / JSONエンドポイントを公開するようにしたことです。行く方法。できれば。
BaBu

@Bjørnまあ、それを教えてくれて申し訳ありませんが、専門用語を使うのはめちゃくちゃです。唯一の答えは、WCFの使用を停止し、別のSOAPクライアントを使用することだと思います。
-gbjbaanb

私たちのチームはあなたの答えから笑って泣いています。:)ありがとうございます。
ビョルン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.