web-dev-qa-db-ja.com

RESTとSOAP Webサービスを比較して対比しますか?

私は現在、消費者とプロバイダーの間でデータを交換するためにインターネットプロトコル(HTTP)を使用していることを同様に理解しています。

違いは:

  1. SOAPはXMLベースのメッセージプロトコルであり、RESTはアーキテクチャスタイルです。
  2. SOAPはコンシューマとプロバイダー間の通信にWSDLを使用しますが、RESTはXMLまたはJSONを使用してデータを送受信するだけです
  3. SOAPはRPCメソッドを呼び出してサービスを呼び出します。RESTは単にURLパスを介してサービスを呼び出します
  4. SOAPは人間が読み取れる結果を返しませんが、RESTの結果はそのままのXMLまたはJSONで読み取ることができます
  5. SOAPはHTTP経由だけでなく、SMTP、FTPなどの他のプロトコルも使用します。RESTはHTTPのみ経由です

それがそれらの違いとして私が知っているすべてです。誰でも私を修正して追加できますか?.

74
Huppo

SOAPはコンシューマとプロバイダーの通信にWSDLを使用しますが、RESTはXMLまたはJSONを使用してデータを送受信するだけです

WSDLはクライアントとサービス間のコントラクトを定義し、その性質上静的です。 RESTの場合、コントラクトはやや複雑で、HTTP、URI、メディア形式、およびアプリケーション固有の調整プロトコルによって定義されます。 WSDLとは異なり、非常に動的です。

SOAPは人間が読み取れる結果を返しませんが、RESTの結果はそのままのXMLまたはJSONで読み取ることができます

本当じゃない。プレーンなXMLまたはJSONはRESTfulではありません。それらはいずれも、メッセージが自己完結型であり、エージェント/クライアントとサービス間の相互作用を調整する必要がある限り、RESTに対するコントロール(リンクおよびリンク関係、メソッド情報、エンコード情報など)を定義しません。 。

リンク+セマンティックリンクリレーションを使用すると、クライアントは次の対話ステップを決定し、これらのリンクをたどり、サービスとの通信を継続できるはずです。

メッセージは人間が読めるものである必要はありません。暗号形式を使用して完全に有効なRESTアプリケーションを構築することが可能です。メッセージが人間が読めるかどうかは関係ありません。

したがって、プレーンなXML(application/xml)またはJSON(application/json)は、RESTアプリケーションを構築するのに十分な形式ではありません。強力なセマンティックな意味を持ち、クライアントとサーバー間の相互作用を調整するのに十分な制御情報(リンクなど)を提供するこれらの汎用メディアタイプのサブセットを使用することは常に合理的です。

RESTはHTTPのみを使用します

真実ではありません。HTTPが最も広く使用されており、REST Webサービスについて話すときは、HTTPを想定しています。 HTTPは、そのメソッド(GET、POST、PUT、DELETE、PATCHなど)とリソースとの対話に均一に使用できるさまざまなヘッダーを持つインターフェイスを定義します。この均一性は、他のプロトコルでも実現できます。

追伸RESTの非常にシンプルで興味深い説明: http://www.looah.com/source/view/2284

54
ioseb

日々の実用的なプログラミング用語での最大の違いは、SOAPを使用すると、RESTおよびJSONデータ交換のフォーマットが非常に緩い静的で厳密に定義されたデータ交換フォーマットで作業しているという事実にあります比較して。たとえば、SOAPを使用すると、交換されたデータがXSDスキーマと一致することを検証できます。したがって、XSDは、クライアントとサーバーが交換されるデータをどのように構成する必要があるかを理解するための「契約」として機能します。

JSONデータは、通常は定義されていない形式で渡されます(それをサポートするフレームワークを使用している場合を除きます.. http ://msdn.Microsoft.com/en-us/library/jj870778.aspx またはjson-schemaの実装)。

実際、JSONの「動的な」秘密のソースは、データコントラクトによって制約するという哲学/文化に反すると主張する人もいます( JSON RESTful Webサービスはデータコントラクトを使用する必要があります

動的に緩やかに型付けされた言語で作業するのに慣れている人は、JSONの緩やかさをより快適に感じる傾向がありますが、強く型付けされた言語の開発者はXMLを好みます。

http://www.mnot.net/blog/2012/04/13/json_or_xml_just_decide

4
MikeM

SOAPは独自のプロトコルを提供し、データとしてではなくアプリケーションロジックの一部をサービスとして公開することに焦点を当てています。 SOAPは操作を公開します。 SOAPは、名前付き操作へのアクセスに重点を置いており、それぞれ異なるインターフェイスを介していくつかのビジネスロジックを実装します。

SOAPは一般に「Webサービス」と呼ばれますが、これは誤った呼び名です。 SOAPには、Webに関連するものはほとんどありません。 RESTは、URIおよびHTTPに基づいた真の「Webサービス」を提供します。

ここでは、例として、電話がほとんどなく、解説付きの適切な家があります。

getUser(User);

これは、リソース(データ)にアクセスしているため、残りの操作です。

switchCategory(User, OldCategory, NewCategory)

RESTは、SOAPがXMLのみを許可するさまざまなデータ形式を許可します。複数の形式を処理する必要があるため、これはRESTに複雑さを追加するように見えるかもしれませんが、私の経験では実際に非常に有益です。通常、JSONはデータにより適しており、解析がはるかに高速です。 RESTでは、JSONがサポートされているため、ブラウザークライアントのサポートが向上します。

0
Shiven