2017-01-05 11 views
0

は私がで構成されていWCFプロジェクトを持っています。したがって、クライアントはこれを行うことができます:WCFサーバーと非.NETクライアント

public Person XMLToPerson() 
{ 
    ServiceReference1.Service1Client s1 = new ServiceReference1.Service1Client(); 
    Person p = s1.GetPerson(); 
    return p; 
} 

Webサービスを参照するJavaクライアントがあるとどうなりますか?確かに、これは相互運用性に反対していますか?

Q1)Javaクライアントをお持ちの場合はどうなりますか?どのようにPersonオブジェクトを受け入れることができますか?

Q2)なぜWebサービスがJSON/XMLではなくカスタムタイプを返すのですか? JSON/XMLが返された場合、クライアントは必要な方法でそれを抹消することができますか?

これは、従来のWebサービス(.asmx)でも同じです。幸いにも私が過去に開発したすべてのWebサービスは.NETクライアントによってのみ使用されるので、これについて考える必要はありません。しかし、問題はいつも私の心の後ろにあります。

+0

私はあなたに以下の回答を与えましたが、この質問はWCFの仕組みにとって非常に基本的なものであり、WCFチュートリアル、本、またはビデオの紹介で時間を費やすことで本当に恩恵を受けることができると思われます。そこから選ぶべき何百もあるべきである。 –

答えて

0

BasicHttpBindingを使用している場合、サーバーとクライアントの間で送信されるものはSOAP XMLであり、オブジェクトではありません。 .netはすべてのXMLを抽象化する素敵なフレームワークを提供するので、あなたは.netでカスタムタイプを見ることができます。 WCFは、コードを書き換えるのではなく構成を変更または追加することによって、他の形式やプロトコルと連携するためにも使用できるため、WCFではこれが重要です。 ASMXはSOAPも使用しますが、WCFの柔軟性はありません。

さまざまなプラットフォームの異なるSOAP実装で、非互換性の問題が発生することがありますが、それほど頻繁に見ていません。

+0

ありがとうございます。しかし、私はこれが私の質問に答えるとは思わない。 – w0051977

+0

あなたはJavaからSOAPをどのように消費するのですか? –

0

WCFはSOAP形式の情報を交換するため、他の言語との相互運用性が高くなります。 Javaクライアントは、あなたはまた、WCFは、現時点では非常に一般的であるREST APIを公開するために変換することができます

http://adventuresinsoftware.com/blog/?p=481

、例えば、ラッパークラスを生成するためのApache CXFことができます。

特に質問にお答えください。 VSを使用してサービス参照を生成すると、SOAPからオブジェクトへの変換は、生成されたラッパークラスによって自動的に処理されます(Apache CXFはJavaクライアントでも同じです)。あなたは本当にどのように生成されたクラスを見てみる必要があります。たぶんXMLがあまりにも冗長で、あなた自身の時間を無駄にしたくないので、誰も本当のSOAPデータに触れたくない理由も知っているでしょう。

+0

ありがとうございます。チャネルを動的に作成すると(サービス参照を追加するのではなく)、SOAPが直接返されます。つまり、フレームワークはSOAPをオブジェクトに逆シリアル化しません。 – w0051977

+0

@ w0051977誰もそれをしませんが、技術的に言えば、生の方法で接続すれば、SOAPメッセージを直接見ることができます。 –

関連する問題