ADO.NET结构
转自:http://msdn.microsoft.com/zh-cn/library/27y4ybxw(v=VS.80).aspx
ADO.NET 结构
以前,数据处理主要依赖于基于连接的双层模型。当数据处理越来越多地使用多层结构时,程序员正在向断开方式转换,以便为他们的应用程序提供更佳的可缩放性。
ADO.NET 组件
可以使用 ADO.NET 的两个组件来访问和处理数据:
-
.NET Framework 数据提供程序
.NET Framework 数据提供程序
.NET Framework 数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。Connection 对象提供与数据源的连接。Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。DataReader 从数据源中提供高性能的数据流。最后,DataAdapter 提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。
DataSet
ADO.NET DataSet 专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。
下图说明 .NET Framework 数据提供程序与 DataSet 之间的关系。
ADO.NET 结构
选择 DataReader 或 DataSet
在决定应用程序应使用 DataReader(请参见使用 DataReader 检索数据)还是应使用 DataSet(请参见在 ADO.NET 中使用 DataSet)时,应考虑应用程序所需的功能类型。DataSet 用于执行以下功能:
-
在应用程序中将数据缓存在本地,以便可以对数据进行处理。如果只需要读取查询结果,DataReader 是更好的选择。
-
在层间或从 XML Web 服务对数据进行远程处理。
-
与数据进行动态交互,例如绑定到 Windows 窗体控件或组合并关联来自多个源的数据。
-
对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。
如果不需要 DataSet 所提供的功能,则可以使用 DataReader 以只进、只读方式返回数据,从而提高应用程序的性能。虽然 DataAdapter 使用 DataReader 来填充 DataSet 的内容(请参见从 DataAdapter 填充 DataSet),但可以使用 DataReader 来提高性能,因为这样可以节省 DataSet 所使用的内存,并将省去创建 DataSet 并填充其内容所需的处理。
XML 和 ADO.NET
ADO.NET 利用 XML 的力量来提供对数据的断开式访问。ADO.NET 的设计与 .NET Framework 中 XML 类的设计是并进的,它们都是同一个结构的组件。
ADO.NET 和 .NET Framework 中的 XML 类集中于 DataSet 对象。无论 XML 源是文件还是 XML 流,都可以用来填充 DataSet。无论 DataSet 中数据的数据源是什么,DataSet 都可以作为符合万维网联合会 (W3C) 标准的 XML 进行编写,并且将其架构包含为 XML 架构定义语言 (XSD) 架构。由于 DataSet 固有的序列化格式为 XML,因此是在层间移动数据出色的媒介,这使 DataSet 成为在远程向 XML Web 服务发送数据和架构上下文以及从 XML Web 服务接收数据和架构上下文的最佳选择。
ADO.NET 平台要求
Microsoft® Windows XP、Windows 2000、Windows NT 4(含 Service Pack 6a)、Windows Millennium Edition、Windows 98 和 Windows CE 上支持 Microsoft .NET Framework SDK(包括 ADO.NET)。
注意 |
---|
OLE DB .NET Framework 数据提供程序以及 ODBC .NET Framework 数据提供程序要求安装 MDAC 2.6 或更高版本,建议安装 MDAC 2.8 Service Pack 1 (SP1)。可以从 Data Access and Storage Developer Center 上下载 MDAC 2.8 SP1。 |
以下代码示例显示如何将 System.Data 命名空间包含在您的应用程序中,以使用 ADO.NET:
ADO.NET 类在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。当编译使用 System.Data 命名空间的代码时,请引用 System.Data.dll 和 System.Xml.dll。有关 ADO.NET 应用程序的示例,请参见 ADO.NET 示例应用程序。
在层和客户端之间对数据进行远程处理或封送
DataSet 的设计使您能够使用 XML Web 服务方便地通过 Web 将数据传输到客户端,并允许您使用 .NET 远程处理服务在 .NET 组件之间封送数据。您还可以通过这种方式对强类型化的 DataSet 进行远程处理。有关 XML Web 服务的概述,请参见 XML Web 服务概述。有关通过 XML Web 服务使用 DataSet 的示例,请参见通过 XML Web 服务使用 DataSet。
有关远程处理服务的概述,请参见 .NET Framework 远程处理概述。请注意,在 ADO.NET 2.0 中,DataTable 对象也可以与远程处理服务和 XML Web 服务一起使用。