プロバイダの指定
データ アクセス メカニズムに関連付けられているクライアント データセットとは異なり、TClientDataSet には、データをパッケージ化したり更新を適用するための内部プロバイダ コンポーネントはありません。したがって、クライアント データセットでソース データセットまたは XML ドキュメントからのデータを表す場合は、そのデータセットを外部プロバイダ コンポーネントに関連付ける必要があります。
TClientDataSet をプロバイダと関連付ける方法は、プロバイダがクライアント データセットと同じアプリケーション内にあるか、別のシステムで動作しているリモート アプリケーション サーバー上にあるかによって異なります。
プロバイダの場所 | TClientDataSet を関連付ける方法 |
---|---|
プロバイダがクライアント データセットと同じアプリケーション内にある |
プロバイダがクライアント データセットと同じアプリケーション内にある場合、[オブジェクト インスペクタ]で ProviderName プロパティのドロップダウン リストからプロバイダを選択することにより、プロバイダと関連付けることができます。プロバイダの Owner がクライアント データセットと同じである限り、これでうまくいきます。なお、クライアント データセットとプロバイダが同じフォームやデータ モジュールに配置されていれば、両者の Owner は同じです。Owner の異なるローカル プロバイダを使用する場合は、クライアント データセットの SetProvider メソッドを使って実行時に関連付ける必要があります。 最終的にリモート プロバイダにスケールアップすることを考えている場合や、IAppServer インターフェイスを直接呼び出す場合は、ConnectionBroker プロパティを Datasnap.Win.TConnect.TLocalConnection コンポーネントに設定することもできます。TLocalConnection を使用する場合は、TLocalConnection インスタンスにより、アプリケーションに対してローカルなすべてのプロバイダのリストが管理され、クライアント データセットの IAppServer 呼び出しが処理されます。TLocalConnection を使用しない場合は、クライアント データセットからの IAppServer 呼び出しを処理する非表示オブジェクトがアプリケーションにより作成されます。 |
プロバイダがリモート アプリケーション サーバー上にある |
プロバイダがリモート アプリケーション サーバー上にある場合は、ProviderName プロパティに加えて、クライアント データセットをアプリケーション サーバーに接続するコンポーネントを指定する必要があります。このタスクを処理できるプロパティは 2 つあります。プロバイダ リストの取得先となる接続コンポーネントの名前を指定する RemoteServer と、クライアント データセットと接続コンポーネントのやり取りを仲介する一元的なブローカを指定する ConnectionBroker です。接続コンポーネントと接続ブローカ(使用されている場合)は、クライアント データセットと同じデータ モジュールに存在します。接続コンポーネントは、アプリケーション サーバーへの接続を確立し維持管理します。これは "データ ブローカ" と呼ばれることもあります。詳細は、「クライアント アプリケーションの構造」を参照。 設計時には、RemoteServer または ConnectionBroker の指定後、[オブジェクト インスペクタ]で ProviderName プロパティのドロップダウン リストからプロバイダを選択できます。このリストには、(同じフォームまたはデータ モジュール内にある)ローカル プロバイダも、接続コンポーネントを通じてアクセス可能なリモート プロバイダも含まれています。 |
メモ: 接続コンポーネントが TDCOMConnection のインスタンスである場合は、アプリケーション サーバーがクライアント マシンに登録されている必要があります。
実行時には、コードで ProviderName を設定することにより、使用可能なプロバイダ(ローカルとリモートの両方)を切り替えることができます。