ADO和ADO.NET

 
ADO

对于用本机代码编写的应用程序,ADO 为 OLE db 数据提供程序提供基于 com 的应用程序级别
接口。与 ADO.NET 相似,ADO 支持各种开发需要,包括使用与关系数据库和其他存储区中的数
据的活连接来创建前端数据库客户端和中间层业务对象。而且,像 ADO.NET一样,ADO可构建客
户端记录集、使用松耦合记录集、处理 OLE DB 的数据整形行集合。

ADO还支持一些不通过 ADO.NET公开的行为,如可滚动的服务器端游标。然而,因为服务器端游
标需要保存数据库资源,所以使用它们可能会对应用程序的性能和可缩放性产生极大的负面影
响。为了通过防火墙传输 ADO 记录集,您需要配置防火墙以启用 COM 封送请求,并考虑相关的
安全后果。COM封送处理还将数据类型限制为COM标准定义的那些数据类型。可选择以 XML格式保
持 ADO 记录集并传输 XML 文本。


ADO.NET
是重要的应用程序级接口,用于在 microsoft .net 平台中提供数据访问服务。在 ADO.NET中,
可以使用新的 .NET framework 数据提供程序来访问数据源。这些数据提供程序包括:

sql SERVER .NET Framework 数据提供程序。
OLE DB .NET Framework 数据提供程序。
ODBC .NET Framework 数据提供程序。
ORACLE .NET Framework 数据提供程序。
这些数据提供程序可以满足各种开发要求,包括中间层业务对象(它们使用与关系数据库和其他
存储区中的数据的活动连接)。

ADO.NET 是专为基于消息的 web应用程序而设计的,同时还能为其他应用程序结构提供较好的功
能。通过支持对数据的松耦合访问,ADO.NET 减少了与数据库的活动连接数目(即减少了多个用
户争用数据库服务器上的有限资源的可能性),从而实现了最大程度的数据共享。

ADO.NET 提供几种数据访问方法。在有些情况下,Web 应用程序或 XML Web services 需要访问
多个源中的数据,或者需要与其他应用程序(包括本地和远程应用程序)进行互操作,或者可受
益于保持和传输缓存结果,这时使用数据集将是一个明智的选择。作为一种替换方法,ADO.NET
提供数据命令和数据读取器以便与数据源直接通信。使用数据命令和数据读取器直接进行的数据
库操作包括:运行查询和存储过程、创建数据库对象、使用 DDL 命令直接更新和删除。

ADO.NET 还通过对分布式 ADO.NET 应用程序的基本对象“数据集”(Dataset) 支持基于 XML 的
持久性和传输格式,来实现最大程度的数据共享。数据集是一种关系数据结构,可使用 XML进行
读取、写入或序列化。ADO.NET 数据集使得生成要求应用程序层与多个 Web站点之间进行松耦合
数据交换的应用程序变得很方便。

因为数据集被远程处理为 XML 形式,所以任何两个组件都可共享数据并使用 XML 架构来定义数
据集的关系结构。而且,因为数据集的序列化格式是XML,所以DataSet对象可轻松穿过防火墙,
而不受任何限制。除了从XML加载数据以外,数据集还可用SQL SERVER中的数据以及通过 OLE DB
公开的数据源中的数据来填充,并可保存对这些数据的更改。

数据集的一个主要特性是可用两种方式访问和操作本地数据集内的数据:

作为关系数据库中的表----数据集可以包含一个表或表的集合。数据集的一个重要特征是,它会
跟踪其所包含的表之间的关系,就好像它是内存中的关系数据存储区。
作为 XML(可扩展标记语言)结构----数据集中的数据还可按照 XML数据的形式访问。提供了完
成以下操作的方法:以 XML 形式读取和写入数据;以 XML 架构形式读取和写入数据集的结构。
此外,为了允许进行同步查看、查询和修改 XML 形式的数据,可将 XmlDataDocument 与数据集
相关联。

 


选择 ADO.NET 或 ADO

ADO.NET 和 ADO都具有以下特点:易于编程;与语言无关;实现过程简单;使用最小网络流量;
应用程序前端和数据源之间需要的层数很少。两种方法都可提供高性能的数据访问。

无论您选择这两种数据访问技术中的哪一种,都会影响应用程序的设计、扩展性、互操作性、易
于维护性以及其他许多方面。这些方面包括:

