RDO 和客户/服务器设计目标
RDO 和 RemoteData 控件可以满足客户/服务器方面的一系列需求。利用这些远程数据访问功能,可以:
- 获取对于远程 ODBC 数据源的高性能数据访问。快速获得复杂查询结果的能力,是每个数据访问应用程序追求的目标。RDO 提供的性能等级,只有 ODBC 和 VBSQL API 编程模式才能与之媲美。利用远程数据引擎,RDO 大大减少了响应时间,提高了效率。
- 管理存储过程的返回码和输入输出参数。输出参数是从 Oracle 存储过程中提取信息的唯一途径,大量被用于单个查询及许多管理性功能,在很多情况下,如果不分析过程的返回值,就不能确定存储过程是否完全成功。RDO 通过 rdoParameter 对象来支持对这些参数的访问。
- 管理多结果集。通过使用一个查询能够返回几个结果集,因此可以更高效率地利用查询处理程序和系统资源。通过运行一个查询获取的数据,可以填入到多个数据驱动的列表框和菜单中,从而提高性能。另外,将行计数查询与 SELECT 查询结合起来,即可精确地设置滚动条和进度状态条。
- 在单个批处理中提交多个动作查询。在很多情况下,应用程序可以在一个 SQL 语句中提交一系列的 INSERT、DELETE 或 UPDATE 操作。这可以提高性能,因为它减少了网络和远程处理的额外消耗,而且使事务管理更为方便。
- 限制返回或处理的数据行数。用户选择的行数可能超出了 RDO 的实际处理能力,为了处理这种情况,RDO 实现了一种查询管理,用来限制从数据源返回的行数。这样,就可以预计查询的响应时间,更方便地管理用于保存游标键集的工作站及服务器资源。使用同样的机制,也能够限制由于一次数据修改查询所影响的行数。
- 利用服务器端的游标。某些服务器,如 Microsoft SQL Server,支持在服务器上创建的游标键集。在正常情况下,这种类型的游标管理能够显著地提高性能,减少网络负载以及对工作站资源的需求。
- 异步执行查询。如果查询需要执行相当长的时间,那么在执行该查询的同时,应该可以执行其它代码,或者取消该查询。RDO 提供了异步查询选项,可以用它来执行查询,也可以取消异步查询。RDO 还提供了独一无二的事件驱动异步编程接口,从而避免了轮询工作方式。异步处理的应用范围被扩展到开放连接和使用 MoveLast 方法的情况。
- 在初始超时后继续查询。当查询耗尽了在 QueryTimeout 属性中设置的时间时,RDO 允许查询不被取消),继续等待下一个超时周期。
- 支持改进的多态性和“独立”对象创建。RDO 支持通过 Dim 语句创建 rdoConnection 和 rdoQuery 对象。这些独立的对象可以和其它对象联合起来执行操作。例如:可以创建独立于任何 rdoConnection 对象的一个 rdoQuery 对象,并在后来的某一时刻将该对象与一个打开的连接联合起来。
- 支持分离的结果集。RDO 允许创建静态的可读写游标,并断开它与远程服务器的连接。rdoResultset 对象中的数据仍然是可以访问和更改的。一旦将该结果集与另一个 rdoConnection 对象重新联合起来,就可以使用 BatchUpdate 方法把脱机时的更改送到数据库中。
- 创建并管理开放式批处理更新。尽管 ODBC 游标库支持开放式更新的概念,但它仍是基于逐行执行的,而不是批处理。这种更新操作会消耗可观的网络和服务器带宽。如果使用 RDO 新的客户批游标库,则许多行将成组地被插入、更新或删除。这样就减少了与服务器通讯的次数。从而提高了更新的效率,并减少了网络负载。
- 使用存储过程更加简单。RDO 允许将参数化的查询以及存储过程表示为 rdoConnection 父对象的方法。传递参数的方式与传递 Visual Basic 函数参数相同,不必操作任何 rdoParameter 对象。
- 使用底层的 ODBC 句柄。如果对象模型仍不能提供所需的灵活性或控制能力,那么只好直接访问数据源。RDO 提供了访问 ODBC 环境、连接及语句的句柄。
- 减少内存占用空间。很多情况下,客户/服务器前后端应用程序系统受到 RAM 容量的限制。因此,应用程序设计要节约 RAM 及其它工作站资源,这是很重要的。RDO 的内存占用数量明显少于其它编程模式,且它不需要为最低级的游标使用本地内存或磁盘空间。