SOAP(Simple Object Access Protocol)とREST(Representation State Transfer)はどちらも見事に美しいものです。だから私はそれらを比較していません。代わりに、RESTを使用することを選択したときとSOAPを使用するときに、画像を描こうとしています。
ペイロードとは何ですか?
データがインターネット経由で送信される場合、送信される各ユニットには、ヘッダー情報と送信される実際のデータの両方が含まれます。ヘッダーはパケットの送信元と宛先を識別し、実際のデータはペイロードと呼ばれます。一般に、ペイロードは、アプリケーションのために運ばれるデータと、宛先システムが受信するデータです。
たとえば、私は電報を送信する必要があり、電報のコストはいくつかの単語に依存することは誰もが知っています。
では、以下の2つのメッセージのうち、どちらを送信する方が安いか教えてください。
<name>Arin</name>
または
"name": "Arin"
同じメッセージを表す2番目のメッセージの方がコストの点で安価ですが、あなたの答えは2番目のメッセージになるでしょう。
つまり、JSON形式でネットワーク経由でデータを送信する方が、ペイロードに関してXML形式で送信するよりも安価です。
SOAPに対するRESTの最初の利点または利点は次のとおりです。SOAPはXMLのみをサポートしますが、RESTはテキスト、JSON、XMLなどのさまざまな形式をサポートします。また、Jsonを使用すれば、ペイロードに関しては間違いなくより適切な場所になるでしょう。
現在、SOAPは唯一のXMLをサポートしていますが、利点もあります。
本当に!どうやって?
SOAPは、メッセージの内容と処理方法を定義する3つの方法EnvelopeでXMLに依存しています。
データ型のエンコーディングルールのセット、および最後に収集されたプロシージャの呼び出しと応答のレイアウト。
このエンベロープはトランスポート(HTTP / HTTPS)を介して送信され、RPC(リモートプロシージャコール)が実行されます。エンベロープは、XML形式のドキュメントの情報とともに返されます。
重要な点は、SOAPの利点の1つは「汎用」トランスポートの使用ですが、RESTはHTTP / HTTPSを使用することです。SOAPはほとんどすべてのトランスポートを使用してリクエストを送信できますが、RESTはできません。したがって、SOAPを使用する利点がここにあります。
上記の段落ですでに述べたように、「RESTはHTTP / HTTPSを使用する」ので、これらの単語についてもう少し詳しく説明します。
REST over HTTPについて話しているとき、HTTPに適用されるすべてのセキュリティ対策は継承されます。これはトランスポートレベルのセキュリティと呼ばれ、メッセージが回線内にある間だけメッセージを保護しますが、一度それを反対側に配信すると、わかりません。データが処理される実際のポイントに到達するまでに通過する必要があるステージの数。そしてもちろん、これらすべてのステージでHTTPとは異なるものを使用することもできます。だから休憩は完全に安全ではありませんよね?
ただし、SOAP は RESTと同様にSSLをサポートし、さらに、エンタープライズセキュリティ機能を追加するWS-Securityもサポートします。WS-Securityは、メッセージの作成から消費までの保護を提供します。したがって、トランスポートレベルのセキュリティについては、WS-Securityを使用して防ぐことができる抜け穴を見つけます。
それとは別に、RESTはHTTPプロトコルによって制限されているため、トランザクションサポートはACIDに準拠しておらず、分散された多国籍リソース全体で2フェーズコミットを提供できません。
しかし、SOAPは、存続期間の短いトランザクションのACIDベースのトランザクション管理と、長時間のトランザクションの補正ベースのトランザクション管理の両方を包括的にサポートしています。また、分散リソース全体での2フェーズコミットもサポートしています。
結論は出していませんが、SOAPベースのWebサービスを選択しますが、セキュリティ、トランザクションなどが主な関心事です。
以下は、「Java EE 6チュートリアル」です。RESTfulな設計は、次の条件を満たす場合に適していると述べています。見てください。
私の回答をお楽しみいただけましたら幸いです。