スポンサーリンク

【応用情報技術者試験】RESTとSOAPの主な違い

ネットワーク通信の基本|IP・TCP・UDP・ICMP ネットワーク

RESTとSOAPは、同じ種類の規則ではありません。RESTは設計上の制約をまとめたアーキテクチャスタイル、SOAPはXMLを使うメッセージングのプロトコルです。「RESTは速い、SOAPは安全」という二択で覚えると、設計条件を見落とします。

比較表

観点 REST SOAP
分類 アーキテクチャスタイル メッセージングのプロトコル
データの表現 JSON・XML等。JSON専用ではない SOAPのメッセージ構造はXMLで記述
HTTPとの関係 Web APIではHTTPの意味や機能を利用する HTTP等の下位プロトコルに結合して運ぶ
状態の扱い 要求間の会話状態に依存しない制約 SOAP自体は状態保持を必須にしない
関連する仕組み URI、メソッド、キャッシュ、表現等 Envelope・Header・Body、WSDLや各種拡張等

安全性は名称だけで決まらない

どちらも認証・認可、通信やメッセージの保護、入力検証、鍵や証明書の管理が必要です。SOAPにはWS-Security等を組み合わせる設計がありますが、基本仕様だけで暗号化や配信保証が全て付くわけではありません。REST方式でも必要な保護を設計できます。

速度・規模も条件を比較する

メッセージの大きさ、呼出し回数、圧縮、キャッシュ、接続の扱い、サーバー処理によって性能は変わります。SOAPは必ず状態を保持するから拡張できない、RESTは必ず高速という一般化は正しくありません。

使い分けを判断する順番

  1. 連携先が対応する形式・操作・既存契約を確認する。
  2. 認証、メッセージ保護、再試行や重複処理の要件を決める。
  3. 使用する関連仕様と運用方法を双方で合わせる。
  4. 実際のデータ量と呼出し方で性能を確認する。

既存のSOAPサービスと連携するなら、その契約に対応する必要があります。新しいAPIでも、用途と制約を踏まえて設計します。業種名だけで方式を決めないようにしましょう。

確認問題:SOAPでは必ずサーバーがクライアントの会話状態を保持する?

いいえ。SOAPの基本仕様は、そのような状態保持を必須にしていません。

関連する記事

通信の基礎をnoteで復習する

比較の前提となる、メッセージを運ぶ層と通信プロトコルの役割を整理できます。

OSI基本参照モデルのnote教材で、通信の役割を整理する

この教材は通信階層の復習用です。本記事の個別仕様を詳説する教材ではありません。

note教材ナビで次の学習テーマを選ぶ

参考資料

W3C:SOAP 1.2仕様

Roy Fielding:RESTの制約

コメント