资源描述
NET基于两层的SqlDataSource和基于三层的
ObjectDataSource的数据插入和更新的性能对比研究
【摘要】本文首先介绍了 SqlDataSource和ObjectDataSource的相
关层次结构及两个控件的主要用途,然后概述了 SqlDataSource的主要功
能,最后通过完成了 SqlDataSource和ObjectDataSource的数据插入和
更新的性能对比试验,通过实验对比两个控件的性能,并对试验结果进行
分析,从而为研究人员和企业级的应用人员在项目开发中根据实际需要,
选择最高效和最有用的控件时提供参考。
【关键词】SqlDataSource; ObjectDataSource;层次结构;表示层
一、SqlDataSource控件和ObjectDataSource控件的相关层次结构
两层应用程序层次结构是指应用程序的表示层〔如ASP。NET网页〕
可以与其数据层〔如数据库、ML文件等〕直接进行通信。表示层用来把
数据呈现给用户,主要处理界面元素;而数据层集中处理数据的插入、更
新、存储、查询等功能。大多数ASP。NET数据源控件都是两层应用程序
层次结构,比如SqlDataSource,它的两层分别是表示层和数据层。
两层应用程序层次结构本身有很多优点,使用也能方便,比如它降低
了网络上的信息流量,也将服务器的一些工作压力转移给了客户端,但是
缺点也很明显,主要表现为:第一,当系统因需求变化需要改变数据结构
时,表示层往往要经过非常大的修改,此时系统越大,表示层的修改量就
越大,即使一个表结构的微小变动也会导致表示层多个模块的修改。第二,
两层应用程序层次结构在分析设计阶段和代码编写阶段对每个开发人员的
要求都非常高,系统的每个开发人员不但要熟练掌握编程语言和开发环境,
而且还要对需要开发的系统有很深的了解。第三,两层应用程序层次结构
的数据层通常都是在一台服务器上,服务器的负荷还是比较重。但是在企业级的应用中,实际常用的应用程序设计原则却需要将表示层与业务逻辑
相分离,所以原有的两层应用程序层次结构在理解和设计上略显不足,于
是出现了三层应用程序层次结构。
三层应用程序层次结构是指应用程序被分成了表示层、中间层〔如封
装业务逻辑的层〕、数据层,三个层协同工作,来完成应用程序的功能,
比如ObjectDataSource,它可用作数据控件〔如GridView、FormView或
DetailView控件〕的数据接口,允许以声明方式将数据绑定到由自定义
业务对象公开的数据,以用于多层Web应用程序结构,这正是三层架构甚
至N层架构所需要的。中间层是由于应用程序在设计的时候,业务逻辑常
常不是封装在表示层中,而是将业务逻辑从表示层中分离出来,并将业务
逻辑封装在业务对象中,于是这些业务对象在表示层和数据层之间形成了
中间层,进而生成了一种三层应用程序结构。
三层应用程序层次结构的优点主要体现在以下几个方面:第一、应用
程序的模块化程度更高。第二,各个层的软硬件资源得到了更有效更合理
的利用,因为它将三层的工作负荷合理地分配到了多台计算机上。第三、
当系统的需求发生变化时,只需要增加或者修改对象的相关属性和操作就
可以完成任务,这大大提高了系统的灵活性[1]。
二、SqlDataSource 控件和 ObjectDataSource 控件的主要用途
SqlDataSource控件是两层模型中使用的,其页面是直接访问数据库
的。也就是说,其表示层〔ASP。NET网页〕可以与数据层〔数据库和ML
文件等〕直接进行通信。如果是两层模型且数据存储在SQLServer.
SQLServerEpre、OracleServer、ODBC 数据源、OLEDB 数据源或
WindowSQLCE数据库中,就应使用SqlDataSource控件。
ObjectDataSource控件用于三层模型中,它的页面通过中间业务对
象访问数据库。它将表示层与业务逻辑相分离,而将业务逻辑封装在业务
对象中,这些业务对象形成了中间层,ObjectDataSource通过提供一种
将相关页上的数据控件绑定到中间层业务对象的方法,为三层结构提供支
持。在不使用扩展代码的情况下,ObjectDataSource使用中间层业务对
象以声明方式对数据库进行操作。
三、SqlDataSource控件的主要功能
SqlDataSource控件的主要作用是将基于SQL的关系数据库中的数据
呈现给与其绑定的数据控件,由于这种呈现方式使用的是ADO。NET类,
因而它可以访问和操作ADO。NET所支持的任何数据库。通常情况下,
SqlDataSource 一般访问和操作的关系数据库和数据源主要包括
MicrooftSQLServer、Oracle 数据库、OLEDB 和 ODBC 数据源中的数据,
SqlDataSource通过ProviderName属性的值区分这些数据源,比如如果
连接的是OLEDB或ODBC,则可以分别将SqlDataSource控件的
ProviderName 属性设置为 Sytem。Data。OleDb 或 Sytem。Data。Odbc[2]。
SqlDataSource的功能非常强大,主要体现在以下个方面:
1、 SqlDataSource可以在页面中访问和操作数据,而无需直接使用
ADO。NET 类。
2、 在运行时,SqlDataSource控件会自动连接数据库,执行SQL语
句或存储过程,返回数据,然后自动关闭连接。
3、 SqlDataSource与数据绑定控件一起使用,可以方便地在网页上
显示和操作数据。
4、当SqlDataSource需要与数据源进行连接时,除了需要通过
ProviderName属性对数据源进行设置外,还需提供用于连接数据源的连
接字符串,并定义使用数据的SQL语句或存储过程。
5、 连接字符串的传入有两种方式,一种是将连接字符串设置为
SqlDataSource控件的ConnectionString属性值,从而传入连接数据源
所需的信息。另一种方式是不将连接字符串直接传给ConnectionString
属性,而是在应用程序配置文件web。config中的connectionstring配
置元素下单独配置连接字符串,从而将该配置元素的全部连接字符串作为
配置文件的一部分进行保存,这种配置方式不但避免了在页面的源代码中
处理连接字符串,而且可以通过使用ProtectedConfiguration对全部连
接字符串进行加密处理。
6、 连接字符串的内容需要随着访问数据源类型的不同而进行相应的
修改,比如如果是访问和操作数据库,连接字符串的内容需要包括服务器
名称或者服务器的IP地址、数据库名称、数据库用户的身份验证等信息。
10、SqlDataSource 可以返回 DataSet 或 DataReader 对象,默认情
况下,它返回的数据格式是DataSet对象,如果想要指定返回的数据格式,
只需要设置DataSourceMode属性即可。DataReader和DataSet这两种数
据格式的区别主要在于功能和速度两个方面,DataReader是按顺序读取
数据且是只能读取数据,但是速度相对DataSet要快,DataSet不用按顺
序读取数据且可读可写,所以DataSet可以执行排序、分页、筛选、维护
缓存等操作,但速度相对DataReader要慢。正是这些区别决定了这两种
数据格式的用途,如果要在检索数据后对数据进行排序、分页、筛选、维
护缓存,就可以选择返回DataSet。相反,如果只希望返回数据并且正在
通过页面上的控件如DropDownLit、LitBo或GridView对返回的数据执行
显示操作,就选择返回DataReader。
11、 SqlDataSource提供了对它已检索数据的缓存功能,这种缓存功
能由于避免了重复查询操作的巨大开销,因而大大提高了应用程序的性能,
所以只要检索到的数据相对稳定,占用的系统内存不多,就应该使用缓存。
但是默认情况下SqlDataSource不启用缓存。如果要启用缓存,只须让
EnableCaching属性的值为true即可。缓存的时间单位默认是秒数,缓
存时间可以通过CacheDuration属性进行设置。实际上,对于数据源的连
接、选择命令、选择命令的参数和设置缓存的每一个组合,数据源控件在
后台都管理着一个单独的缓存项。此外,SqlDataSource能够使用
SQLServer数据库服务器的缓存依赖项功能,即如果连接的是SQLServer
数据库,且SQLServer数据库的版本支持缓存依赖项功能,即一直保留缓
存中的数据直到SQLServer报告在指定的表中直执行更改操作为止,这种
缓存机制仅在必须获取最新数据时才再次执行数据检索操作,使用这种类
型的缓存由于最大限度地减少了 Web应用程序执行数据检索的次数,从而
大大减少了数据检索的开销甚至重复进行缓存的开销,进而大大提升了数
据访问的性能。
12、 SqlDataSource如果返回的是Data-Set对象,那么它就可以处
理与其绑定的数据源控件的排序请求。
13、 如果SqlDataSource返回的是DataSet对象,而且
SqlDataSource也已经启用了缓存,那么它就可以进行数据筛选操作,而
不需要再次运行查询操作。它的FilterEpreion属性可以指定数据源控件
的数据的选择条件。当然也可以创建FilterParameter对象,以便在运行
时为筛选表达式提供相应的值,从而完成对筛选表达式的参数处理。数据筛选操作也可以通过指定将用作SqlDataSource控件下的DataView对象
的RowFilter属性的筛选器表达式完成。
四、SqlDataSource和ObjectDataSource的数据插入和更新的性能
对比试验及分析
1、实验方案设计
为了对SqlDataSource控件和ObjectDataSource控件的数据插入和
更新的性能进行研究,现在设计和完成一个试验,实验方案设计如下:
首先,在同一台计算机上同时安装WIN-DOWS平台、SQLSERVER2022
数据库数据库和。Net程序运行环境,同时卸载试验机的一切外部程序,
这样不但可以避免计算机的硬件环境、操作系统、应用程序环境和网络状
况等外部条件和软件环境对实验结果的影响,而且可以避免网络状况对实
验结果的影响。
其次,建立实验需要的数据库,并在其中建立表对象和用于处理数据
的存储过程。
第三,为了避免数据库中数据类型和数据的存放顺序对实验结果的影
响,针对不同数据类型的升序数据和降序数据分别建立不同的表对象。
第四,在。NET环境中分别完成用SqlDataSource和
ObjectDataSource对数据库中不同的表对象进行数据插入和数据更新的
相关程序源代码,并完成代码的功能测试和压力测试。
第五,按照实验条件开始实验,并分别记录SqlDataSource和
ObjectDataSource的相关程序对不同数据类型的升序数据和降序数据执
行数据插入和数据更新所需要的时间。
第六,对实验结果进行数据分析和误差分析,并得出这两个控件在数
据读取时的优劣性,通过比较两者的性能差距,并同时得出两者性能相同
的临界值,即得出当一次处理的数据量达到多少时,能使SqlDataSource
控件和ObjectDataSource控件的性能相等,这样在企业级应用中当一次
执行插入或更新的数据量大于临界值时,就应该使用性能更优的控件,从
而为研究人员、软件开发人员、项目设计人员和其他应用人员在
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索