摘要:本文阐述了ADO.NET的结构与数据模型:数据提供程序和数据集。探讨了利用ADO.NET技术访问数据库访问的两种方式,并且提出了Web数据库访问的性能优化模型。
关键词:ADO.NET;数据集;数据库访问;连接池
中图法分类号:TP311 文献标志码:A
Abstract: This thesis introduces the structure and the data model of ADO.NET:data provider and dataset.It describes the way of the database access in using ADO.NET technology and puts forward the optimization model of Web database access.
Key Words: ADO.NET;DataSet;Database Accessing; Connection Pooling
1 引言
ADO.NET是Mcrosoft.NET应用程序的数据访问模型。它由ADO技术发展而成,在某种程度上,ADO.NET代表了最新版本的ADO技术。ADO.NET引入了一些重大变化和革新,它对XML提供全面的支持,提供了新的非连接数据缓冲模型,使其在构建结构松散的、非链接的WEB应用程序上有着得天独厚的优势。而基于数据库的WEB应用程序一个核心功能就是为用户提供可靠和高效的数据库访问,对数据库访问性能的优劣是评价一个Web应用程序好坏的关键标准。
2 ADO.NET的访问机制
AD0.NET是微软在.NET平台上对数据存取问题的解决方案,在某种程度上,AD0.NET代表了最新版本的AD0技术。并且,AD0.NET也导致了一些重大变化和革新,它专门用于结构松散的、本质非链接的Web应用程序。AD0.NET的主要特点是:断开式数据结构、与XML的紧密集成,以及能够组合来自多个数据源的数据。
AD0.NET包括两个核心组件:.NET框架下的数据提供程序(Data Provider)和数据集(DataSet)。前者实现数据操作和对数据的快速、只读访问,后者代表实际的数据。ADO.NET体系结构如图1所示。
(1).NET Framework数据提供程序
DataProvider组件包括Connection、Command、DataReader和DataAdapter4个对象。其中,Connection对象提供与数据源的连接;Command对象是访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令;DataReader从数据源中提供高性能的数据流;DataAdapter使用.NETFramework数据提供程序的Connection对象连接到数据源,使用Command对象从数据源中检索数据并将更改解析回数据源。
(2)DataSet
如图1所示,DataSet主要由两部分组成:DataTableCollection和DataRelationCollection。DataTableCollection包含零个或多个DataTable对象。一个对象代表驻留内存的数据表,它包含DataColumn所表示的列和Constraint所表示的约束的集合,
作者:周晓娟,女,汉族,硕士研究生,主要研究方向:计算机应用、计算机网络和信息系统.Email: sunny2004 zhou@163.com.
Author:ZHOU Xiao-Juan,female,Chinese,master,prime engage in Computer Applications, Computer Networking and Information System. Email:sunny2004zhou@163.com.
这些列和约束一起定义了该表的结构。DataTable还包含DataRow所表示的行的集合,每个
DataRow对象代表表中的一行数据。DataRelationCollection代表DataSet对象中表之间的关系集合,关系由对象DataRelation来表示。
XML DataAdapter
Connection 事务 Command 参数 DataReader SelectCommand
InsertCommand
UpdateCommand
DeleteCommand
.NET Framework 数据库 XML Columns DataColumn Rows DataRow Constraints
Constraint DataTable DataTableCollection DataRelationCollection DataRelation DataSet
图 1 ADO.NET基本架构
3 ADO.NET的两种访问数据库的模式
对于不同的应用需要,AD0.NET提供了两种模式来访问数据源中的数据:使用DataReader对象进行基于连接的访问和使用DataAdapter对象进行非连接的访问。由于这两种模式的设计目的不同,所以在应用程序开发中应该根据实际需要,选择合适的数据库访问模式以发挥出AD0.NET的最佳性能,这对于提升应用程序性能有着非常重要的意义。下面对两种访问模式进行分析和比较。
3.1 基于连接的访问模式
基于连接的访问模式是基本的数据访问模式.也是实际应用开发中最常采用的模式。这种数据访问模式会占用一个数据库连接,然后读取数据.每个数据库操作都要通过这个连接来与后台的数据源进行交互。基于连接的访问模式是通过DataReader对象来实现的,DataReader对象在已经建立的数据连接的基础上,提供对数据源的向前、只读的在线数据访问方式对数据源数据进行遍历。由于对数据源中的数据进行顺序访问,且在任一时刻只有一条记录位于内存的缓存区中,因此对大量数据的检索时DataReader对象能够提供很高的效率。
3.2 非连接的访问模式
非连接的访问模式是以Dataset为中心的数据访问模式,DataSet是一个非连接的、与数据源无关的类。DataSet本质是内存中缓存区,用于缓存关系型数据,不论DataSet中包含的数据是来自于XML文档、关系型数据库还是通过用户接口以编程方式输入的,数据的表示方式均相同。通过DataAdapter对象对数据源中的数据进行过滤,将需要的数据导人到DataSet中,在DataSet中数据表格可以单独存放,也可以通过DataRelation对象在表格之间建立关联,增加了数据处理的灵活性。DataSet对象的创建将同时导致多个子对象——包括DataTable、DataRow、DataColumn及作为这些子对象的容器的集合对象的创建。
4 ADO.NET性能优化模型
要开发出一个能以有效的方式来检索和存取数据的ASP.NET应用程序,就应该编写高效率高性能经过优化的ADO.NET数据访问代码,充分发挥ADO.NET的优势。为达到这一目的,需要对AD0.NET的不同优化技术和使用方法进行全面的分析,并给出客观的性能测试,特别是数据存取性能上。
ADO.NET数据访问的性能优化内容如图2所示,即:连接池的性能分析;.NET数据提供程序选择比较使用;DataReader,DataSet和RecordSet的性能比较分析;存储过程的性能分析;DataSet和DataReader的调用细节性能分析等。
数据提供程序比较使用 Connection Pooling技术应用 DataReader,DataSet和RecordSet的性能比较使用 存储过程的使用 DataSet和DataReader的调用
图2 ADO.NET性能优化模型
5 结论
AD0.NET作为微软推出的面向分布式应用及面向Internet多层应用的数据访问模型,给开发人员提供了数据访问的可供选择的高效方法,本文讨论分析了在具体应用中对数据访问模式的选择,同时,提出了对数据访问性能优化的模型。在具体的应用中,只有根据数据访问的需要灵活运用,才能够使应用程序获得最大的数据访问效率。
参考文献
[1] 孔延香,李永忠,郭秀峰.ADO.NET数据库访问技术研究与实现[J].现代电子技术,2005.