WSIF および WSDL
メタデータをベースとした Web Services Invocation Framework (WSIF) と、Web Services Description Language (WSDL) の 進化型セマンティクスの間には、密接な関係があります。
WSDL では、サービスは以下の 3 つのセクションで定義されます。
- portType。 このセクションは、サービスが提供する抽象インターフェースを定義します。 portType で定義されるのは、オペレーション のセットです。 各オペレーションは、In-Out (要求/応答)、In-Only、Out-Only、 Out-In (請求/応答) のいずれかです。 各オペレーションは、入力および/または出力のメッセージ を定義します。 メッセージは、パーツ の集合として定義されます。 また、個々のパーツのタイプはスキーマによって定義されます。
- バインディング。 このセクションは、抽象的な portType と、実際のサービス・フォーマット およびプロトコルとの間をマップする方法を定義します。 例えば、SOAP バインディングは、エンコード・スタイル、SOAPAction ヘッダー、本文の名前空間 (targetURI) などを定義します。
- ポート。 このセクションは、利用できるサービスのロケーション (エンドポイント) を定義します。 例えば、SOAP サービスが利用できる HTTP Web アドレスなどです。
現行の WSDL では、各ポートが保持できるバインディングは 1 つだけであり、 それぞれのバインディングは単一の portType を保持します。 しかし、(これが重要なのですが) 個々のサービス (PortType) は複数のポートを持つことができます。 それぞれのポートは、そのサービスにアクセスするための代替のロケーションとバインディングを表します。
Web Service Invocation Framework (WSIF) は、できる限り WSDL のセマンティクスに従います。
- WSIF の動的呼び出し API は、WSDL のモデルと等価な実行時モデルを直接公開します。 例えば、オペレーションの呼び出しには、入力メッセージによるオペレーションの実行が含まれます。
- WSDL には、新しいポートとバインディングの追加をサポートする拡張ポイントがあります。 これにより、WSDL は新しいシステムを作成することができます。 WSIF においてこれと等価な概念は、プロバイダーです。プロバイダーは、WSIF サービスを、そのサービスの基本実装にリンクします。これにより、WSIF は拡張機能のクラスを理解して、新しいサービス実装タイプをサポートすることができます。
メタデータを基にした呼び出しフレームワークとして、WSIF は、 メタデータの設計に従っています。 WSDL の拡張に伴って、WSIF も更新されます。
WSIF の主要な型システムは、XML スキーマです。WSIF は、動的プロキシーを使用した呼び出しをサポートしており、 動的プロキシーは Java™ 型システムをサポートしています。 しかし、WSIFMessage インターフェースを使用して、WSIF API を介した Web サービスの呼び出しを行うには、WSDL 文書で定義されている XML スキーマの型に基づくデータを WSIFMessage オブジェクトに取り込む必要があります。オブジェクト型は、スキーマ型からランタイム環境への標準的な固定マッピングによって定義する必要があります。