Microsoft的数据存取技术演变

来源:互联网 发布:淘宝联盟忘记提现 编辑:程序博客网 时间:2024/06/05 03:25

(转自《Delphl5.x ADO/MTS/CoM+高级程序设计篇》李维著)

Microsoft在Windows平台中提供了数种不同的数据存取技术。这些不同的数
据存取技术各有它们的特性和出现的原因。Microsoft也从实现这些不同的数据存
取技术中学习到了许多经验,并且根据这些经验开发出新一代技术,ADO便是一
个非常好的范例。现在就让我们从各种不同的数据存取技术角度来看看每一种技
术出现时,它是为了存取什么样的数据源。

1.ODBC
1992年Microsoft和Sybase、Digital共同制定了ODBC标准接口,以单一的
ODBC API来存取各种不同的数据库。随后ODBC便获得了许多数据库厂商和
Third-Party的支持而逐渐成为标准的数据存取技术。
ODBC以当时的业界标准规范X/Open Call-Level Interface(CLI)和ISO/IEC
9075-3 Call-Level Interface(SQL/CLI)为涵盖的范围,因而支持了广阔的数据库。
虽然ODBC在初期的版本中执行效率不佳,而且功能有限,因此也为人们所贬低。
但是,随着Microsoft不断地改善ODBC,使ODBC的执行效率不断增加,ODBC驱
动程序的功能也日渐齐全。到目前,ODBC已经是一个稳定并且执行效率良好的数
据存取引擎。
不过ODBC仅支持关系数据库,以及传统的数据库数据类型,并且只以C/C++
语言API形式提供服务,因而无法符合日渐复杂的数据存取应用,也无法让脚本语
言使用。因此Microsoft除了ODBC之外,也推出了其他的数据存取技术以满足程序
员不同的需要。

2. DAO
1993年Microsoft为了让程序员能够存取Access数据库,使用OLE Automation
技术封装了Jet Engine。这些使用Jet Engine存取Access数据库的OLE Automation
Object便称为Data Access Object(DAO)。
DAO能够存取xBase的数据库以及Excel文件,并且能够结合ODBC存取关系
数据库。但是DAO毕竟主要的设计目的是存取Access数据库,因此DAO在存取
Access数据库时非常有效率,但是在存取其他的数据源时却表现得不怎么好。目前
DAO已经慢慢接近维护的状态,因此建议各位尽量不要在新的项目中使用DAO。

3. RDO
由于DAO在结合ODBC存取关系数据库时表现得并不好,因此在1995年
Microsoft同样以OLE Automation技术直接封装ODBC API,让程序员能够存取关
系数据库。这种数据存取技术便称为Remote Data Object(RDO)。
Microsoft之所以推出RDO,是因为ODBCAPI是非常复杂的API,许多程序员
无法直接使用ODBC API来开发应用程序,因此Microsoft以简化的RDO对象让程序
员能够较为简单存取数据。此外,通过RDO,VB和脚本语言也能够存取各种关系
数据库。不过目前RDO也已经逐渐地被放弃了,因此建议各位也不要在新的项目
第1章ADO/MTS/COM+和分布式多层架构3
下载
中使用RDO,毕竟RDO只能算是一个过渡性质的数据存取解决方案。

4. OLE-DB
随着数据源日益复杂化,现今的应用程序很可能需要从不同的数据源取得数
据,加以处理,再把处理过的数据输出到另外一个数据源中。更麻烦的是这些数
据源可能不是传统的关系数据库,而可能是Excel文件,Email或Internet/Intranet上
的电子签名信息。Microsoft为了让应用程序能够以统一的方式存取各种不同的数
据源,在1997年提出了Universal Data Access(UDA)架构。UDA以COM技术为核心,
协助程序员存取企业中各类不同的数据源。
UDA以OLE-DB(属于操作系统层次的软件)做为技术的骨架。OLE-DB定义了
统一的COM接口做为存取各类异质数据源的标准,并且封装在一组COM对象之中。
藉由OLE-DB,程序员就可以使用一致的方式来存取各种数据。

5. ADO
虽然OLE-DB允许程序员存取各类数据,是一个非常良好的架构,但是由于
OLE-DB太底层化,而且在使用上非常复杂,需要程序员拥有高超的技巧,因此只
有少数的程序员才有办法使用OLE-DB。这让OLE-DB无法广为流行。为了解决这
个问题,并且让VB和脚本语言也能够藉由OLE-DB存取各种数据源,Microsoft同
样以COM技术封装OLE-DB为ADO对象,简化了程序员数据存取的工作。由于
ADO成功地封装了OLE-DB大部分的功能,并且大量简化了数据存取工作,因此
ADO也逐渐被愈来愈多的程序员所接受。

6.ADO的架构
ADO主要是让应用程序或Web应用程序存取各种不同的数据源。ADO封装了
OLE-DB复杂的接口,以极为简单的COM接口存取数据。图1-1是ADO的架构图。
从图1-1我们可以看到,ADO能够藉由OLE-DB存取传统的关系数据库,或Flat-File
类型的数据库;也可以存取非传统的数据,例如文字、Email、声音、图形、影像
等。更可以通过OLE-DB,藉由Connector来存取大型的数据源,例如CICS等。但
是不管应用程序要存取哪一种数据源,应用程序都只需要使用ADO,而不需要使
用各种不同的复杂API来存取不同的数据,这样就可以大大简化应用程序员的工
作。

原创粉丝点击