使用对象的 RDS 编程模型
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。