快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

ADO.NET:通向未来之桥

    在Web跨入编程时代之前,对于大多数IT治理者和顾问来说,数据访问只是一个相对而言的问题;所有要用到的数据都必须自己预备好。人们主要关心的问题是选择性能/价格比最好的数据库服务器,系统涉及的所有模块必须和服务器兼容。客户机/服务器应用是这种两层模型最典型的范例。

    随着Web交互性的日益提高和应用的日益广泛,对于第三层――中间层的需求也越来越突出。中间层是一个逻辑层,数据访问组件通常就在这一层上。数据访问组件是唯一有必要了解数据库细节的代码,同时,预备更换或者升级数据库服务器时,数据访问组件也是第一个需要修改的地方。

    接下来,三层系统模型发展成了Windows DNA――现在称为Microsoft .NET服务器系统。Microsoft利用一个统一的模型进行数据访问。这个模型注意的是内容,而不是数据格式和存储媒介。它的详细表达方法建立在UDA(Universal Data Access,通用数据访问)的基础之上,而UDA正是激励OLE DB体系发展的深层理念。为了提供一种通过VB和ASP COM组件方便地、无缝地访问OLE DB功能的途径,Microsoft设计了ADO。ADO 2.0是用来支持OLE DB的第一个版本。在几年之内,ADO发展到了2.6版本,增加和扩展了XML支持,使得经过扩展的ADO对象模型能够匹配所有OLE DB改进功能(例如,对于OLE DB新增的Row和Stream对象,ADO 2.5提供了类似的ADO配套功能)。

    ADO 2.0的核心功能超越了OLE DB。在多层系统中,随着中间层组件的出现,如何为表现层提供最新数据这一问题也随之出现。表现层怎样访问数据?连接怎样打开?或者,我们是否应该维护一份脱机记录(即,一些断开连接之后仍然能够在表现层使用的数据库记录)?ADO 2.0以及它的更高版本同时提供了对服务器端游标和脱机记录集的支持(脱机记录集是一种COM对象,它可以跨越网络串行化,客户可以下载它然后脱机使用)。 

    服务器端游标代表着一个紧密结合的、保持连接的环境,在这个环境中我们总是维持着各个层之间的有效通道,只有结束时才拆除连接。与此相反,脱机记录集是一个有状态的对象,我们可以把它作为一个整体处理,且不必维持连接。脱机记录集使用客户端的静态游标,能够提供一个数据源的快照。对于那些只有读取要求、且需要在各个系统层之间移动数据的应用程序来说,脱机记录集是很理想的。今天,大多数Web应用程序要求在各个层之间传输数据。为了获取这些数据,我们常常使用迅速的“只能向前”游标,用XML编码数据,然后通过网络发送数据,避免了在Web服务器上维持会话状态信息。在分布式环境中,数据库连接是一种要害性的资源,以脱机方法工作保证了高可伸缩性。

    然而,Web是一把双刃剑。Web让我们连接到任何类型的联机服务,而且能够与它们进行交互。但是,Web也要求一定程度的互操作性,因为操作所涉及的各个服务可能运行在不同的软件和硬件平台上。我们可以通过利用开放的标准,以及那些不注意私有权的技术――甚至是象COM+这类广泛应用的私有技术,跨越不同的平台。

    今天,基于Windows的Web数据访问应用程序利用了ADO丰富的、方便的编程接口。然而,ADO对象天生地定位在Windows平台上。ADO基于COM的本性使得记录集很难在一个分布式、异种平台构成的环境中使用。另外,即使目标平台可能答应我们使用ADO记录集,它也不具备最有效的机制。ADO.NET的DataSet和DataReader更有效;而且,假如没有ADO.NET,有些时候我们还可以借助XML或纯文本获得高效率。

    为了在Web环境下传输数据,Microsoft对ADO记录集进行了优化。但COM类型转变仍然是一个必不可少的步骤,因为COM的数据类型不可能总是匹配ADO记录集的数据类型(例如,String类型必须转变成BSTR类型)。由此,许多人把XML当成了粘合各个层的“万能胶水”――不管涉及到了哪些平台。通常的做法是:先提取一个记录集,把它保存为XML格式,然后传输结果数据流,让接收者从这个XML数据流重新构造出记录集供以后使用。随着对协同工作能力和可伸缩性要求的提高,ADO不再是最理想的答案,因为它不是建立在XML的基础上――但ADO.NET是。

