web-dev-qa-db-ja.com

WebサービスをSOAPまたはRESTサービスとして)公開することを選択する際の決定要因は何ですか?

私が見る限り、SOAPにはSOAPスタックが必要なので、クライアントが消費するのはより困難です。つまり、クライアントが= SOAPデータを適切にスタックし、POSTデータとヘッダーを適切にスタックしてから、データ構造を返しますが、REST =クエリ文字列に引数を指定してHTTP GETリクエストを作成し、おそらくXMLと思われるテキストを返します。

では、SOAPの追加のオーバーヘッド/複雑さは何を必要としますか、いつそれが必要で、いつそれなしで実行できるのでしょうか?

30
user23157

私はREST APIを以前に実装しましたが、私はそれがとても気に入りました。一般的に、SOAPで[〜#〜] rest [〜#〜]を実装する場合、あなたの- クライアント/サーバーの方が直交しているクライアントに影響を与えることなく、サーバーをより自由に変更できることを意味します。この直交性は、HTTP動詞を介して、より抽象的で既に明確な通信を使用しているためです。 、REST応答に埋め込まれたハイパーリンクを使用すると、APIを比較的簡単に拡張および拡張することが容易になります。クライアントは、人間が従うような新しいリソースにアクセスするためにこれらの埋め込まれたリンクをたどる必要があります詳細については、「ドリルダウン」へのWebページ上のリンク。

そうは言っても、SOAPを使用する必要があると言われた同僚が何人かいて、いつもそれについて不満を言っていたので、私は2つをさらに詳細に調査しました。

一般的に私が見つけたのは、数百、数千、または数百万のクライアントの場合、RESTは高度に分散されたアプリケーションに適していますです。 1つの理由は、上記の直交性であり、もう1つは、HTTPを使用しているため無料で取得できるキャッシュです。

SOAPは、1つまたは2つのクライアントに小さなAPIをすばやく必要とし、スケーラビリティについてあまり心配していない場合に、より迅速な方法になるかもしれません。 resourcesを中心に構造化されたアーキテクチャーがない場合も、RESTを実装できるようにアプリを再構築するのに時間がかかる可能性があるため、より適しています。

17
c_maker

些細なことかもしれませんが、RESTは完全にHTTPに基づいています。

SOAPはHTTPを必要とせず、好きなトランスポートを自由に使用できます。

SOAPメッセージは非同期で確実にルーティングできますが、RESTはほとんど同期パラダイムです。

RESTは、送受信するデータがどのように見えるかについては何も通知しません。 WADLはありますが、ほとんどの場合、APIのドキュメントが正しいことに依存しています。 SOAPには、データ記述のエラーを少なくするためのXMLテクノロジーのサーカスがあります。WSDL、スキーマ...

一日の終わりにRESTは基本的にHTTPベースのファイルシステムを取得します。システムがそのパラダイムに適合できる場合、それは良い選択かもしれません。

17
sylvanaar

では、SOAPの追加のオーバーヘッド/複雑さは何を必要としますか、いつそれが必要で、いつそれなしで実行できるのでしょうか?

2つの最大の違いはRESTはステートレスであると想定され、ここでSOAPはないです。実際には多くのREST =実際の実装では、OAuthなどを使用してセッションの状態を実装します。

別の違いはRESTは非常に「リソース」または名詞指向です。 CRUD操作を通じてリソースを操作します。このパラダイムに適合しないものは、扱いにくく厄介なものになります。

一方、SOAPはRPC(リモートプロシージャコール)プロトコルです。これにはパラダイムが付属しておらず、単なるトランスポート層です。

7
dietbuddha

RESTはポストも使用します。 RESTを使用している場合は実際のところ、http動詞はどの操作が行われているかを示します。

RESTとSOAPは、インターネットを介してデータを渡す標準とはまったく異なります。

両方を使用したので、Webサービスを利用する人が.netとVisual Studioを使用していることを知らない限り、RESTではなくSOAPを使用することをお勧めします。 。SOAPを使用するときにほとんどの作業を行う.net VSを除いて、REST Webサービスを使用するほうがはるかに簡単です。

4
Tom Squires

私が言及する1つのことは相互運用性です-.NETで書かれたアプリからサービスを呼び出すつもりで、サーバーがJava(または他の任意の組み合わせ))で書かれている場合は、RESTに進みます。SOAPの実装間のわずかな非互換性が多すぎて、これ以上検討するのが面倒だと思いました。

4
gbjbaanb

アプリケーションの要件に対してSOAPおよびRESTを測定するのに役立つシンプルで視覚的なガイドが必要な場合...

Vijay Prasad Guptaは、シンプルで役立つフローチャートをまとめました。

フローチャートへの直接リンク: https://drive.google.com/file/d/0B3zMtAq1Rf-sdVFNdThvNmZWRGc/edit

記事へのリンク: https://www.linkedin.com/Pulse/20140818062318-7933571-soap-vs-rest-flowchart-to-determine-the-right-web-services-protocol-for-your-ニーズ

1
JTech