RDS 的目的是通過 Internet Information Server 這樣的媒介來訪問和更新數據源。編程模型則指定為完成這個目的所必需的活動序列。對象模型指定其方法和屬性影響編程模型的對象。
RDS 提供執行以下動作序列的途徑:
指定在服務器上被調用的程序,并獲得通過客戶端調用該程序的方式(代理)。(RDS.DataSpace)
調用服務器程序。將參數傳遞給標識數據源及所要發布的命令的服務器程序。(代理或 RDS.DataControl)
服務器程序從數據源獲得 Recordset 對象(一般通過使用 ADO)。可選擇在服務器上處理 Recordset 對象。(RDSServer.DataFactory)
服務器程序將最終的 Recordset 對象返回客戶端應用程序。(代理)
在客戶端,Recordset 對象被轉換成可視控件能方便使用的格式。(可視控件和 RDS.DataControl)
對 Recordset 對象所作的更改被返回服務器并用于更新數據源。(RDS.DataControl 或 RDSServer.DataFactory) 下列元素是 RDS 編程模型中的關鍵部分:
RDS.DataSpace
RDSServer.DataFactory
RDS.DataControl
事件 RDS.DataSpace
客戶應用程序必需指定服務器和要調用的服務器程序。相應的,應用程序接收對服務器程序的引用,并且將此引用當作實際的服務器程序。
RDS 對象模型包含 RDS.DataSpace 對象的該功能。
使用程序標識符(即 ProgID)可對服務器程序進行指定。服務器使用 ProgID 和服務器計算機的注冊表來定位需初始化的程序的信息。
根據服務器程序是在由 Internet 或 Intranet 連接的遠程服務器上,還是在連接局域網的服務器上,或者根本不在服務器而在本地動態連接庫 (DLL) 上,RDS 可在內部進行劃分。該劃分決定在客戶與服務器之間交換數據的方式,并對于返回給客戶應用程序的“引用”類型中有著實際的區別。然而,從用戶的角度來看,該劃分沒有特殊的意義。所有這些只是令您接收到可用的程序引用。
RDSServer.DataFactory
RDS 提供的默認服務器程序可對數據源執行 SQL 查詢并返回 Recordset 對象,或獲得 Recordset 對象并更新數據源。
RDS 對象模型用 RDSServer.DataFactory 對象來代表該功能。
此外,該對象具有創建空的 Recordset 對象的方法,可用編程的方式對該空 Recordset 進行填寫。它還有另一種方法可將 Recordset 轉換為文本串來建立 Web 頁。
使用 ADO 2.0,可以利用 DataFactory 處理程序和包含連接、命令和安全參數的自定義文件覆蓋一些標準連接和 RDSServer.DataFactory 的命令行為。
服務器程序有時可稱作“業務對象”。您可以編寫自己的自定義業務對象,它可以執行復雜數據訪問,有效性檢查等諸如此類的功能。甚至在編寫自己的自定義業務對象時,可創建 RDSServer.DataFactory 對象并且使用它的一些方法完成自己的任務。
RDS.DataControl
RDS 提供了可將 RDS.DataSpace 和 RDSServer.DataFactory 的功能結合在一起的方法。RDS 也能讓可視化控件容易地使用對數據源的查詢所返回的 Recordset 對象。大多數情況下,RDS 總是盡可能多的自動訪問服務器上的信息,并且將信息顯示在可視化控件中。
RDS 對象模型用 RDS.DataControl 對象來具體化該功能。
RDS.DataControl 有兩個方面。一個方面與數據源有關。如果設置 RDS.DataControl 的命令和連接屬性,它將會自動使用 RDS.DataSpace 創建對默認 RDSServer.DataFactory 對象的引用。然后 RDSServer.DataFactory 將使用連接屬性的值連接到數據源,并使用命令屬性的值從數據源獲得 Recordset,最后將 Recordset 對象返回到 RDS.DataControl。
第二個方面涉及在可視化控件中顯示被返回的 Recordset 信息。可以使可視控件與 RDS.DataControl 相關聯(在稱為綁定的過程中),并訪問關聯的 Recordset 對象中的信息,查詢結果顯示在 Internet Explorer 的 Web 頁上。每個 RDS.DataControl 對象將一個表示單個查詢結果的 Recordset 對象綁定到一個或多個可視控件(例如文本框、組合框和網格控件等)上。在每頁上可以有多個 RDS.DataControl 對象。每個 RDS.DataControl 對象都可連接不同的數據源,并且包含各自的查詢結果。
RDS.DataControl 對象也有其自己的方法用于定位、排序和篩選相關聯的 Recordset 對象的行。這些方法雖然相似,但與 ADO Recordset 對象所用的方法不同。
事件
RDS 支持兩個獨立于 ADO 事件模型的自身事件。無論 RDS.DataControl ReadyState 屬性何時更改均調用 onReadyStateChange 事件,以此對異步操作的完成、結束或出現錯誤等發出通知。無論何時發生錯誤,即使發生在異步操作執行的過程中,均調用 onError 事件。
注意 Microsoft Internet Explorer 環境提供給 RDS 兩個附加事件: onDataSetChanged 和 onDataSetComplete。
|