Web サービスのアーキテクチャー・スタイル

Web サービスは、リモート・プロシージャー・コール (RPC)、 Representational State Transfer (REST) に関連付けられている文書指向スタイル、または REST-RPC と呼ばれるハイブリッド・スタイルを表します。

Web サービスは従来、RPC スタイルに準拠します。ビジネス固有の操作名 (UpdateEmployeeData など) と一連の引数を、関数を呼び出す場合と同様に使用します。多くの場合、戻り値が必要とされます。

RESTful スタイルは、最大限でも 1 つのビジネス・データ単位の転送をベースとしています。サービス実装は、必要な処理をすべて実行できますが、操作名は汎用です。例えば、操作名として GET や UPDATE などがあります。

RESTful スタイルでは詳細が隠蔽されます。例えば、従業員レコードは、データの処理方法に関係なく、複数の手法の中の 1 つの手法でのみ処理されるとします。ビジネス固有の操作名 (例: UpdateEmployeeData) は、操作の実行内容を判別する上では役に立ちません。

REST-RPC サービスは、ビジネス固有の操作名を使用します。通常、このサービスは RPC スタイルのデータ交換を使用しますが、従来型の Web サービスの処理に必要な複雑な管理ファイルは使用しません。

RPC スタイルの SOAP サービス

従来型 Web サービスは、SOAP フォーマットでデータを受信し、返します。SOAP エンベロープは、HTTP エンティティー本体の 1 次コンテンツです。
<Envelope>
   <Header>
      <!-- QoS のためここに SOAP ヘッダーを配置 -->
   </Header>
   <Body>
      <!-- ビジネス・データ -->
   </Body>
</Envelope>

SOAP メッセージは複雑ではありません。ヘッダーはセキュリティーおよびサービス調整をサポートできるようになっており、 SOAP の主要なメリットを実現するものです。本体には、サービス要求時にサービス実装によって使用されるデータ、またはサービス応答時にリクエスターによって使用されるデータが含まれています。

従来型の Web サービスでは、SOAP エンベロープの内容は、複雑な Web サービス記述言語 (WSDL) ファイルの内容に関連しています。これらのファイルは以下の状況で使用されます。
  • サービス設計時に、開発者やその他の設計者にサービス・インターフェースについて伝達する場合。
  • リクエスターの開発時に、開発者がサービス内で交換するデータを定義するプロセスを支援する場合。
  • 実行時に、サービスの場所を指定し、SOAP メッセージの実行時検証を可能にする場合。

従来のテクノロジーでは、リクエスターが異なる場所にある同名のサービスにアクセスできるようにするために、リクエスターが実行時に使用する WSDL ファイルを更新できました。 この方法では、買収などに伴う技術変更に迅速に対応できます。

開発者とデプロイメント担当者は、自動ツールを使用して WSDL ファイルを処理します。

REST サービス

場合によっては、REST サービスは Web 機能を使用して RESTful スタイルに準拠します。RESTful スタイルでは、1 つのビジネス・データ単位 (存在する場合) を転送し、限定された操作名のセットを使用します。また、サービス・アドレスに、操作対象データに関する情報が含まれています。例えば 3 つの修飾子で構成される次のアドレスがあるとします。
www.example.com/employee/123

このアドレスの参照先は Web ページではなく、2 番目の修飾子が示すように従業員に関する情報です。特に、このアドレスは特定の従業員 (番号 123) の情報を参照しています (3 番目の修飾子)。

Web サイトと REST サービスはいずれも複数のアドレスに関連付けられています。Web サイトの場合、アドレスから Web ページにアクセスできます。REST サービスの場合、アドレスからビジネス・データ単位にアクセスできます。

REST サービスは、以下の 4 つの操作のうち 1 つ以上を提供します。
  • GET (データの読み取り)
  • POST (データの作成)
  • PUT (データの更新)
  • DELETE (データの削除)
これらの操作は、HTTP 要求メッセージに指定できる主要な HTTP メソッドに対応しています。

REST サービスでは一般に WSDL 定義は使用されません。

REST サービスに HTTP メッセージが使用される場合、エンティティー本体にビジネス・データが Extensible Markup Language (XML) または JavaScriptObject Notation (JSON) 形式で保持されることがよくあります。ほとんどの場合、SOAP エンベロープは存在しません。

作成者の中には、REST サービスとのデータ交換に SOAP エンベロープをより活用できること、または少なくとも SOA ランタイム・ソフトウェアが QoS の問題をより適切に処理できるように SOAP (または HTTP) ヘッダーを活用できることを期待している人がいます。

このトピックの情報では、REST サービスと SOAP サービスを区別していますが、実際には RPC スタイルと RESTful スタイルが区別されます。 REST について詳しくは、『開発者向けの REST の概要』を参照してください。

追加情報のソース

REST の入門として詳しいのは、Richardson および Ruby の「Restful Web Services」 (O'Reilly Media, Inc., May 2007) です。

サービス相互作用およびいくつかの RPC 関連テクノロジーの概要については、「SOA for the Business Developer」(Margolis and Sharpe (MC Press, May 2007)) を参照してください。これには、次の領域の概要も説明されています。
  • Extensible Markup Language (XML)。これは Web サービスで使用されている SOAP フォーマットの基本であり、REST サービスと交換されるメッセージの基本である場合もあります。
  • XML スキーマ。これは本質的には、XML の検証に使用されるコードです。

上記の情報には、「Enterprise Web 2.0 with EGL」(MC Press, 2009; http://www.mc-store.com/5107.html) からの抜粋が含まれます。


フィードバック