クライアント アプリケーション開発者ガイド

     前へ  次へ    新しいウィンドウで TOC を開く     
コンテンツに進む

ADO.NET クライアントのサポート

この章では、BEA AquaLogic Data Services Platform のデータ サービスと ADO.NET クライアント アプリケーション間での相互運用性を有効にする方法について説明します。 ADO.NET のクライアント アプリケーションをサポートするため、Microsoft の非接続データ モデルを理解している Microsoft Visual Basic および C# の開発者は AquaLogic Data Services Platform データ サービスを ADO.NET の Web サービスのように利用することができます。

Microsoft ADO.NET の開発者側からは、サポートが透過的です。つまり、AquaLogic Data Services Platform データ サービス上の機能を呼び出すのに特別な操作は必要なく、すべての作業がサーバ側で行われます。 ADO.NET のクライアント アプリケーション開発者が行うのは、Web サービスのクライアント アプリケーションの作成時と同様に、AquaLogic Data Services Platform が生成した WSDL をプログラミング環境に組み込むことのみです。

この章では、AquaLogic Data Services Platform が ADO.NET 統合を実現する方法について一般的な情報を示します。また、ADO.NET 統合を有効にするために必要なサーバ側の操作についても説明します。 この章の内容は以下のとおりです。

注意 : ADO.NET 開発の詳細は、Microsoft の MSDN の Web サイト (http://msdn.microsoft.com) でご確認ください。 ADO.NET 対応のアプリケーション開発についてはこの Web サイトを参照してください。

 


Data Services Platform における ADO.NET 統合の概要

ADO.NET は Microsoft ADO.NET クライアント アプリケーション向けのデータ オブジェクト技術で、機能的に SDO (Service Data Object) と似ています。 ADO.NET は、クライアント アプリケーションがデータ ソースから切断された状態でもデータを利用できる堅牢かつ階層構造のデータ アクセス コンポーネントを提供します。 データ中心のクライアント アプリケーションを作成する開発者は、C#、Visual Basic.NET、またはその他の Microsoft .NET プログラミング言語を使用して、スキーマ定義に基づくローカル オブジェクトをインスタンス化します。

これらのローカル オブジェクトは DataSet と呼ばれ、クライアント アプリケーションがデータをサーバに送信する前に追加、変更、または削除するのに使用されます。 このように、ADO.NET のクライアント アプリケーションは保留中の変更をソート、検索、フィルタ、または保存し、DataSet を利用する階層型データを検索します。これは AquaLogic Data Services Platform のクライアント アプリケーションが SDO を利用するのと同様です。

Java クライアント アプリケーションにおける SDO の利用の詳細については、「Mediator および SDO の役割」を参照してください。 ADO.NET DataSet を使用するクライアント アプリケーションの開発は SDO を使用するプロセスとおおよそ類似しています。

機能的には一見似ていますが、2 つの異なるプラットフォーム (Java と .NET) で動作する場合があるため、ADO.NET と SDO データ モデルは本質的に相互運用できません。 ただし、Data Services Platform が ADO.NET 準拠の DataSet を提供することにより、ADO.NET クライアント開発者が Data Services Platform から提供されたデータ サービスを ADO.NET 固有のデータ ソースのように利用することができます。

Data Services Platform のデータ サービスが ADO.NET をサポートできるようにするには、主に 3 つの手順があります。

ADO.NET について

ADO.NET は Microsoft .NET Framework に含まれる一連のライブラリで、開発者が ADO.NET クライアント アプリケーションからさまざまなデータ ストアに通信する際に役立ちます。 Microsoft ADO.NET ライブラリにはデータ ソースへの接続、クエリの送信、および結果の処理に関するクラスなどがあります。 また、DataSet には従来のデータ アクセスと XML 開発のギャップを埋めるいくつかの機能があります。 開発者は従来のデータ アクセス インタフェースを通して XML データを利用したり、またその逆を行うことが可能です。

注意 : ADO.NET およびクライアント アプリケーションの開発の詳細については、Microsoft の MSDN の Web サイト (http://msdn.microsoft.com/) を参照してください。

ADO.NET は接続 (直接) モデルおよび非接続モデルの両方をサポートしますが、Data Service Platform は非接続モデルのみをサポートしています。

ADO.NET クライアント アプリケーション開発ツール

ADO.NET クライアント アプリケーションは一般に Microsoft Windows Forms、Web Forms、C#、または Visual Basic で作成されます。 Microsoft Windows Forms は、クライアント アプリケーション開発者が Windows .NET の管理環境におけるグラフィカル ユーザ インタフェースの開発に使用するクラスの集合です。 Web Forms も同様のクライアント アプリケーション インフラストラクチャを提供し、Web ベースのクライアント アプリケーションの作成が可能です。 これらのクライアント ツールのいずれかを利用して、開発者は ADO.NET をデータ ソースで利用するアプリケーションを作成できます。

図 9-1 Web サービス経由でサポートされている ADO.NET クライアント

Web サービス経由でサポートされている ADO.NET クライアント

ADO.NET クライアントへのサポートは Web サービス経由で提供されるため、選択した Microsoft ツールを利用するには、Microsoft Web サービスのクライアント アプリケーションで通常行うように、あらかじめ Web サービス クライアント開発に必要な 2 つの基本タスクを実行しておく必要があります (図 9-1 を参照)。

クライアント側のアーティファクトが開発環境に組み込まれると、通常行うのと同様にデータ サービス上の関数を呼び出し、コード内の DataSet オブジェクトを操作できます。

注意 : WDSL およびサーバ側のアーティファクトの生成プロセスについては、「ADO.NET クライアント向けの Web サービスの生成」を参照してください。

AquaLogic Data Services Platform の ADO.NET クライアントのサポート方法

BEA AquaLogic Data Services Platform は ADO.NET をデータ オブジェクト レベルでサポートします。 つまり、Data Services Platform は着信 ADO.NET DataSet オブジェクトを SDO の DataObject にマッピングし、発信 SDO を DataSet にマッピングします。 マッピングはサーバ上で透過的に実行され、双方向で行われます。

表 9-2 ADO.NET と SDO データ オブジェクトの比較
ADO.NET
SDO
説明
DataSet
DataObject
非接続データ モデル クエリはこのデータ モデルに準拠した結果を返す。
DiffGram
ChangeSummary
クライアント アプリケーションがデータ オブジェクトに行なった変更を追跡するメカニズムを作成する。

図 9-3 に示すように、AquaLogic Data Services Platform により ADO.NET の型付き DataSet が送信、および返送されます。 実行時に Microsoft-.NET クライアント アプリケーションが ADO.NET 対応の Web サービスに対する SOAP 呼び出しを行うとき、Web サービスはオブジェクトをインターセプトし、それを Data Service コントロールに渡します。

ADO.NET 対応の Data Service コントロールは 2 つのプラットフォーム間における相互運用の基軸です。 それぞれの型付き DataSet に対応する複数のラッパー クラスで構成され、双方向のマッピングを提供します。

図 9-3 Data Services Platform と .NET 統合

Data Services Platform と .NET 統合

必要なラッパー クラスは ADO.NET 対応の Data Service コントロールの作成時に自動的に作成されます。これについては、この章で後述します。 ラッパー クラスは Data Service コントロールの作成時に生成される XML スキーマに基づきます。

実行時に、ADO.NET 対応の Data Service コントロールはラッパー クラスを使用して ADO.NET クライアントに適切なオブジェクトを提供します。 内容は関数またはプロシージャの種類によって異なります。

前述のように、マッピング、トランスフォーメーション、およびパッキングのプロセスはクライアント アプリケーション開発者、およびデータ サービス開発者に透過的です。 表 9-4 に記載されているもののみがデータ サービス開発者に公開されています。

表 9-4 Data Services Platform—Java および ADO.NET 対応のアーティファクト
名前
説明
データ サービス
Customer.ds
読み込み関数、ナビゲーション関数、プロシージャ、および実行時の更新機能をインスタンス化する XQuery ファイル。
データ サービス スキーマ
Customer.xsd
元のデータ サービスの戻り値の型に関連するスキーマ。
DataSet スキーマ
CustomerDataSet.xsd
ADO.NET のデータ オブジェクトに対する Microsoft の要件に準拠する型付き DataSet スキーマ。
Data Service コントロール
Customer.jcx
ADO.NET 対応 Data Service コントロール。
Web サービス ソース
Customer.jws
ADO.NET のデータ オブジェクトをインターセプトし、それを ADO.NET 対応の Data Service コントロールに渡す Java Web サービス。
<DSControlName>_schema
Customer_schema
生成された型付き DataSet XSD を含むフォルダが自動的に作成される。
Web サービス定義
CustomerNET.wsdl
生成された WSDL で ADO.NET の型付き DataSet スキーマに準拠している。

Java クライアントのサポート

ADO.NET 対応の Data Service コントロールから WebLogic Server によって生成された WSDL は Microsoft ADO.NET クライアント専用です。 データ サービスを Java クライアントが使用可能な Web サービスとして公開するのも一般的に同じですが、実際の手順 (および生成されたアーティファクト) は Java 固有です。 手順は 表 9-5 に示すとおりです。

表 9-5 標準のクライアントをサポートする手順の概要
タスク
詳細
Data Service コントロールの生成 (標準、ADO.NET 非対応)
Web サービス ファイル (JWS) の生成
WSDL の生成

 


ADO.NET クライアント向けの AquaLogic Data Services Platform サポートの有効化

ADO.NET クライアントにデータ サービスへのアクセスを提供するプロセスは、アプリケーションおよび WebLogic Workshop のコンテキスト内で実行されるサーバ側のオペレーションです。

このセクションの手順では、データ サービス アプリケーションを作成し、サービス関数へのアクセスを ADO.NET クライアント アプリケーションに提供すると仮定します。 (データ サービスの設計および開発については、『データ サービス開発者ガイド』を参照してください。)

AquaLogic Data Services Platform アプリケーションが ADO.NET クライアントをサポートするには、一般に次の 3 つの手順が必要です。

後続のセクションで説明するタスクでは、データ サービス アプリケーションが WebLogic Workshop で開かれていると仮定します。

新規 Web サービス プロジェクトの作成

ADO.NET のサポートは Data Service コントロールを使って提供されるため、また Data Service コントロールを Web サービスとして公開し、ネットワーク アクセスを可能にする必要があることから、まず Web サービス プロジェクト、および生成されたコンポーネントを保持するフォルダ構造を作成します。

ADO.NET 対応にするデータ サービス アプリケーションに、そのアプリケーションの ADO.NET 対応コンポーネントに固有の Web サービス プロジェクトを新規に作成します (図 9-6 を参照)。

注意 : Web サービス プロジェクトには必ず意味のある名前を付けます。この名前は Data Service コントロールの名前を含む複数のアーティファクトの生成中に使用されます。
図 9-6 ADO.NET 対応 プロジェクト コンポーネントのフォルダ構造

ADO.NET 対応 プロジェクト コンポーネントのフォルダ構造

ADO.NET 対応 Data Service コントロールの作成

Data Service コントロールは作成プロセス中に適切なチェックボックスを選択するだけで ADO.NET 対応にできます。 (このセクションに示すように) 作成された ADO.NET 対応の Data Service コントロールは Web サービスのインタフェースを利用する ADO.NET クライアントのみを対象に設計されています。したがって、このコントロールをページ フロー、ポータル、またはその他の開発手法で使用することはできません。

Web サービスのプロジェクト フォルダの作成後は、一般に以下の手順となります。

  1. フォルダを選択し、そのフォルダを右クリックしてプロジェクトに Data Service コントロール用のフォルダを作成します。 (Java コントロールはプロジェクト内のフォルダに含まれる必要があります。プロジェクトのトップ レベルに属することはできません。)
  2. プロジェクトにあるフォルダを右クリックしてポップアップ メニューを表示し、[新規 Arrow symbol Java コントロール] を選択します。 [New Java Control] ダイアログが表示されます。
  3. [New Java Control] ダイアログから [Data Services Platform] を選択します。 コントロール (JCX) ファイルのファイル名を入力し、[次へ] をクリックします。 [New Java Control - Data Service] ダイアログが表示されます。
  4. Data Services Platform アプリケーションをホストする WebLogic サーバの接続情報を入力します。
    • ローカル サーバの場合、Data Service コントロールはアプリケーション プロパティに格納された接続情報を使用します。
    • リモート サーバの場合、[リモート] を選択し、サーバ URL、ユーザ名、およびパスワードを入力します。
  5. [作成] をクリックして続行します。 [データ サービス関数の選択] ダイアログが表示されます。 ダイアログの左上部の隅に、ADO.NET 対応のチェックボックスがあります。図 9-7 を参照してください。
  6. 図 9-7 [データ サービス関数の選択] ダイアログ


    [データ サービス関数の選択] ダイアログ

  7. [ADO.NET-enabled] ボックスをクリックし、ADO.NET 対応 Data Service コントロールで使用する 1 つまたは複数の関数またはプロシージャを選択します。
  8. 注意 : Microsoft の制限により、Data Service コントロールに追加する関数およびプロシージャは同じネーム スペースに属する必要があります。
  9. [次へ] をクリックして続行します。 コントロールの生成に関する詳細設定ページが表示され、前のページで選択した関数が示されます。 このページでは、フィルタまたは属性を含む関数 (存在する場合) を選択できます。
  10. [終了] をクリックしてプロセスを完了します。

ADO.NET 対応の Data Service コントロール ファイルの生成中に、フォルダがコントロールのフォルダ内に作成されます。また、Microsoft スタイルの XML スキーマ定義ファイル (XSD) が生成され、そのフォルダ内に格納されます。 生成されたフォルダは以下の簡単な命名規約に従ってください。

<Data Service control name>_schema

<Data Service control name>_schema フォルダに作成されたスキーマ ファイルは Data Service コントロールの名前と CustomerDataSet.xsd などの「DataSet」の組み合わせです。(その他の命名規約については表 9-4 を参照) XML スキーマ ファイルには選択したすべての関数とプロシージャのメソッド呼び出しが含まれます。

XSD が作成されると、WebLogic Workshop に 1 つまたは複数の XSD ファイルを非スキーマ プロジェクトに追加したことを通知するメッセージ ボックスが、一時的に表示される場合があります。 このメッセージは無視してもかまいません。このメッセージが表示されるのは、Microsoft ADO.NET スタイルの XSD が他のデータ サービスの XSD ファイルと同じではないためです。

注意 : Data Service コントロールの詳細については、「Data Service コントロールの作成」を参照してください。

Java コントロールは Web サービスとしてラップされない限り、ネットワーク アクセスはできません。 アプリケーション外部からの Data Service コントロールを含む、任意の種類の Java コントロールを呼び出すには、Java コントロールを Web サービスあるいは JSP (JavaServer Page) など、別の Web ベースのアプリケーションとして公開する必要があります。

注意 : JCX を削除しても、関連するスキーマ (XSD) ファイルがすべて削除されるわけではありません。 システムからこれらのファイルを削除する必要がある場合、手動で行います。

ADO.NET クライアント向けの Web サービスの生成

ADO.NET 対応の Data Service コントロールが生成されると、それは Java Web サービス ファイル (JWS) を生成する基礎として以下のように使用されます。

  1. Data Service コントロールを右クリックします。
  2. ポップアップ メニューから [Generate Test JWS File (Stateless)] を選択します。 (ADO.NET クライアントのサポートはステートレス Web サービスに限定されています。)

つまり JWS が生成されます。Data Service コントロール下にノードとして表示されます。 この JWS から Web サービスのクライアント アプリケーション開発者が使用する、対応の WSDL (Web Services Description Language) を生成できます。

注意 : Java Web サービス (JWS) が生成されると、通常の方法でデプロイできます。 詳細については、BEA のドキュメント サイトの Web サービスのページを参照してください。
注意 : http://edocs.beasys.co.jp/e-docs/wls/docs81/webservices.html

ADO.NET 対応 WSDL の生成

Web サービスのクライアントが ADO.NET 対応の Web サービスでオペレーションを呼び出すのに使用できる比較 WSDL (Web Services Description Language) ファイルを JWS から生成するには、以下の手順を実行します。

  1. ADO.NET クライアント向けの Web サービスの生成」で作成された JWS ファイルを右クリックします。
  2. ポップアップ メニューから [Generate ADO.NET Enabled WSDL File] を選択します。

WSDL が生成されます。JWS ファイル下にノードとして表示されます。

図 9-8 WebLogic Workshop で生成された WSDL

WebLogic Workshop で生成された WSDL

注意 : AquaLogic Data Services Platform 上に RPC スタイルの Web サービスを構築することはサポートされていません。 したがって、構築された RPC スタイルの Web サービスを、ADO.NET クライアントから AquaLogic Data Services Platform を使って作成することはできません。

WSDL は ADO.NET 開発者に (たとえば物理ファイルを送信するなどによって) 直接公開される必要があります。 開発者は BEA WebLogic Server のホームページから WSDL を取得することも可能です。

 


ADO.NET クライアントの AquaLogic Data Services Platform XML 型 (スキーマ) の調整

Microsoft の ADO.NET DataSet は基本的にデータ ソースにデータ アクセスを提供するように設計されているため、データベース テーブル (列と行) に非常に似ています。 ADO.NET は 後に Web サービスの利用のために調整されましたが、Web サービスのデータ ソース スキーマに多くの設計上の制限を課しています。

こうした制限により、データ サービスで問題なく機能する Data Services Platform の XML 型 (スキーマまたは XSD ファイルとも呼ばれる) が ADO.NET の DataSet では受け入れられない場合があります。

このセクションでは、ADO.NET クライアントによる利用に備えて XML 型を準備する方法について説明します。 ADO.NET クライアント側から AquaLogic Data Services Platform サーバ側への読み込みおよび更新について説明し、特に以下の方法に焦点を当てます。

注意 : XML 型の作成および利用についての詳細は、『データ サービス開発者ガイド』を参照してください。

ADO.NET 向けに XML 型を調整する方法

XML 型を調整して ADO.NET DataSet で利用できるようにするには、次のようないくつかの方法があります。

ADO.NET DataSet で利用するための XML 型の要件

以下のガイドラインは、さまざまなデータ サービス アーティファクトに対するパターン要件を示しており、ADO.NET DataSet 準拠の XML 型 (スキーマ) 開発に役立ちます。

複合型の要件

ADO.NET DataSet で複合型をサポートするための要件には以下が含まれます。

繰り返し参照の要件

ADO.NET は複合型間の真の繰り返し参照をサポートしないため、以下のような構成を利用するスキーマ定義をシミュレーションする場合、「複合型の要件」に記載された要件に従う必要があります。

たとえば、address の複合型が Company および Department の両方で参照された場合、CompanyAddress と DepartmentAddress の 2 つの要素定義が存在し、それぞれに匿名の複合型があります。 つまり、以下のコードのようになります。

<xsd:schema targetNamespace="urn:company.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="Company">
 <xsd:complexType>
  <xsd:sequence>
  <xsd:element name="Name" type="xsd:string"/>
  <xsd:element name="CompanyAddress">
   <xsd:complexType>
    <xsd:sequence>
     <xsd:element name="City" type="xsd:string"/>
    </xsd:sequence>
   </xsd:complexType>
  </xsd:element>
   <xsd:element name="Department">
    <xsd:complexType>
     <xsd:sequence>
      <xsd:element name="Name" type="xsd:string"/>
      <xsd:element name="DepartmentAddress">
       <xsd:complexType>
        <xsd:sequence>
         <xsd:element name="City" type="xsd:string"/>
        </xsd:sequence>
       </xsd:complexType>
      </xsd:element>
     </xsd:sequence>
    </xsd:complexType>
   </xsd:element>
  </xsd:sequence>
 </xsd:complexType>
</xsd:element>
</xsd:schema>
単純型の要件

ADO.NET DataSet で単純型をサポートするための要件には以下が含まれます。

Target Namespace および Namespace Qualification の要件

target namespace および namespace qualification を使用する要件には、以下が含まれます。

参照

XML スキーマに関する詳細は、以下を参照してください。


http://www.w3.org/TR/xmlschema-0

 


生成されたアーティファクト参照

ADO.NET 対応の Data Service コントロールおよび Web サービスの作成時に、以下の 2 つの ADO.NET 固有のアーティファクトが生成されます。

このセクションでは、これらのアーティファクトに関する技術仕様を提供します。

ADO.NET 型付き DataSet の XML スキーマ定義

ADO.NET 対応の Data Service コントロールの作成中に、WebLogic Workshop は型付き DataSet オブジェクトに関する Microsoft の仕様に準拠する特別なスキーマ ファイルを生成します。 スキーマは、ADO.NET 対応の Data Service コントロールに含めるために選択された各データ サービス クエリに対して生成されます。 これらのスキーマ ファイルにはソース スキーマのルート要素の名前が付けられます。

生成されたスキーマでは、ルート要素が以下のように (Microsoft のネームスペース エアリアス、msdata で修飾された) IsDataSet 属性を True に設定します。

msdata:IsDataSet="true"

Microsoft の ADO.NET アーティファクトに関する要件を遵守し、生成されたデータ サービスのターゲット スキーマとそれが依存するすべてのスキーマは型付き DataSet のスキーマと同じファイルに格納されています。 コントロールに追加する関数を選択すると、WebLogic Workshop は関連するスキーマを取得し、その内容をスキーマ ファイルにコピーします。

また、生成されたスキーマには以下が含まれます。

サンプル コード 9-1 は、AquaLogic Data Services Platform のカスタマ スキーマから生成された型付き DataSet のスキーマ—CustomerDS.xsd—を示しています。

サンプル コード 9-1 型付き DataSet (ADO.NET) スキーマの例
<xs:schema xmlns:mstns="http://temp.openuri.org/schemas/Customer.xsd" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="http://temp.openuri.org/schemas/Customer.xsd" targetNamespace="http://temp.openuri.org/schemas/Customer.xsd" id="CustomerDS" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element msdata:IsDataSet="true" name="CustomerDS">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded"> 
        <xs:element ref="CUSTOMER"/>
      </xs:choice>
    </xs:complexType>
</xs:element>
<xs:element name="CUSTOMER">
. . .
</xs:element>
</xs:schema>

Microsoft ADO.NET クライアント向けの Web Services Description Language (WSDL) ファイル

Java Web サービスの生成時に、クライアント側のアプリケーション開発に必要な WSDL が作成されます。 WSDL ファイルにはそれぞれの型付き DataSet に対応する import 文が含まれます。 import 文はそれぞれ関連する DataSet スキーマのネームスペースで修飾されます。以下はその例です。

<import namespace="http://temp.openuri.org/schemas/Customer.xsd" location="LDTest1NET/CustomerDataSet.xsd"/>

WSDL はまた、ADO.NET 準拠のラッパー型定義を含みます。 ラッパの型定義は型付き DataSet と同じネームスペースのあらゆる型要素のシーケンスを含む複合型で構成されており、以下はその例です。

<s:complexType name="CustomerDataSetWrapper">
<s:sequence>
<s:any namespace="http://temp.openuri.org/schemas/Customer.xsd"/>
</s:sequence>
</s:complexType>

  ページの先頭       前へ  次へ