RDS のプログラミング モデルの詳細
RDS プログラミング モデルの主な要素を次に示します。
RDS.DataSpace
RDSServer.DataFactory
RDS.DataControl
Event
重要
Windows 8 および Windows Server 2012 から、RDS サーバー コンポーネントが Windows オペレーティング システムに含まれなくなりました (詳細については、Windows 8 および Windows Server 2012 の互換性クックブックを参照してください)。 RDS クライアント コンポーネントは、今後のバージョンの Windows で削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 RDS を使用するアプリケーションを、WCF Data Service に移行する必要があります。
RDS.DataSpace
クライアント アプリケーションが、呼び出すサーバーとサーバー プログラムを指定する必要があります。 その代わりに、アプリケーションがサーバー プログラムへの参照を受け取り、その参照をサーバー プログラムそのものであるかのように扱うことができます。
RDS オブジェクト モデルは、この機能を RDS.DataSpace オブジェクトで具現化します。
サーバー プログラムは、プログラム ID、つまり ProgID で指定されます。 サーバーは ProgID とサーバー コンピューターのレジストリを使用して、開始する実際のプログラムに関する情報を見つけます。
RDS は、サーバー プログラムがインターネットやイントラネット上のリモート サーバー上にあるか、ローカル エリア ネットワークのサーバー上にあるか、あるいはサーバーにはなくローカルのダイナミック リンク ライブラリ (DLL) 上にあるかによって、内部的に区別しています。 この区別により、クライアントとサーバーの間で情報がどのように交換されるかが決まり、クライアント アプリケーションに返される参照の種類に具体的な違いが生じます。 しかし、あなたから見れば、この区別は特別な意味を持ちません。 重要なのは、使用可能なプログラム参照を受け取るということです。
RDSServer.DataFactory
RDS には、データ ソースに対して SQL クエリを実行して Recordset オブジェクトを返すか、Recordset オブジェクトを取得してデータ ソースを更新できる既定のサーバー プログラムが用意されています。
RDS オブジェクト モデルは、この機能を RDSServer.DataFactory オブジェクトで具現化します。
さらに、このオブジェクトには、プログラムで入力できる空の Recordset オブジェクトを作成するメソッド (CreateRecordset) と、Recordset オブジェクトを Web ページを作るためのテキスト文字列に変換するもうひとつのメソッド (ConvertToString) があります。
ADO を使用すると、RDSServer.DataFactory の標準的接続とコマンド動作の一部を DataFactory ハンドラーと、接続、コマンド、およびセキュリティ パラメーターを含むカスタマイズ ファイルでオーバーライドすることができます。
サーバー プログラムは、"ビジネス オブジェクト" と呼ばれることもあります。 複雑なデータ アクセスや有効性チェックなどを実行できる独自のカスタム ビジネス オブジェクトを記述することができます。 カスタム ビジネス オブジェクトを記述するときでも、RDSServer.DataFactory オブジェクトのインスタンスを作成し、そのメソッドの一部を使用して独自のタスクを実行できます。
RDS.DataControl
RDS には、RDS.DataSpace と RDSServer.DataFactory の機能を組み合わせ、また、データ ソースからクエリによって返される Recordset オブジェクトを簡単に使するためのビジュアル コントロールも有効にする手段が用意されています。 RDS は、最も一般的なケースとして、サーバー上の情報に自動的にアクセスし、それをビジュアル コントロールで表示するためにできるだけ多くのことを試みます。
RDS オブジェクト モデルは、この機能を RDS.DataControl オブジェクトで具現化します。
RDS.DataControl には 2 つの側面があります。 1 つの側面は、データ ソースに関連します。 RDS.DataControl の Connect プロパティと SQL プロパティを使用してコマンドおよび接続情報を設定すると、自動的に RDS.DataSpace を使用して既定の RDSServer.DataFactory オブジェクトへの参照が作成されます。 次に RDSServer.DataFactory は Connect プロパティ値を使用してデータ ソースに接続し、SQL プロパティ値を使用してデータ ソースから Recordset を取得して、Recordset オブジェクトを RDS.DataControl に返します。
2 番目の側面は、返される Recordset 情報のビジュアル コントロールでの表示に関連します。 ビジュアル コントロールを RDS.DataControl に (バインドと呼ばれるプロセスで) 関連付けて、関連付けられた Recordset オブジェクト内の情報にアクセスし、クエリ結果を Microsoft Internet Explorer の Web ページに表示することができます。 各 RDS.DataControl オブジェクトは、1 つのクエリの結果を表す 1 つの Recordset オブジェクトを、1 つまたは複数のビジュアル コントロール (テキスト ボックス、コンボ ボックス、グリッド コントロールなど) にバインドします。 各ページには RDS.DataControl オブジェクトが複数存在する場合があります。 各 RDS.DataControl オブジェクトは異なるデータ ソースに接続され、別のクエリの結果を含むことができます。
RDS.DataControl オブジェクトには、関連付けられている Recordset オブジェクトの行を移動、並べ替え、フィルター処理するための独自のメソッドもあります。 これらのメソッドは似ていますが、ADO Recordset オブジェクトのメソッドと同じではありません。
Events
RDS では、ADO イベント モデルとは独立した 2 つの独自のイベントがサポートされています。 onReadyStateChange イベントは RDS.DataControl ReadyState プロパティが変化すると呼び出されるため、非同期処理が正常に完了または終了するか、エラーが発生すると通知が送られてきます。 onError イベントは、エラーが発生したとき、エラーが非同期操作中に発生した場合でも、呼び出されます。
Note
Microsoft Internet Explorer が RDS に提供する追加イベントは 2 つあります。onDataSetChanged は Recordset が機能しているけれども行を取得していることを示し、onDataSetComplete は Recordset が行の取得を終了したことを示します。
参照
RDS のプログラミング モデルとオブジェクト
DataControl オブジェクト (RDS)
DataFactory オブジェクト (RDSServer)
DataSpace オブジェクト (RDS)
RDS のシナリオ
RDS チュートリアル
RDS の使用方法とセキュリティ