2013-09-01 24 views
18

SOAP over HTTPはXML over HTTPのサブセットであり、SOAPもまたスキーマ(SOAPスキーマ)を確認するxmlであると仮定していますか?私はHTTP over HTTPサービスがGETまたはPOSTメソッドを使ってアクセスできると仮定します。 SOAP over HTTPは常にPOSTメソッドを使用しますか? HTTPを介したXMLの場合、スキーマファイルはすべてのコンシューマと共有する必要があるという欠点があると仮定しますが、SOAP over HTTPの場合は単一のWSDLファイルになります。私にその違いと利点を知らせるのを助けることは可能でしょうか?HTTP over HTTPとSOAP over HTTPの比較

答えて

21

SOAPはhttp://www.xmlsoap.org/soap/envelope/などのスキーマを持っているためXMLの特殊化ですが、XMLはより一般的です。

http://www.coderanch.com/t/463869/Web-Services/java/SOAP-request-HTTPについては、http://www.coderanch.com/t/463869/Web-Services/java/SOAP-request-HTTPを読むことができますが、基本的にはPOSTを介してSOAPが実行されますが、Axis2はRESTを支配するような世界でSOAPを動作させる方法としてGETをサポートしているようです。

このIBMの記事(http://www.ibm.com/developerworks/xml/library/x-tipgetr/index.html)によれば、SOAP 1.2ではGETが導入されています。

前述のとおり、SOAPは標準であるため、クライアントが接続時に必要なスタブを生成するという理由で、dynamic proxy soap web service client in java?というこの質問に示すように、ダイナミッククライアントの生成を含むツールも簡単に使用できます。

XMLをhttpで使用する場合は、必要に応じてデータを転送する方法としては良いかもしれませんが、ユースケースではJSONとRESTを使うほうが良いと思われますが、 XMLを転送する場合やXMLを送信する場合は、RESTを使用して調べることができます。

GETにサイズ制限(maximum length of HTTP GET request?)があると、POSTがより良いオプションになります。これはおそらくSOAPがほぼ常にPOSTである理由です。

WSDLは必ずしも単一のファイルである必要はありません.WCFでは、WSDLを完成させるためにまとめておく必要があるXMLファイルがたくさんあります。

利点はユースケースによって異なりますが、RESTを使用してユーザーがタイプを選択できるようにすると、JSONとXMLを切り替えるのが簡単で便利なので便利ですHTTP over XMLの場合

SOAPは、古いテクノロジと統合するときには、簡単に使用できるすべてのものがあります。たとえば、SAP統合のためのWebサービスを作成した場合、ABAPプログラマの能力に応じて、SOAPを使用しないようにすることができます。

あなたは、使用のこの質問を見つけることがあります。私はこのリンクを忘れてしまった

http://digitalbazaar.com/2010/11/22/json-vs-xml/

How SOAP and REST work with XML/JSON response?

とWebサービスでJSONとXMLについての議論のためにあなたは、これが役に立つかもしれませんが彼らは簡単な比較をしますが、結局両方を簡単にサポートすることができます。 WCFではビジネスロジックを持つコントローラがあり、リクエストとレスポンスの違いを処理するだけであったため、SOAP用とREST用の.aspxファイルと両方をサポートするいくつかのWebサービスが必要でした。したがって、両方のサポートを提供し、ビジネスケースを示すことが理にかなっている場合は、簡単に行うためのフレームワークを選択します。

http://digitalbazaar.com/2010/11/22/json-vs-xml/

基本的には、目標は、Web経由でクライアントにサービスを提供することです。どのクライアントが接続するのですか?クライアントはどのように簡単に手を差し伸べることができるでしょうか?リクエストでどれだけのデータが渡されていますか?

これらのタイプの質問は、お客様のニーズに最適なソリューションにつながります。

+0

ありがとうございます。私の混乱を解消した、非常に有用で詳細な説明:) –

+0

SOAPリクエストがHTTP POST経由でどのように送られるか知りたいです。 以下のメソッド呼び出しで完全にStringに読み取ることができるなど、エンベロープ全体をリクエスト本体にそのまま投稿していますか? 'String wholeSoapReequest = IOUtils.toString(request.getInputStream()); ' –

+1

@SayoOladeji - 私がそれを覚えているなら、助けになる石鹸ツールがあります。リクエストの本体にすべてありますが、これは新しい質問として –

関連する問題