なぜ SOAP ベースのサービスではなく REST を使用するのでしょうか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/90451

  •  01-07-2019
  •  | 
  •  

質問

しかし、今日 REST に関する興味深いデモに参加しましたが、REST が SOAP ベースのサービス スタックよりも使用および実装がとにかく優れている、または簡単である理由を 1 つも思いつきませんでした (また、その理由も提示されませんでした)。

「現実世界」では SOAP ベースのサービスではなく REST を使用する人がいる理由は何ですか?

役に立ちましたか?

解決

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

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

より標準化された - HTTP 操作はよく理解されており、一貫して動作します。一部の SOAP 実装は扱いにくい場合があります。

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

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

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

他のヒント

RESTful サービスは利用するのがはるかに簡単です 石鹸 ベースの(定期的な)サービス。その理由は、REST は通常の HTTP リクエストに基づいており、行われるリクエストのタイプ (GET = 取得、POST = 書き込み、DELETE = 削除など) から意図を推測でき、完全にステートレスであるためです。一方で、リクエスト コンテキストを含むメッセージ エンベロープの概念が廃止されているため、柔軟性が低いと主張することもできます。

私の経験では、企業内のサービスには SOAP が好まれ、パブリック API として公開されるサービスには REST が好まれてきました。

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

関連する読み物:

「Web サービス」というときは、SOAP および WS-* の標準セットを意味すると仮定します。(そうでない場合、REST サービスは "ウェブサービス"。)

標準的な議論は、REST サービスが Web の設計、つまり HTTP および関連インフラストラクチャの設計により近いということです。したがって、REST サービスを使用すると、既存の Web ツールや技術との互換性が高まります。

もちろん、詳細を詳しく調べてみると、両方のアプローチがさまざまなシナリオで長所を持っていることがわかります。あなたが興味があるのはその詳細ですか?

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

REST はプロトコルではなく、優れたスケーラブルな設計を促進するアーキテクチャです。RPC の自由度が高すぎると設計が粗末になりやすいため、これがよく選択されます。

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

REST は実装に依存せず、より透明性が高いため、パブリック API、特に API をマーケティング ツールとして使用し、人々にデータを利用してもらいたいと考えている Flickr、Amazon、Digg などの大規模な Web サイトに最適です。彼らは しないでください 選択したスクリプト言語のバグだらけの SOAP ライブラリをデバッグしようとしている数千人の初心者開発者を手元に置きたいと考えています。

SOAP や WSDL と比較すると、SOAP や WSDL は、ドロップイン ライブラリや既知の有力者が両端に存在する内部アプリケーションに適しています。(そして、インターネット規模の負荷分散や HTTP キャッシュなどについて気にする必要もないかもしれません。) 次に、自己文書化された、型を保持する API を取得します。仕事ゼロで。

ロイ・フィールディングの最も優れた本を読まなければなりません 論文 話題になっている。彼は素晴らしい主張をしており、間違いなくそうだった 方法 彼がこの本を書いたとき(2000 年)は、時代を先取りしていた。

スティーブ・ヴィノスキーのブログ そして彼の 最新記事 ぜひ一読の価値があります。彼は元 CORBA の第一人者で、このテーマに関しておそらく最高の本をミチ・ヘニングとともに執筆しました。 「C++ を使用した高度な CORBA® プログラミング」. 。しかし、その後、彼はクライアント/サーバーのやり方の誤りに気づき、今では REST を支持することを誓っています。

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

REST は基本的には Web サービスを実装するための単なる手段です。これは、HTTP を正しく使用して、アクセスしようとしている Web サービスをクエリする方法にすぎません。

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

とてもシンプルでスリムです。http動詞を介してブラウザでそれを行うことができます。得る。一般的な http POST リクエストを手動で簡単に実行できるブラウザが見つかりませんでした

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

REST は実装が簡単で、理解しやすく、パフォーマンスが高くなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top