今日、RESTに関する興味深いデモに参加しましたが、RESTがSOAPベースのサービススタックよりも使いやすく、実装が簡単である1つの理由(または1つの理由もありません)を考えることができませんでした。
「実世界」の誰もがSOAPベースのサービスの代わりにRESTを使用する理由のいくつかは何ですか?
今日、RESTに関する興味深いデモに参加しましたが、RESTがSOAPベースのサービススタックよりも使いやすく、実装が簡単である1つの理由(または1つの理由もありません)を考えることができませんでした。
「実世界」の誰もがSOAPベースのサービスの代わりにRESTを使用する理由のいくつかは何ですか?
回答:
オーバーヘッドが少ない(すべての呼び出しをラップするSOAPエンベロープがない)
重複が少ない(HTTPは、そうでなければSOAPエンベロープで表す必要があるDELETE、PUT、GETなどの操作をすでに表しています)。
より標準化された-HTTP操作はよく理解され、一貫して動作します。一部のSOAP実装は厄介なものになる可能性があります。
人間がより読みやすく、テスト可能(ブラウザだけでSOAPをテストするのは難しい)。
XMLを使用する必要はありません(SOAPの必要もありませんが、既にエンベロープの解析を行っているため、ほとんど意味がありません)。
ライブラリにより、SOAP(一種)が簡単になりました。しかし、私が指摘したように、あなたはその下にある多くの冗長性を抽象化しています。はい、理論的には、SOAPは他のトランスポートを経由して、同じようなことをするレイヤーの上に乗ることを回避できますが、実際には、SOAPの作業のほとんどすべてがHTTPを介して行われます。
RESTfulサービスは、SOAPベースの(通常の)サービスよりもはるかに簡単に使用できます。これは、RESTが通常のHTTPリクエストに基づいているため、行われるリクエストのタイプ(GET =取得、POST =書き込み、DELETE =削除など)からインテントを推測できるためであり、完全にステートレスです。一方、リクエストコンテキストを含むメッセージエンベロープの概念がなくなるため、柔軟性が低いと主張できます。
私の経験では、SOAPは企業内のサービスに、RESTはパブリックAPIとして公開されるサービスに好まれています。
.NETフレームワークのWCFなどのツールを使用すると、サービスをRESTまたはSOAPとして実装するのは非常に簡単です。
関連する読み物:
オーバーヘッドは、優れたアーキテクチャほど重要ではありません。
RESTはプロトコルではなく、優れたスケーラブルな設計を促進するアーキテクチャーです。RPCの自由度が高すぎると、設計が悪くなる可能性があるため、多くの場合、これが選択されます。
もう1つの理由は、既存のテクノロジー(主にプロキシ)を利用できるため、HTTPを介したRESTfulプロトコルの予測可能なコストです。RPCの初期コストは非常に低いですが、負荷が大きくなると大幅に増加する傾向があります。
RESTは実装に依存せず、はるかに透過的です。これは、パブリックAPI、特にAPIをマーケティングツールとして使用し、人々にデータを消費してもらいたいFlickr、Amazon、Diggなどの大きなWebサイトに最適です。彼らは、選択したスクリプト言語のバグの多いSOAPライブラリをデバッグしようとしている何千人もの初心者開発者を手にしたくはありません。
SOAPとWSDLは、内部アプリケーションに適しています。ドロップインライブラリと既知の巧妙な人々が両端にいます。(そして、インターネット規模の負荷分散、HTTPキャッシングなどのことを気にする必要がないかもしれません。)次に、自己文書化されたAPIを取得し、ゼロの作業で型を保持します。
Steve Vinoskiのブログと彼の最新の記事は間違いなく読む価値があります。彼はかつてのCORBAの第一人者であり、Michi Henningの主題に関するおそらく最高の本、「C ++によるAdvancedCORBA®プログラミング」を執筆しました。しかし、彼はクライアント/サーバーの方法のエラーを見て以来、RESTに誓います。
RESTを使用すると、変化しない操作(通常はGET動詞を使用)をキャッシュできます。つまり、クライアントによってキャッシュされるか、プロキシによってキャッシュされます。これは大きな勝利になる可能性があります。
RESTは基本的にWebサービスを実装するための単なる方法です。これは、HTTPを正しく使用して、ヒットしようとしているWebサービスにクエリを実行する方法にすぎません。
http://www.xfront.com/REST-Web-Services.html http://en.wikipedia.org/wiki/Representational_State_Transfer
超シンプルでスリムです。ブラウザでhttp動詞:GETを介して実行できます。ブラウザが一般的なhttp POSTリクエストを手動で簡単に実行できることがわかりません
ここに1つのデータポイントがあります。AmazonはAPIをRESTとSOAPの両方の形式で提供しており、使用の85%はRESTです。
RESTは実装が簡単で、理解しやすく、パフォーマンスが向上しています。