二、ADO在Web环境中的不足

    .NET框架创立了一种取代COM和COM+的新组件模型。.NET的提出是Microsoft成熟的组件技术的新战略。虽然几个要害性的COM特色不再在.NET中出现,但在某些方面,.NET与COM编程仍然很相似。因此,COM程序员将能够方便地转向.NET开发。ADO.NET是Microsoft特殊为.NET框架设计的数据访问层,它在很大程度上利用了.NET的优势。

    为什么.NET必须用一个新的数据访问层来替代现有的、广泛应用的数据访问接口,比如ADO?现代Web应用系统必须具备客户机/服务器应用和桌面应用的交互能力,Microsoft设计.NET的目标正是为了迎接设计现代Web应用系统的挑战。同时,.NET也利用了各种Web协议广泛的、强盛的连接能力和协同操作能力。

    在非Windows平台上,ADO记录集不能直接使用,从而使得协同操作能力受到了限制。为了突破这个限制,我们要把记录集转变成XML格式,然后传输转变得到的XML记录集。在ADO.NET中,把数据转变成XML以及通过网络传输的操作得到了简化和优化。另外,ADO对象模型中的每一个地方都体现了以数据库为中央的思想。ADO把数据看成是一组来自数据源的记录,而不是把数据看成一些独立的信息。在ADO中,假如脱离了数据提供者用来保存和描述数据的结构,数据将不能独立存在。

三、ADO.NET数据集和ADO记录集

    ADO.NET是从Web的角度对ADO进行检讨和改进。Microsoft对ADO.NET的设计严格地体现了其名字的含义:ADO,再加上.NET。ADO.NET自动连接网络,致力于让Web数据访问变得更加简朴和高效。两个功能使得这方面的增强成为可能:脱机记录集,以及与生俱来的对XML的支持。由于采用了脱机记录集方案,ADO.NET自然也就不再支持服务器端游标。ADO.NET天生就把记录数据保存为XML文档,把模式(Schema)和数据视为分离的、可替换的元素。

    假如你认为ADO早就提供了这些功能,它们并没有什么创新意义,那么,ADO.NET还提供了其他许多新的功能。ADO.NET能够使用连接的或者非连接的(脱机的)记录集,详细由用户选择的游标类型和游标位置决定。ADO记录集的本地存储格式是ADTG文件格式(Advanced Data TableGram,高级数据表图)。ADTG是一种Microsoft私有的二进制存储模式,代表着记录集在内存中的映像。XML是可替换使用的、确定的、具体输出格式。在ADO.NET中,我们可以断开一个记录集集合的连接,通过一个默认(但答应更改)的XML模式再现记录集集合。

    在ADO.NET对象模型中,DataSet(数据集)是最重要的对象。一般地,一个DataSet对象就是一个记录集的集合。ADO.NET框架提供了记录集的所有数据库功能:排序,分页,过滤视图,关系,索引,和主键。

    DataSet对象代表了一个在内存中的、有着丰富功能的数据缓冲区。DataSet对象也通过表组织数据,这些表与原始的数据源之间不存在连接。我们可以添加表,表可以通过读取本地或远程XML文件获得,或者也可以从任何可访问的系统资源(包括内存和其他附属设备在内)读取。我们可以排序、索引、过滤数据表,象处理ADO的Recordset相同导航数据表。

    我们可以通过命令用数据集合填充DataSet对象。假如用.NET集合的形式为DataSet对象提供数据表(具有集合功能的.NET数据类型是ICollection),同一个DataSet对象能够服务来自多个连接的多个哀求。ADO.NET的DataSet对象比ADO的Recordset更一般化;与ADO的Recordset不同,它是对数据源的一种抽象。然而,DataSet对象保留了一个在内存中工作的数据存储器;它没有完全淘汰记录集功能。假如我们只需要一次性地滚动记录集,然后生成某种输出,那么,我们应该使用DataReader对象。.NET的DataReader对象类似于“只能向前、只读”的记录集,但它是一个高度专用化的对象,所以无论在体积和开销上它都要比记录集小。事实上,记录集能够执行许多不同的任务,是一个相称臃肿的对象。与ADO的Recordset相比,DataReader不包含进行“家务治理”的代码,除了实现功能所必需的代码之外,它不包含任何其他代码。

    把多个表作为一个整体治理以及答应建立这些表之间的关系,这是ADO.NET的新功能。我们可以用XML形式持久化或传输任何DataSet对象,而且无需付出任何额外的代价,因为DataSet对象本身就是按照XML格式构造。因此,除非要修改底层模式,否则,我们无需为了获得一个XML流而去转变DataSet对象的任意一个部分。

本新闻共3页,当前在第1页  1  2  3  

本新闻共2页,当前在第1页  1  2  


返回类别: 教程
上一教程: ASP.Net中程序构架与程序代码的分离
下一教程: 如何使用.net操作ddeml?

您可以阅读与"ADO.NET:通向未来之桥"相关的教程:
· 透过vs.net数据窗体向导看Ado.net
· ASP.NET 打造互联网未来空间站(4)
· 使用ADO.NET轻松操纵数据库
· ADO.NET对象的构造(7)_OleDbParameter(中)
· 一个经典的ADO.NET入门例子
    微笑服务 优质保证 索取样品