75

私は現在、消費者とプロバイダーの間でデータを交換するためにインターネットプロトコル(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のみを介します。

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

4

3 に答える 3

54

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など)およびリソースとの対話に一律に使用できるさまざまなヘッダーとのインターフェースを定義します。この均一性は、他のプロトコルでも実現できます。

PS RESTの非常にシンプルでありながら非常に興味深い説明:http ://www.looah.com/source/view/2284

于 2012-06-11T07:34:11.507 に答える
4

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

JSONデータは通常、厳密に定義された形式に従って渡されません(ただし、JSONデータをサポートするフレームワークを使用している場合を除きます。例:http: //msdn.microsoft.com/en-us/library/jj870778.aspxまたはjson-の実装スキーマ)。

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

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

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

于 2013-03-21T00:27:22.110 に答える
0

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

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

実例として、ここにいくつかの電話と解説付きの適切な家があります。

getUser(User);

これは、リソース(データ)にアクセスしているときのREST操作です。

switchCategory(User, OldCategory, NewCategory)

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

于 2012-06-11T07:20:49.580 に答える