应用框架设计-01-松耦合的数据访问层讨论
预备知识:
ADO.NET
结构
ADO.NET
的两个组件来访问和处理数据:
- DataProvider
- DataSet
.NET Framework DataProvider
.NET Framework DataProvider
是专门为数据处理以及快速地只进、只读访问数据而设计的组件。
Connection
对象提供与数据源的连接。
Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。
DataReader 从数据源中提供高性能的数据流。
DataAdapter 提供连接 DataSet 对象和数据源的桥梁。 DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。
Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。
DataReader 从数据源中提供高性能的数据流。
DataAdapter 提供连接 DataSet 对象和数据源的桥梁。 DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。
DataSet
ADO.NET DataSet
专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据源,用于
XML
数据,或用于管理应用程序本地的数据。
DataSet
包含一个或多个
DataTable
对象的集合,这些对象由数据行和数据列以及有关
DataTable
对象中数据的主键、外键、约束和关系信息组成。
。
ADO.NET
结构图说明了
.NET Framework
DataProvider
与
DataSet
之间的关系
和我们写程序的关系可以用这个简单的图片来解释:
数据使用有好几种方式,那么究竟该如何quanhen选择
选择
DataReader
或
DataSet
?
在决定应用程序应使用
DataReader
还是应使用
DataSet
时,应考虑应用程序所需的功能类型。
DataSet
用于执行以下功能:
- 在应用程序中将数据缓存在本地,以便可以对数据进行处理。如果只需要读取查询结果,DataReader 是更好的选择。
- 在层间或从 XML Web 服务对数据进行远程处理。
- 与数据进行动态交互,例如绑定到 Windows 窗体控件或组合并关联来自多个源的数据。
- 对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。
如果不需要
DataSet
所提供的功能,则可以使用
DataReader
以只进、只读方式返回数据,从而提高应用程序的性能。虽然
DataAdapter
使用
DataReader
来填充
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
服务接收数据和架构上下文的最佳选择。