Web サービスは、リモート・プロシージャー・コール (RPC)、 Representational State Transfer (REST) に関連付けられている文書指向スタイル、または REST-RPC と呼ばれるハイブリッド・スタイルを表します。
Web サービスは従来、RPC スタイルに準拠します。ビジネス固有の操作名 (UpdateEmployeeData など) と一連の引数を、関数を呼び出す場合と同様に使用します。多くの場合、戻り値が必要とされます。
RESTful スタイルは、最大限でも 1 つのビジネス・データ単位の転送をベースとしています。サービス実装は、必要な処理をすべて実行できますが、操作名は汎用です。例えば、操作名として GET や UPDATE などがあります。
RESTful スタイルでは詳細が隠蔽されます。例えば、従業員レコードは、データの処理方法に関係なく、複数の手法の中の 1 つの手法でのみ処理されるとします。ビジネス固有の操作名 (例: UpdateEmployeeData) は、操作の実行内容を判別する上では役に立ちません。
REST-RPC サービスは、ビジネス固有の操作名を使用します。通常、このサービスは RPC スタイルのデータ交換を使用しますが、従来型の Web サービスの処理に必要な複雑な管理ファイルは使用しません。
<Envelope>
<Header>
<!-- QoS のためここに SOAP ヘッダーを配置 -->
</Header>
<Body>
<!-- ビジネス・データ -->
</Body>
</Envelope>
SOAP メッセージは複雑ではありません。ヘッダーはセキュリティーおよびサービス調整をサポートできるようになっており、 SOAP の主要なメリットを実現するものです。本体には、サービス要求時にサービス実装によって使用されるデータ、またはサービス応答時にリクエスターによって使用されるデータが含まれています。
従来のテクノロジーでは、リクエスターが異なる場所にある同名のサービスにアクセスできるようにするために、リクエスターが実行時に使用する WSDL ファイルを更新できました。 この方法では、買収などに伴う技術変更に迅速に対応できます。
開発者とデプロイメント担当者は、自動ツールを使用して WSDL ファイルを処理します。
www.example.com/employee/123
このアドレスの参照先は Web ページではなく、2 番目の修飾子が示すように従業員に関する情報です。特に、このアドレスは特定の従業員 (番号 123) の情報を参照しています (3 番目の修飾子)。
Web サイトと REST サービスはいずれも複数のアドレスに関連付けられています。Web サイトの場合、アドレスから Web ページにアクセスできます。REST サービスの場合、アドレスからビジネス・データ単位にアクセスできます。
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) です。
上記の情報には、「Enterprise Web 2.0 with EGL」(MC Press, 2009; http://www.mc-store.com/5107.html) からの抜粋が含まれます。