托管代码  如果您的应用程序是用托管代码编写的,并且基于公用语言运行库构建,则应使用
ADO.NET。如果是用 C++ 编写非托管代码(尤其是在维护现有的 ADO应用程序时),ADO仍是一
个不错的选择。数据结构  ADO.NET 数据集可包含一个或多个表,并同时提供基于表的关系视
图和基于 XML 的视图。数据集使用标准的公共语言运行库类型,这可简化编程过程。
ADO 记录集是单个表,只能以记录集形式访问,并且不包含关系。ADO 记录集可以是多表 JOIN
查询的结果,但它仍只是单个结果表。如果希望 ADO 具有多个表,必须拥有多个 Recordset 对
象。由于其集成的关系结构,ADO.NET 数据集可提供更好的功能。

数据共享  ADO.NET 为组件间以及跨层的数据交换提供基础:数据集可以 XML 的形式在 Inte-
rnet上传递,并可通过防火墙。可以在您的应用程序内以关系表的形式查看数据集,而在其他一
些应用程序中以 XML数据结构的形式查看同一数据集。数据集提供方便的双向转换:从数据集表
到 XML 文档,以及从 XML 文档到数据集表。
如果使用 COM 封送处理传输 ADO 记录集,目标应用程序必须编写成使用记录集数据结构。与只
读取 XML 数据相比较,它所要求的编程难度更大。或者,可以将 ADO 记录集保持为 XML,这样
可以更方便地与其他应用程序和服务共享数据。

可缩放性  ADO.NET 是缩放性最强的解决方案。ADO.NET从一开始就被设计为这样一种数据访问
结构,即用来生成具有较低总拥有成本的可缩放 Web应用程序的最佳数据访问结构。如果您不需
要可缩放性并且不用托管代码编写,则可继续使用ADO。游标位置  应用程序可以在以下两个位
置中的任一处建立结果集:在应用程序进程内(客户端游标)或数据存储区进程内(服务器端游
标)。对于任意类型的用户与数据的即兴交互,客户端游标通常是很好的选择。客户端游标在
ADO.NET 中由 DataSet 对象支持,而在 ADO 中则由 ClientCursor Recordset 对象支持。顺序
的、只读服务器游标在ADO.NET中由数据读取器(如 SqlDataReader 或 OleDbDataReader对象)
支持,而在 ADO 中则由只进/只读 Recordset对象支持。顺序的、只读游标为从数据库中读出数
据提供最快的方法。

可滚动、可更新的服务器端游标在 ADO中由可滚动、可更新的 Recordset对象支持。应谨慎使用
服务器端游标。通过服务器端游标进行的针对结果的非顺序滚动和更新操作会保持锁定并导致资
源争用,这将大大限制应用程序的可缩放性。不使用可滚动、可更新的服务器端游标,而在服务
器上对结果的过程处理使用存储过程,应用程序通常会获益。

数据访问连接  ADO.NET 和 ADO 都支持到数据库的显式连接。在 ADO.NET中,开发人员可使用
数据读取器,同时基于当前位置保持锁定状态,并且在读取数据前需要到数据库的连续连接。或
者,数据可放到数据集中。使用数据集时,开发人员可进行以下选择:修改数据集中的数据时保
持连接和事务处于打开状态;或者只在需要将数据填充到数据集并将更改更新回数据库时才打开
连接并使用事务。当正在传输、查看和修改数据集中的数据时,关闭连接可为其他用户释放资源
和锁定。在 ADO中,记录集可在用户通读数据库中的数据时使用打开的连接并保持锁定,或者使
用客户端游标记录集,这样可在不保留数据库连接的情况下处理数据。
数据滚动  ADO.NET 和 ADO 既可按顺序浏览数据,也可不按顺序浏览数据。使用 ADO.NET数据
集,还可以方便地从一个数据表中的一行浏览到另一个表中的相关行。ADO记录集和 ADO.NET 数
据阅读器都支持高速、只能向前、只读的服务器端游标。ADO 记录集唯一支持可滚动、可更新的
服务器端游标,尽管这种游标使用服务器资源,并且大多数情况下可以更好地以存储过程中的逻
辑的形式实现,或者以松耦合的客户端游标的形式实现。
使用简易  ADO.NET数据集提供自我描述的数据,并免除了处理基础数据构造(如表、列、约束
和行)的需要。相反,利用数据集,可使用对象对数据进行类型安全的访问。这使得程序更易读
、写和修改。由于应用程序层可以通过 XML格式的数据集交换数据,因此在应用程序的生命周期
中可以方便地实现新的扩展通信。使用 ADO.NET时,使用哪种语言进行数据访问无关紧要:它们
在语法上都是类似的,并使用相同的公共语言运行库服务。
虽然 ADO.NET 和 ADO 都支持松耦合的数据访问,但二者存在差异。利用 ADO.NET,可通过修改
DataAdapter 对象使用的语句,或通过插入可响应行更新事件的自定义代码,来控制数据集更改
传输到数据库的方式。使用该功能可以优化性能、修改验证检查或添加其他任何额外处理,所有
这些操作都不必更改您的应用程序。有关更多信息,请参见 .NET 应用程序结构中的问题。


