これらの領域を考慮して、大まかな概要を説明することはできますが、あなたの結論を引き出すことはできません。2つのプロトコルが異なる2つの主要な領域があります。
メッセージ形式は最も理解しやすいです。要求と応答の両方のSOAPパッケージングはかなり重いです。ヘッダーセクションと本文セクションの両方を含むSOAPエンベロープがあります。ヘッダーをリクエストチェーン内の複数のフィルターで使用して、何らかの識別、承認などを実行できます。ただし、XMLの解析にはコストがかかり、システムのスケーラビリティに一定のペナルティが生じます。スタック内のSOAP処理レイヤーに依存する量。
サービスの発見は、おそらく最も多くの競合が発生する場所です。RESTはその性質上、予測可能なエンドポイントを提供し、リクエストのコンテンツは単純なHTTPリクエストです。利点は、追加のオーバーヘッドがないことです。エンドユーザーは、サイトのURL構造を理解すると、必要なことをどのように行うかをほとんど推測できます。もちろん、単純なセキュリティを意識した人々は、それを弱点とみなします。結局、SOAPでは、エンドポイントが何であるかを知るためにWSDLを消費する必要があります。もちろん、SOAPを使用すると、メッセージ形式全体が渡されるため、より標的を絞った攻撃を行うことができます。
指定したカテゴリ別に分類します。
セキュリティ
どちらも本質的に他より安全ではありません。適切なセキュリティ原則を使用します。
- 通信を暗号化する
- 処理する前に、ユーザーを認証して承認してください。
- 直接攻撃を避けるための優れたコーディング習慣
- そして、それはほんの短いリストです。
あいまいさを忘れないでください!=セキュリティ。
性能
生のパフォーマンスとスケーラビリティの両方が、単純なHTTPプロトコルに従う要求のためにRESTに移行します。ほとんどのSOAPスタックは、SOAPスタックのスケーラビリティを大幅に向上させるSAX解析(イベントベースの解析)を使用しますが、オーバーヘッドに測定可能な影響があります。SOAPには、XML解析のオーバーヘッドに加えて、通常のHTTP処理のオーバーヘッドがあります。RESTにはHTTP処理のオーバーヘッドがあります。
複雑
システムの観点からは、RESTが勝ちです。可動部品が少なく、リクエストチェーンがより少ないなどです。つまり、信頼性を高めるのが簡単です。
プログラマーの観点からは、使用しているIDEまたはフレームワークがSOAPを適切にサポートしていれば、SOAPが勝つことができます。基本的に、RESTを使用すると、前処理作業(認証/承認など)を実行する責任がありますが、SOAPを使用すると、プラグイン可能な処理チェーンを使用してその多くを達成できます。
私の好み
私はHTTPリクエストに非常に満足しており、Webの仕組みを知っています。結果として、RESTアプローチのほうが私にとってはより望ましい方法です。しかし、私のクライアントの一部がそれに不快であることを知っています。彼らは、REST対SOAPなどのセキュリティを非難するいくつかの業界記事を読みました。結局のところ、どちらのアプローチもセキュリティを保証しないということです。アプリケーションが必要なだけ安全であることを確認するのはあなたの責任です。明らかに、ソーシャルWebアプリケーションは、銀行や政府のシステムほどセキュリティを要求(または要求)しません。多くのSOAPスタックには、ある程度のセキュリティを提供するためにプラグインできるプロセッサが含まれていますが、それらを検索して適切な場所に配置するのは依然としてユーザーの責任です。