この項目ではサービス指向アーキテクチャー (SOA) における Web サービスの使用法を説明します。
Web サービスを使用して SOA をインプリメントできます。Web サービスで主要な点は、 プラットフォームとプログラム言語から独立した標準インターネット・プロトコルを介してアクセスできる、 機能的なビルディング・ブロックを作成することです。 これらのサービスは、新規アプリケーションであることも、 あるいはそれらをネットワーク対応にするために、 既存のレガシー・システムを改良しただけのものであることもあります。 サービスは、別のサービスに依存して、その目標を達成できます。
サービス・プロバイダーは、Web サービスを作成し、 そのインターフェースを公開して、サービス・レジストリーへの情報にアクセスします。 各プロバイダーは、公開するサービス、セキュリティーと利便性をトレードオフする方法、 サービスに価格を付ける方法、または無料サービスを他の価値のために利 用する方法を決定する必要があります。 プロバイダーは、所定のブローカー・サービスに対してサービスをリストする際のカテゴリーと、 サービスを使用するために必要な取引先の契約の種類も決定する必要があります。
サービス・ブローカー (サービス・レジストリー とも呼ばれる) は、 Web サービス・インターフェースおよびインプリメンテーション・アクセス情報を、 潜在的なすべてのサービス・リクエスターに使用できるようにする役割があります。 ブローカーのインプリメンターは、ブローカーのスコープを決定します。 パブリック・ブローカーがインターネット全体で使用可能であるのに対して、 プライベート・ブローカーには限定された対象者 (例えば、社内イントラネットのユーザー) しかアクセスできません。 さらに、提供される情報の量についていくつかの決定を行う必要があります。 一部のブローカーは、リスト内容の多さを専門にしています。 信頼性の高いリスト・サービスを提供するブローカーもあります。 また、幅広いサービスをカバーするブローカーもあれば、業界内に焦点を当てるブローカーもあります。 一部のブローカーは、他のブローカーをカタログします。 ビジネス・モデルによっては、 ブローカーはルックアップ要求、リストの数、またはリストの精度を最大化 を試行できます。 Universal Description, Discovery and Integration (UDDI) 仕様には、 Web サービスに関する情報を公開したり、検出したりする方法が定義されています。
サービス・リクエスター、すなわち Web サービス・クライアントは、 その Web サービスのいずれかを呼び出すために、 さまざまな検索操作を使用してブローカー・レジストリー内の項目を検索した後、 サービス・プロバイダーにバインドします。
SOA の特性
サービス指向アーキテクチャーのプロパティー
クライアント・サイドでは、ソフトウェアを追加する必要はありません。 開始に際しては、 Extensible Markup Language (XML) および HTTP クライアントをサポートするプログラム言語を使用すれば十分です。 サーバー・サイドで必要なのは、Web サーバーと SOAP サーバーです。 コードを 1 行も作成せずに、 既存のアプリケーションを Web サービス用に使用可能にすることができます。
クライアントとサーバーのいずれも、 要求と応答メッセージのフォーマットと内容以外は何も認識せず、管理しません。(疎結合アプリケーション統合) メッセージ・フォーマットの定義は、 メッセージとともに伝送されます。 外部メタデータ・リポジトリーやコード生成ツールは必要ありません。
このテクノロジーは、確立された軽量のインターネット基準 (HTTP など) を使用して、 既存のインフラストラクチャーを活用します。 必要なその他の標準としては、 SOAP、Web サービス記述言語 (WSDL)、および UDDI があります。
クライアントとサーバーは、異なる環境にインプリメントすることができます。 Web サービス対応にするために既存のコードを変更する必要はありません。
XML および HTTP は、Web サービスの主な技術基盤です。 Web サービス・テクノロジーの大部分は、オープン・ソース・プロジェクトを使用して構築されています。
動的 e-business は、Web サービスを使用して実現されます。 これは、UDDI と WSDL では、Web サービスの記述とディスカバリーを自動化できるためです。
単純な複数の Web サービスは、ワークフロー技法の使用、 あるいは Web サービス・インプリメンテーションからの下位層の Web サービスの呼び出しにより、 より複雑なサービスへと集約できます。 Web サービスを 1 つにチェーニングすると、 より高水準のビジネス機能を実行できます。 このチェーニングにより、開発時間が短縮され、 最良のインプリメンテーションが可能になります。
従来のアプリケーション設計では、 両端での緊密な相互接続に依存していました。 Web サービスでは、より単純なレベルでの調整を行う必要があります。 これにより、サービスの統合をより柔軟に再構成することがサポートされるようになります。
このアプローチは、グラフィカル・ユーザー・インターフェースを提供せず、 コード・レベルで作動します。 サービス利用者は、Web サービスへのインターフェースを把握している必要がありますが、 サービスのインプリメンテーションの詳細は知らなくてもかまいません。
既存のスタンドアロン・アプリケーションは、Web サービスをインターフェースとしてインプリメントすることにより、SOA に容易に統合することができます。