ADO 与ado.NET


摘要ADO与ADO.NET是微软提供的一种高性能访问信息源的策略,这些技术可以使企业很方便的整合多种数据源,创建易维护的解决方案。


目录1. ADO与ADO.NET简介2. 数据访问方式的历史3. ADO与ADO.NET对照4. 小结


1. ADO与ADO.NET简介ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用于建立基于客户端/服务器和 web 的应用程序的主要功能。但是ADO使用OLE db接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。众所周知.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADO和OLE DB接口,这也就是说ADO.NET和ADO是两种数据访问方式。


2. 数据访问方式的历史下面简单的回顾一下微软的数据访问方式所走过的几个阶段。ODBC – (Open Database Connectivity)是第一个使用sql访问不同关系数据库的数据访问技术。使用ODBC应用程序能够通过单一的命令操纵不同的数据库,而开发人员需要做的仅仅只是针对不同的应用加入相应的ODBC驱动。DAO - (Data Access objects)不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。RDO – 在使用DAO访问不同的关系型数据库的时候,Jet引擎不得不在DAO和ODBC之间进行命令的转化,导致了性能的下降,而RDO(Remote Data Objects)的出现就顺理成章了。OLE DB – 随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM(Component Object Model)的OLE DB应运而生了。ADO – 基于OLE DB之上的ADO更简单、更高级、更适合Visual Basic程序员,同时消除了OLE DB的多种弊端,取而代之是微软技术发展的趋势。microsoft.com/china/community/images/TechArticleImages/ADO.jpg" alt=""/>
ADO架构图表


3. ADO与ADO.NET对照在开始设计.NET体系架构时,微软就决定重新设计数据访问模型,以便能够完全的基于XML和离线计算模型。两者的区别主要有:ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO 的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线。由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。下面就是以图表的形式描绘了ADO.NET体系
ADO.NET架构图表


4. 小结ADO.NET为.NET构架提供了优化的数据访问模型,和基于COM的ADO是完全两样的数据访问方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者Visual Basic,甚至Delphi,微软的竞争对手Borland的一个产品,现在也支持使用ADO来访问数据库。   在新的编程框架.NET Framework中, 微软也提供了一个面向Internet的版本的ADO,称为ADO.NET。其对象模型和传统ADO差别很大。 ADO是一种面向对象的编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建一个统一数据库,不如提供一个能够访问不同数据库的统一接口,这样会更加实用一些。为实现这一目标,微软在数据库和微软的OLE DB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。 开发人员在使用ADO时,其实就是在使用OLE DB,不过OLE DB更加接近底层。ADO的一项属性远程数据服务,支持“数据仓库”ActiveX 组件以及高效的客户端缓存。作为ActiveX的一部分,ADO也是COM组件的一部分。ADO是由早期的微软数据接口??远程数据对象RDO演化而来的。RDO同微软的ODBC一同连接关系数据库,不过不能连接非关系数据库。   ADO向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口。对那些熟悉RDO的程序员来说,你可以把OLE DB比作是ODBC驱动程序。如同RDO对象是ODBC驱动程序接口一样,ADO对象是OLE DB的接口;如同不同的数据库系统需要它们自己的ODBC驱动程序一样,不同的数据源要求它们自己的OLE DB提供者(OLE DB provider)。目前,虽然OLE DB提供者比较少,但微软正积极推广该技术,并打算用OLE DB取代ODBC。   ADO向VB程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5的Dao350.dll所占内存的60%)。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以有多个,独立的"Recordset"对象来使用它。ADO针对客户/服务器以及WEB应用程序作了优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值