| 開発者 | Apache ソフトウェア財団 |
|---|---|
| 安定版リリース | 2.0 / 2003年1月27日 |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | ウェブサービス |
| ライセンス | Apache ライセンス2.0 |
| Webサイト | ws.apache.org/wsif |
Webサービス呼び出しフレームワーク(WSIF) は、 Web サービス記述言語(WSDL) で記述されたサービスを呼び出すためのシンプルで柔軟なJava API (アプリケーション プログラミング インターフェイス)をサポートします。
WSIF を使用すると、WSDL は、異なるプロトコルを使用するさまざまなプラットフォームで実行されているソフトウェアにアクセスするための統合フレームワークの中心となることができます。ソフトウェアは WSDL を使用して記述する必要があり、その記述には、クライアントの WSIF フレームワークがプロバイダーを持つバインディングが含まれている必要があります[明確化が必要] 。WSIF は、ローカル Java、 Enterprise JavaBeans (EJB)、Java Message Service (JMS)、およびJava EE Connector Architecture (JCA) プロトコルのプロバイダーを定義し、パッケージ化されています。つまり、クライアントは、EJB またはJava Message Service がアクセス可能なサービスを WSDL バインディングとして直接定義し、 SOAP サービスまたはローカル Java クラス に使用するのと同じ API を使用して、WSIF を使用して透過的にアクセスできます。
構造
WSDL では、バインディングは、抽象的なPortTypeと実際のサービス形式およびプロトコルとの間のマッピング方法を定義します。たとえば、SOAP バインディングは、エンコーディング スタイル、SOAPActionヘッダー、本体の名前空間 (targetURI) などを定義します。
WSDL では、Web サービスに対して複数の実装が可能で、同じ PortType を共有する複数のポートが許可されます。つまり、WSDL では、同じインターフェイスが SOAP やIIOPなどのサービスにバインドできるようになります。
WSIFは、同じクライアントコードが利用可能なバインディングにアクセスできるようにするAPIを提供します。クライアントコードはPortTypeに書き込むことができるため、使用するポートとバインディングの選択は、展開、構成設定、またはコードによって決定できます。
WSIF は、プロバイダーを使用してこれらの複数の WSDL バインディングをサポートします。プロバイダーは、WSDL 拡張をサポートし、その特定の実装を通じてサービスの呼び出しを可能にするコードです。WSIF プロバイダーは J2SE JAR サービス プロバイダー仕様を使用するため、実行時に検出できます。
クライアントは新しい実装を利用し、ポートの選択をインフラストラクチャとランタイムに委任することができます。これにより、サービス品質特性またはビジネス ポリシーに基づいて実装を選択できるようになります。
EJB、JMS、JCA のバインディング
WSIF は追加のバインディング拡張機能を定義し、Enterprise JavaBean (EJB)、ローカル Java クラス、Java Message Service (JMS) API を使用してメッセージ キュー経由でアクセス可能なソフトウェア、およびJava Connector アーキテクチャを使用して呼び出すことができるソフトウェアも WSDL で記述できるようにします。WSIF は、対応する WSDL 記述に基づいて透過的な呼び出しを可能にするプロバイダーとともにパッケージ化されています。
説明
WSIF を使用すると、開発者は、通常のプログラミング モデルである Simple Object Access Protocol (SOAP) API を直接操作するのではなく、WSDL 記述を介して Web サービスの抽象表現を操作できます。WSIF を使用すると、開発者は、Web サービスがどのように実装され、アクセスされるかに関係なく、同じプログラミング モデルで作業できます。
WSIF を使用すると、実行時にサービスに関するメタデータを検査して、Web サービスをスタブレスまたは完全に動的に呼び出すことができます。また、実行時に更新されたバインディングの実装を WSIF にプラグインできるため、呼び出し元のサービスはバインディングの選択を実行時まで延期できます。
これは WSDL に密接に基づいており、その言語で記述できるあらゆるサービスを呼び出すことができます。
複雑なエンタープライズ ソフトウェア システムが、数十年にわたって開発されたさまざまなソフトウェア (EJB、Java のコネクタ アーキテクチャを使用してアクセスされるレガシー アプリケーション、外部サーバーでホストされる SOAP サービス、メッセージング ミドルウェアを介してアクセスされる古いコードなど) で構成されている場合、プロトコルの違いやソフトウェアのモビリティが互いに競合する状況で、これらすべてのソフトウェアを使用して有用な処理を実行するソフトウェア アプリケーションを作成する必要があります。
ソフトウェアを別のサーバーに移動すると、コードが壊れます。使用される SOAP ライブラリは変更されます。たとえば、Apache SOAP から Apache Axis に移行すると、Apache Axis は廃止された SOAP API を使用するため、変更されます。以前は EJB としてアクセスできたものが、JMS 経由のメッセージング ミドルウェアで利用できるようになりました。この場合も、ソフトウェアを使用するコードを修正する必要があります。または、外部クライアントに SOAP サービスとして提供される EJB がある場合、SOAP を使用すると、EJB に直接アクセスする場合に比べてパフォーマンスが低下します。
WSIF は、WSDL を異なるソフトウェアの標準化された記述として使用できるようにし、ユーザーが特定のプロトコルや場所に依存せずにこのソフトウェアにアクセスできるようにすることで、これらの問題を解決します。API を実際のプロトコルから分離することで柔軟性も確保されます。つまり、プロトコル、場所などを切り替えるときにクライアント コードを再コンパイルする必要はありません。外部で利用可能な SOAP サービスが EJB として利用可能になった場合、ユーザーはサービス記述 (WSDL) を変更することで RMI/IIOP を使用できます。サービスを使用するアプリケーションに変更を加える必要はありません。WSDL の拡張性、同じサービスに複数のバインディングを提供する機能、実行時にバインディングを決定する機能などを活用できます。
WSIFとAxisの違い
Axis は SOAP の実装です。Web サービス実装を展開し、クライアントとそれらの実装間で SOAP メッセージをルーティングするためのサーバー側インフラストラクチャが含まれています。また、SOAP サービスを呼び出すための JAX-RPC 仕様も実装しています。
WSIF は、サービスを呼び出すために使用されるという点で、Axis のクライアント部分に似ています。ただし、WSIF の API は WSDL 駆動型でプロトコルに依存しません。プロトコル固有のコード (「プロバイダー」) をプラグインできます。SOAP サービスを呼び出すために、WSIF は Axis プロバイダーとともにパッケージ化されており、呼び出しには Axis API (つまり JAX-RPC) が使用されます。そのため、WSIF は Axis よりも抽象的なレベルで動作します。
WSIF と JAX-RPC の違い
JAX-RPC は、XML ベースの RPC サービスを呼び出すための API です。現在のスコープは、SOAP サービスの呼び出しに限定されています。WSIF は、SOAP サービスであるかどうかに関係なく、WSDL で記述されたサービスを呼び出すための API です (たとえば、WSIF は WSDL バインディングを定義し、EJB、JMS または Java コネクタ アーキテクチャを使用してアクセス可能なエンタープライズ ソフトウェア、およびローカル Java クラスをすべてファーストクラスの WSDL サービスとして記述し、同じプロトコルに依存しないWSIF API を使用して呼び出すことができます)。
参照
外部リンク
- Web サービス呼び出しフレームワークのドキュメント
- WSIF と WSDL
- サービスバインディング
