web-dev-qa-db-ja.com

なぜRESTベースのサービスの代わりにSOAPを使用するのでしょうか?

REST今日、興味深いデモに参加しましたが、RESTがとにかく優れているか、 SOAPベースのサービススタックよりも使用および実装が簡単です。

「実世界」の誰かがRESTベースのサービスの代わりにSOAPを使用する理由は何ですか?

150
AngryHacker

より少ないオーバーヘッド(すべての呼び出しをラップするSOAPエンベロープなし)

重複が少ない(HTTPは既にDELETE、PUT、GETなどの操作を表しますが、それ以外の場合はSOAPエンベロープで表す必要があります)。

より標準化された-HTTP操作はよく理解され、一貫して動作します。いくつかのSOAP実装は細心の注意を払うことができます。

人間が読みやすく、テストしやすい(ブラウザだけではSOAPをテストするのが難しい)。

XMLを使用する必要はありません(SOAPにも使用する必要はありませんが、既にエンベロープの解析を行っているため、ほとんど意味がありません)。

ライブラリにより、SOAP(種類)が簡単になりました。しかし、私が述べたように、あなたはその下に多くの冗長性を抽象化しています。はい、理論的にはSOAPは他のトランスポートを介して同様のことをするレイヤーの上に乗ることを避けることができますが、実際にはあなたがやるほぼすべてのSOAP作業はHTTPを介して行われます。

RESTful サービスは [〜#〜] soap [〜#〜] ベースの(通常の)サービスよりもはるかに簡単に消費できます。この理由は、RESTは通常のHTTPリクエストに基づいているため、作成されているリクエストのタイプから意図を推測することができます(GET = retrive、POST =書き込み、DELETE =削除など)、完全にステートレスである一方、リクエストコンテキストを含むメッセージエンベロープの概念を排除するため、柔軟性が低下していると主張することができます。

私の経験では、SOAP=はエンタープライズ内のサービスに優先され、RESTはパブリックAPIとして公開されるサービスに優先されます。

.NETフレームワークのWCFなどのツールを使用すると、サービスをRESTまたはSOAPとして実装するのは非常に簡単です。

関連する読み物:

36
Eric Schoonover

「Webサービス」と言うときは、SOAPとWS- *標準セットを意味すると想定します。 (そうでなければ、RESTサービスare "Webサービス"と主張できます。)

正規の引数は、RESTサービスがWebの設計、つまりHTTPおよび関連インフラストラクチャの設計により近いことです。したがって、RESTサービスを使用すると、既存のWebツールおよび手法との互換性が向上します。

もちろん、詳細を掘り下げると、両方のアプローチが異なるシナリオで長所を持つことがわかります。あなたが興味を持っているのはそれらの詳細ですか?

13
Bruce

オーバーヘッドは、優れたアーキテクチャほど重要ではありません。

RESTはプロトコルではなく、優れたスケーラブルな設計を促進するアーキテクチャです。多くの場合、RPCの自由度が高すぎると設計が不十分になる可能性があるため、この方法が選択されます。

もう1つの理由は、既存のテクノロジー(主にプロキシー)を活用できるため、HTTPを介したRESTfulプロトコルの予測可能なコストです。 RPCの初期コストは非常に低くなりますが、負荷が増大すると大幅に増加する傾向があります。

10
Piotr Czapla

トピックについて、Roy Fieldingの最も優れた 論文 を読みました。彼は素晴らしいケースを作り、間違いなく[〜#〜] way [〜#〜]を書いたとき(2000)でした。

7
Piko

RESTは実装に依存せず、はるかに透過的です。これにより、パブリックAPI、特にAPIをマーケティングツールとして使用し、人々にデータを消費させたいFlickr、Amazon、Diggなどの大規模なWebサイトに最適です。彼らはdo n't好みのスクリプト言語をデバッグしようとしている何千人もの初心者開発者の手に持っておきたいSOAPライブラリ。

Versus SOAPおよびWSDL。これは、両端にドロップインライブラリと知名度の高い人々がいる内部アプリケーションに適しています。(インターネットのようなことを気にする必要はないかもしれません。スケールロードバランシング、HTTPキャッシュなど)その後、自己文書化されたAPIを取得し、型などをゼロの作業で保持します。

7
joelhardi

Steve Vinoskiのブログ と彼の の最新記事 は間違いなく読む価値があります。彼は元CORBAの第一人者であり、Michi Henningによる主題に関するおそらく最高の本を書いた 「AdvancedCORBA®Programming with C++」 。しかし、彼はそれ以来、クライアント/サーバーのやり方の誤りを見てきました。そして今、RESTに誓っています。

6
Jason Etheridge

RESTを使用すると、非変更操​​作(通常はGET動詞を使用)をcachedにできます。つまり、クライアントによってキャッシュされるか、プロキシによってキャッシュされます。これは大きな勝利になる可能性があります!

5
David

基本的に、RESTはWebサービスを実装するための単なる方法です。 HTTPを正しく使用して、ヒットしようとしているWebサービスを照会する方法にすぎません。

http://www.xfront.com/REST-Web-Services.htmlhttp://en.wikipedia.org/wiki/Representational_State_Transfer

3
Eric Holscher

ここに1つのデータポイントがあります。Amazonは、RESTとSOAP形式の両方でAPIを提供しており、使用率の85%はRESTです。

RESTは実装が簡単で、理解しやすく、パフォーマンスが向上しています。

0
pbreitenbach

超シンプルでスリムです。ブラウザでhttp動詞を使用して実行できます:GET。ブラウザーが手動で一般的なhttp POST要求を簡単に実行できることを発見していません

0
Ray Lu