|
開発ガイド 05/16/03 09:21:28 |
Webサービスは、ソース言語、オペレーティングシステム、またはアプリケーション機能の作成に使用されるハードウェアに関係なく、ビジネス間でアプリケーション機能を共有できるようにします。Webサービスでは、「標準のインターネットプロトコル」および「XMLベースのメッセージング」を使用してコンポーネント間での通信を可能にすることによって、実装における非互換性を解決します。
この章では、Webサービス技術の概要について紹介し、Webサービスの開発および使用に対するNovell exteNd Workbenchサポートについても説明します。トピックは次のとおりです。
Webサービスは、 標準化されたXMLベースのメッセージングプロトコルであるSOAP (Simple Object Access Protocol)を使用してWeb上でアプリケーション機能にアクセス可能な、モジュラーソフトウェアコンポーネントです。
アプリケーションでは、「HTTPリクエストおよび応答」に埋め込まれた「SOAPメッセージ」を使用してプロシージャコールおよび応答が処理される点以外はリモートプロシージャコールのようなWebサービスを呼び出します。つまり、アプリケーションでは、HTTPリクエストに埋め込まれたSOAPメッセージを、Webサービスに関連付けられているWebの場所に送信することによって、そのサービスを呼び出します。Webサービスでは、そのメッセージに対するアプリケーション論理を実行した後、HTTP応答に埋め込まれた別のSOAPメッセージの形式でアプリケーション出力を返します。
SOAPメッセージの詳細については、
www.w3.org/TR/SOAPを参照してください。
Webサービスアーキテクチャは、Webサービスのプロバイダ、コンシューマ、およびレジストリで通常は構成されます。
Webサービス「プロバイダ」は、Webサービスを作成してホストする組織です。一般的に、プロバイダは、組織に関する情報や、Webサービスレジストリで提供されるサービスに関する情報を発行します。Webサービスレジストリは、組織のメンバーや他のビジネスが照会することが可能です。
Webサービス「コンシューマ」は、(通常は、Webサービスレジストリを照会して) Webサービスを検索した後、プロバイダとの接続を確立することによってサービスを実行します。これは、Webサービスとの「バインド」と呼ばれます。
Webサービス「レジストリ」は、プログラム的な公開インタフェースおよび照会インタフェースによって、プロバイダおよびコンシューマが簡単にアクセスできるビジネス情報やサービス情報の集合です。
プロバイダは、Webアプリケーションサーバを通常は使用して、アプリケーション論理コンポーネントを作成し、ネットワークアクセス可能な場所に配備します。このような論理コンポーネントをWebサービス内に作成するために、プロバイダは、明確に定義されたSOAPメッセージを含むHTTPリクエストで適切なWebサービス機能を呼び出すことを可能にする「SOAPメッセージ処理インタフェース」を作成および配備します。
HTTPリクエストに埋め込まれたSOAPメッセージを送信することにより、コンシューマアプリケーションにサービスへのアクセスが提供されると、プロバイダは、アプリケーション論理を実行して、HTTP応答に埋め込まれた別のSOAPメッセージにアプリケーション出力を返します。例は次のとおりです。
Webサービスに関する情報を標準の形式で指定するために、プロバイダは、Webサービスの特徴を説明したWSDL (Web Services Description Language)ドキュメントを作成します。WSDLは、次の要素を使用してWebサービスを説明するXMLベースの形式です。
|
要素 |
含まれる定義 |
|---|---|
|
タイプ |
メッセージコンテンツ内で指定されるデータタイプ |
|
メッセージ |
メッセージのデータ形式 |
|
ポートタイプ |
エンドポイントのタイプおよびサポートされている操作 |
|
バインド |
特定のポートタイプに対するメッセージ形式およびプロトコル詳細 |
|
ポート |
各エンドポイントのネットワークアドレス |
|
サービス |
関連するエンドポイントのグループ |
WSDLでは、「エンドポイント」によって、ネットワークアドレスだけでなく、そのアドレスで交換されるメッセージのプロトコルおよびデータ形式も指定されます。
WSDL仕様の柔軟性を考えると、WSDLドキュメントの情報は複雑になる場合があります。より簡単に理解するために、WSDLドキュメントは、本質的にWebサービスのインタフェースおよびポートの場所を指定するものであると見なすことができます。
WSDLの詳細については、
www.w3.org/TR/wsdlを参照してください。
Webサービスを作成して配備すると、プロバイダは、1つまたは複数のレジストリでサービスやプロバイダ組織に関する情報を公開できます。この結果、将来のコンシューマは、使用可能なサービスを検索して、その使用方法について理解することができるようになります。
詳細については、
Webサービスレジストリの使用を参照してください。
Webサービス情報を公開する別の方法は、Webページ、電子メール、個人通信などを使用して特定のコンシューマに情報を直接提供することです。これは、「直接公開」と呼ばれます。
Webサービスコンシューマは、Webサービスを使用するアプリケーションを作成します。通常、コンシューマは、Webサービスレジストリを照会することによって適切なWebサービスを検索します( Webサービスレジストリの使用を参照)。
提供されたWSDL情報から、コンシューマは、Webサービスの使用に必要な「SOAPメッセージ処理コード」を作成できます。コンシューマアプリケーションによってWebサービスが呼び出されると、SOAPメッセージ処理コードは、次のようにサービスに「バインド」されます。
適切なWebサービスアプリケーション論理を呼び出すようにプロバイダに通知する、HTTPリクエストに埋め込まれたSOAPメッセージを作成および送信する
HTTP応答にSOAPメッセージが含まれる場合は、 メッセージを(コンシューマアプリケーションで認識できるデータ形式に)変換してから、そのデータをアプリケーションに返す
コンシューマアプリケーションでは、これはリモートメソッドの呼び出しに類似しています。ただし、アプリケーションコードとWebサービスの間での通信には、標準のHTTPリクエストおよび応答に埋め込まれたSOAPメッセージが使用されます。例は次のとおりです。
Webサービスレジストリは、ネットワーク上でプログラム的にアクセスできるWebサービス情報のリポジトリです。プロバイダおよびコンシューマの両方がWebサービスレジストリを使用できます。
コンシューマは、レジストリを照会して独自のニーズに合ったサービスやビジネスを検索し、このようなサービスに関するプロバイダ提供の情報(サービスにアクセスする場所や方法、WSDL表現など)を取得できます。
レジストリには、ビジネスやサービスに関する情報が、UDDI (Universal Description, Discovery and Integration)またはebXML (Electronic Business XML)などの標準化されたXMLベースの形式で保存されます。レジストリをホストしているビジネスは通常、レジストリに公開してレジストリを照会するためのWebページ、GUI、またはプログラム的なインタフェースを通常は提供します(その結果、プロバイダおよびコンシューマは、内部レジストリ実装に関する詳細を把握する必要がなくなります)。
UDDIの詳細については、
www.uddi.orgを参照してください。ebXMLの詳細については、
www.ebxml.orgを参照してください。
ビジネスでは、パブリックレジストリまたはローカルレジストリを使用します。
「パブリックレジストリ」は、一般的にWeb上で誰でも見ることができ、多数の企業やサービスに関する情報が含まれています。公開および照会に対しては、異なるレベルの認証および認証セキュリティが実装されている場合があります。
「ローカルレジストリ」は、ローカルネットワークアクセスに制限されている可能性があります。このような場合、ビジネスでは、Webサービスを組織外のコンシューマに公開せずに内部で共有できます。
特定のWebサービス技術の詳細について参照できるWebサイトの要約は、次のとおりです。
|
トピック |
サイト |
|---|---|
|
SOAP |
|
|
HTTP |
|
|
WSDL |
|
|
UDDI |
|
|
ebXML |
基盤となるWebサービス技術(SOAP、WSDL、UDDI、ebXMLなど)について理解しておくことは重要ですが、そのようなレベルでアプリケーションを開発するのは、たいていの場合効率的ではありません。そのため、これらの技術を一般的な構成要素にまとめることによって使いやすくするために、より高いレベルでの実装が提供されています。このような実装には、次のものが含まれます。
J2EE Java 2 Enterprise Editionでは、 JAX-RPC (Java API for XML-based RPC)仕様によるWebサービスサポートを提供しています。
.NET Microsoftでは、 .NETプラットフォームによるWebサービスサポートを提供しています。
たとえば、J2EEに精通したプログラマは、JAX-RPC実装を使用して、さらに簡単にWebサービスを開発したり、Webサービスにアクセスしたりできます。つまり、SOAPについて熟知したり、手動でSOAPメッセージを処理する必要はありません。
Webサービスは、適切に設計および作成された場合、異なる実装間で「相互運用が可能」になります。たとえば、JAX-RPCクライアントでは.NET Webサービスにアクセスでき、.NETクライアントではJAX-RPC Webサービスにアクセスできるようになります。
Novell exteNd Workbenchは、JAX-RPC標準に基づいてWebサービスを作成、配備、および維持するためにプロバイダが使用できるJ2EE指向のIDEです。つまり、Webサービスは、J2EE互換サーバに配備できるJ2EE WAR (Web Archive)にパッケージ化されます。また、Workbenchは、JAX-RPCに準拠するJavaベースのWebサービスコンシューマを開発するために使用することもできます。
WebサービスおよびWebサービスコンシューマを実装できるようにするために、Workbenchでは次の機能が備えられています。
|
機能 |
説明 |
|---|---|
|
JAX-RPCに基づくコンパイラおよびSOAPランタイムを含む、exteNd Webサービスサポートのコア技術 |
|
|
jBroker Webコンパイラを呼び出して、WebサービスやWebサービスコンシューマに対してJavaクラスおよびWSDLファイルを生成できるようにするツール |
|
|
Webサービスレジストリを照会および公開するためのツール |
|
|
WSDLファイルを作成および編集するためのツール |
jBroker Webは、Webサービスのプロバイダアプリケーションおよびコンシューマアプリケーションを開発して実行するための「コンパイラ」および「ランタイム環境」を含むJAX-RPC実装です。
Web Serviceウィザードでは、jBroker Webコンパイラを使用して、Webサービスコンポーネント(スケルトン、結合、スタブ)およびWSDLファイルを作成します。開発者は、これらのコンパイラをコマンドラインから個別に呼び出すこともできます。
プロバイダとコンシューマは、必要なランタイム環境を提供するために、両方とも、アプリケーションでjbroker-web.jar (および一部のサポートJAR)を配備します。これには、スタブコンポーネントおよびスケルトンコンポーネントがSOAPメッセージをコンシューマアプリケーションとプロバイダアプリケーション間で渡す際に実行されるSOAPエンジンが含まれます。
詳細については、
jBroker Webヘルプを参照してください。
Web Serviceウィザードを使用すると、 JavaクラスまたはWSDLファイルからWebサービスコンポーネントを作成できます。Web Serviceウィザードでは、オブジェクトにアクセスするための「リモートインタフェース」だけでなく、コンシューマアプリケーションとWebサービス間でのSOAPメッセージ通信を処理する「スケルトン」Javaクラス、「結合」Javaクラス、および「スタブ」Javaクラスも生成します。生成されたコードは、JAX-RPCに基づきます。
プロバイダは、WAR (Web Archive)としてWebサービスを配備します。WARでは、スケルトンクラスおよび結合クラスによって、着信SOAPメッセージを処理する「サーブレット」が実装されます。コンシューマアプリケーションでは、SOAPメッセージをサーバに送信するスタブクラスのメソッドを呼び出すことによって、Webサービス機能にアクセスします。
『ツールガイド』の章「 Web Serviceウィザード」
Registry Managerは、プロバイダがWebサービスレジストリに公開できるようにし、コンシューマが、Webサービスレジストリを照会できるようにします。
詳細については、『ツールガイド』の章「
Registry Manager」を参照してください。
WSDLウィザードを使用すると、プロバイダは新しいWSDLドキュメントを作成できます。また、WSDLエディタを使用すると、プロバイダは既存のWSDLドキュメントを編集して使用できます。
詳細については、『ツールガイド』の章「
WSDLエディタ」を参照してください。
|
開発ガイド 05/16/03 09:21:28 |
Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.