ADO.NET体系结构概述外文翻译资料
2021-12-20 21:50:38
英语原文共 14 页
ADO.NET体系结构概述
ADO.NET提供对诸如SQL Server和XML等数据源,以及通过OLE DB(对象连接与嵌入数据库)和ODBC(开放数据库连接)公开的数据源的一致访问。数据共享使用者应用程序可以使用ADO.NET连接到这些数据源,并检索,处理和更新它们包含的数据。
ADO.NET将数据访问与数据操作分离为可以单独使用或串联使用的独立组件。ADO.NET包括用于连接数据库,执行命令和检索结果的.NET Framework数据。这些结果要么直接处理,要么放在ADO.NET 数据集对象中,以便以临时方式向用户公开,与来自多个源的数据结合,或者在层之间传递。这些数据集对象也可以独立于.NET Framework数据提供程序使用,用于管理应用程序本地数据或源自XML的数据。
ADO.NET类位于System.Data.dll中,并与System.Xml.dll中的XML类集成。连接到数据库的示例代码,会从数据库中检索数据,然后在控制台窗口中显示该数据。
ADO.NET为编写托管代码的开发人员提供了类似于ActiveX数据对象(ADO)提供给本机组件对象模型(COM)开发人员的功能。我们建议您使用ADO.NET而不是ADO来访问.NET应用程序中的数据。
隐私声明:System.Data.dll,System.Data.Design.dll,System.Data.OracleClient.dll,System.Data.SqlXml.dll,System.Data.Linq.dll,System.Data.SqlServerCe.dll和System.Data.DataSetExtensions.dll程序集不区分用户的私有数据和非私有数据。 这些程序集不会收集,存储或传输任何用户的私有数据。 但是,第三方应用程序可能使用这些程序集收集,存储或传输用户的私有数据
1、ADO.NET架构
传统上,数据处理主要依赖于基于连接的双层模型。随着数据处理越来越多地使用多层体系结构,程序员正在转向断开连接的方法,以便为其应用程序提供更好的可伸缩性。
ADO.NET 组件
用于访问和操作数据的ADO.NET 3.0的两个主要组件是.NET Framework数据提供程序和DataSet(数据集)。
.NET Framework 数据提供程序
.NET Framework数据提供程序是专门为数据操作和对数据的快速仅向前只读访问而设计的组件。Connection(连接)对象提供与数据源的连接。 Command(命令)对象允许访问数据库命令以返回数据,修改数据,运行存储过程以及发送或检索参数信息。DataReader提供来自数据源的高性能数据流。最后,DataAdapter提供了DataSet对象和数据源之间的桥梁。 DataAdapter使用Command对象在数据源上执行SQL命令,以便使用数据加载DataSet,并将对DataSet中的数据所做的更改与数据源进行协调。
The DataSet
ADO.NET DataSet专门用于独立于任何数据源的数据访问。 因此,它可以与多个不同的数据源一起使用,与XML数据一起使用,或用于管理应用程序本地的数据。 DataSet包含一个或多个DataTable对象的集合,这些对象由数据的行和列组成,还包含有关DataTable对象中数据的主键,外键,约束和关系信息。 下图说明了.NET Framework数据提供程序和DataSet之间的关系。
ADO.NET 架构
选择DataReader或DataSet
当您决定应用程序是否应使用DataReader(请参阅使用DataReader检索数据(ADO.NET))或DataSet(请参阅DataSet,DataTables和DataViews(ADO.NET))时,请考虑应用程序所需的功能类型。 使用DataSet执行以下操作::
- 在应用程序中本地缓存数据,以便您可以对其进行操作。 如果您只需要读取查询结果,那么DataReader是更好的选择。
- 层之间或XML Web服务之间的远程数据。
- 动态交互数据,例如绑定到Windows窗体控件或组合和关联来自多个源的数据。
- 对数据执行大量处理,无需与数据源建立开放连接,从而释放连接以供其他客户端使用。
如果您不需要DataSet提供的功能,则可以使用DataReader以只进,只读的方式返回数据,从而提高应用程序的性能。
虽然DataAdapter使用DataReader来填充DataSet的内容(请参阅从DataAdapter填充DataSet(ADO.NET)),但是通过使用DataReader,您可以提高性能,因为您将节省DataSet将耗费的内存,并避免创建和填充DataSet内容所需的处理。.
LINQ(语言集成查询) to DataSet
LINQ to DataSet为DataSet对象中缓存的数据提供查询功能和编译时类型检查。 它允许您使用.NET Framework的开发语言之一编写查询,例如C#或Visual Basic。
LINQ to SQL
LINQ to SQL支持针对映射到关系数据库的数据结构的对象模型的查询,而不使用中间概念模型。 每个表由一个单独的类表示,将对象模型与关系数据库模式紧密耦合。 LINQ to SQL将对象模型中的语言集成查询转换为Transact-SQL,并将它们发送到数据库以供执行。 当数据库返回结果时,LINQ to SQL会将结果转换回对象。
ADO.NET Entity Framework(实体框架)
ADO.NET实体框架旨在使开发人员能够通过针对概念的应用程序模型,进行编程来创建数据访问应用程序,而不是直接针对关系存储架构进行编程。 目标是减少面向数据的应用程序所需的代码和维护量。
ADO.NET Data Services
ADO.NET数据服务框架用于在Web或Intranet上部署数据服务。 根据实体数据模型的规范,数据被构造为实体和关系。
部署在此模型上的数据可通过标准HTTP协议进行寻址。
XML and ADO.NET
ADO.NET利用XML的强大功能提供对数据的断开访问。ADO.NET与.NET Framework中的XML类一起设计; 两者都是单一架构的组成部分。
ADO.NET和.NET Framework中的XML类汇聚在DataSet对象中。 可以使用XML源中的数据填充DataSet,无论是文件还是XML流。 DataSet可以编写为符合万维网联盟(W3C)的XML,其XML架构定义语言(XSD)架构包含其架构,无论DataSet中的数据源如何。 由于DataSet的本机序列化格式是XML,因此它是在层之间移动数据的绝佳媒介,使DataSet成为远程处理XML Web服务的数据和模式上下文的最佳选择。
2、ADO.NET Data Platform(平台)
ADO.NET数据平台是一种多版本策略,通过使开发人员能够针对概念实体数据模型进行编程,减少开发人员所需的编码和维护量。
该平台包括ADO.NET实体框架和相关技术。
Entity Framework(实体框架)
ADO.NET实体框架旨在使开发人员能够通过针对概念应用程序模型进行编程来创建数据访问应用程序,而不是直接针对关系存储架构进行编程。 目标是减少面向数据的应用程序所需的代码和维护量。
Entity Data Model (EDM)(实体数据模型)
实体数据模型(EDM)是一种设计规范,它将应用程序数据定义为实体和关系集。 此模型中的数据支持跨应用程序边界的对象关系映射和数据可编程性。
EDM数据类型和关系在概念模型中定义。这是一个用概念架构定义语言(CSDL)编写的XML模式。 概念模型用于构建表示应用程序数据的可编程类。 开发人员可以根据需要扩展这些对象以支持各种应用程序需求。
Object Services(对象服务)
对象服务允许程序员通过一组公共语言运行时(CLR)类与概念模型进行交互。 这些类可以从概念模型自动生成,也可以独立开发以反映概念模型的结构。 对象服务还为实体框架提供基础架构支持,包括状态管理,更改跟踪,身份解析,加载和导航关系,将对象更改传播到数据库修改以及查询构建支持实体SQL等服务。
LINQ to Entities
LINQ to Entities是一种语言集成查询(LINQ)实现,允许开发人员使用LINQ表达式和LINQ标准查询运算符创建针对Entity Framework对象上下文的强类型查询。 LINQ to Entities允许开发人员使用跨Microsoft SQL Server和第三方数据库的非常灵活的对象关系映射来处理概念模型。
Entity SQL
实体SQL是一种基于文本的查询语言,旨在与实体数据模型进行交互。 实体SQL是一种SQL方言,它包含用于根据更高级别的建模概念进行查询的构造,例如继承,复杂类型和显式关系。 开发人员还可以直接将Entity SQL与Object Services一起使用.
EntityClient(实体客户端)
EntityClient是一个新的.NET Framework数据提供程序,用于与实体数据模型进行交互。
EntityClient遵循.NET Framework数据提供程序模式,即暴露返回EntityDataReader的EntityConnection和EntityCommand对象。 EntityClient与Entity SQL语言一起使用,为存储特定的数据提供者提供灵活的映射。有关更多信息,请参阅
EntityClient和Entity SQL。
ADO.NET Data Services
ADO.NET数据服务框架用于在Web或Intranet上部署数据服务。 根据实体数据模型的规范,数据被构造为实体和关系。
部署在此模型上的数据可通过标准HTTP协议进行寻址.
Entity Data Model Tools(实体数据模型工具)
实体框架提供命令行工具,向导和设计器,以便于构建EDM应用程序。 EntityDataSource控件支持基于EDM的数据绑定方案。 EntityDataSource控件的编程表面类似于Visual Studio中的其他数据源控件。
3、LINQ and ADO.NET
今天,许多业务开发人员必须使用两种(或更多)编程语言:业务逻辑和表示层的高级语言(如Visual C#或Visual Basic),以及与数据库交互的查询语言(如Transact)-SQL)。 这要求开发人员精通多种语言才能有效,并且还会导致开发环境中的语言不匹配。 例如,使用数据访问API对数据库执行查询的应用程序通过使用引号将查询指定为字符串文字。 此查询字符串对编译器是不可读的,不会检查错误,例如无效语法或它引用的列或行是否实际存在。 查询参数没有类型检查,也没有智能感知支持。
语言集成查询(LINQ)使开发人员能够在其应用程序代码中形成基于集合的查询,而无需使用单独的查询语言。 您可以针对各种可枚举数据源(即实现IEnumerable接口的数据源)编写LINQ查询,例如内存数据结构,XML文档,SQL数据库和DataSet对象。 虽然这些可枚举的数据源以各种方式实现,但它们都暴露了相同的语法和语言结构。 因为查询可以在编程语言本身中形成,所以您不必使用嵌入为字符串文字的其他查询语言,编译器无法理解或验证。 将查询集成到编程语言中还可以通过提供编译时类型和语法检查以及智能感知来提高Visual Studio程序员的工作效率。 这些功能减少了查询调试和错误修复的需要.
有关更多信息,请参见LINQ简介。 另请参阅LINQ通用编程指南,其中包含有关如何使用LINQ技术的详细信息.
有三种独立的ADO.NET语言集成查询(LINQ)技术:LINQ to DataSet,LINQ to SQL和LINQ to Entities。 LINQ to DataSet通过DataSet提供更丰富,优化的查询,LINQ to SQL使您可以直接查询SQL Server数据库模式,LINQ to Entities允许您查询实体数据模型。
将数据从SQL表传输到内存中的对象通常是单调乏味且容易出错的。 由LINQ to DataSet和LINQ to SQL实现的LINQ提供程序将源数据转换为基于IEnumerable的对象集合。 当您查询和更新时,程序员始终将数据视为IEnumerable集合。 提供完整的智能感知支持,用于针对这些集合编写查询。
下图概述了ADO.NET LINQ技术如何与高级编程语言和支持LINQ的数据源相关联。
以下部分提供有关LINQ to DataSet,LINQ to SQL和LINQ to Entities的更多信息。
LINQ to DataSet
DataSet是ADO.NET构建的断开连接的编程模型的关键元素,并且被广泛使用。 LINQ to DataSet通过使用可用于许多其他数据源的相同查询制定机制,使开发人员能够在DataSet中构建更丰富的查询功能。
资料编号:[4227]