NET基于两层的SqlDataSource和基于三层的ObjectDataSource的数据插入和更_第1页
NET基于两层的SqlDataSource和基于三层的ObjectDataSource的数据插入和更_第2页
NET基于两层的SqlDataSource和基于三层的ObjectDataSource的数据插入和更_第3页
NET基于两层的SqlDataSource和基于三层的ObjectDataSource的数据插入和更_第4页
NET基于两层的SqlDataSource和基于三层的ObjectDataSource的数据插入和更_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、NET基于两层的SqlDataSource和基于三层的ObjectDataSource的数据插入和更新的性能对比研究【摘要】本文首先介绍了 SqlDataSource和ObjectDataSource的相关层次结构及两个控件的主要用途,然后概述了 SqlDataSource的主要功能,最后通过完成了 SqlDataSource和ObjectDataSource的数据插入和更新的性能对比试验,通过实验对比两个控件的性能,并对试验结果进行分析,从而为研究人员和企业级的应用人员在项目开发中根据实际需要,选择最高效和最有用的控件时提供参考。【关键词】SqlDataSource; ObjectDataS

2、ource;层次结构;表示层一、SqlDataSource控件和ObjectDataSource控件的相关层次结构两层应用程序层次结构是指应用程序的表示层如ASP。NET网页可以与其数据层如数据库、ML文件等直接进行通信。表示层用来把数据呈现给用户,主要处理界面元素;而数据层集中处理数据的插入、更新、存储、查询等功能。大多数ASP。NET数据源控件都是两层应用程序层次结构,比如SqlDataSource,它的两层分别是表示层和数据层。两层应用程序层次结构本身有很多优点,使用也能方便,比如它降低了网络上的信息流量,也将服务器的一些工作压力转移给了客户端,但是缺点也很明显,主要表现为:第一,当系统

3、因需求变化需要改变数据结构时,表示层往往要经过非常大的修改,此时系统越大,表示层的修改量就越大,即使一个表结构的微小变动也会导致表示层多个模块的修改。第二,两层应用程序层次结构在分析设计阶段和代码编写阶段对每个开发人员的要求都非常高,系统的每个开发人员不但要熟练掌握编程语言和开发环境,而且还要对需要开发的系统有很深的了解。第三,两层应用程序层次结构的数据层通常都是在一台服务器上,服务器的负荷还是比较重。但是在企业级的应用中,实际常用的应用程序设计原则却需要将表示层与业务逻辑相分离,所以原有的两层应用程序层次结构在理解和设计上略显不足,于是出现了三层应用程序层次结构。三层应用程序层次结构是指应用

4、程序被分成了表示层、中间层如封装业务逻辑的层、数据层,三个层协同工作,来完成应用程序的功能,比如ObjectDataSource,它可用作数据控件如GridView、FormView或DetailView控件的数据接口,允许以声明方式将数据绑定到由自定义业务对象公开的数据,以用于多层Web应用程序结构,这正是三层架构甚至N层架构所需要的。中间层是由于应用程序在设计的时候,业务逻辑常常不是封装在表示层中,而是将业务逻辑从表示层中分离出来,并将业务逻辑封装在业务对象中,于是这些业务对象在表示层和数据层之间形成了中间层,进而生成了一种三层应用程序结构。三层应用程序层次结构的优点主要体现在以下几个方面

5、:第一、应用程序的模块化程度更高。第二,各个层的软硬件资源得到了更有效更合理的利用,因为它将三层的工作负荷合理地分配到了多台计算机上。第三、当系统的需求发生变化时,只需要增加或者修改对象的相关属性和操作就可以完成任务,这大大提高了系统的灵活性1。二、SqlDataSource 控件和 ObjectDataSource 控件的主要用途SqlDataSource控件是两层模型中使用的,其页面是直接访问数据库的。也就是说,其表示层ASP。NET网页可以与数据层数据库和ML文件等直接进行通信。如果是两层模型且数据存储在SQLServer.SQLServerEpre、OracleServer、ODBC

6、数据源、OLEDB 数据源或WindowSQLCE数据库中,就应使用SqlDataSource控件。ObjectDataSource控件用于三层模型中,它的页面通过中间业务对象访问数据库。它将表示层与业务逻辑相分离,而将业务逻辑封装在业务对象中,这些业务对象形成了中间层,ObjectDataSource通过提供一种将相关页上的数据控件绑定到中间层业务对象的方法,为三层结构提供支持。在不使用扩展代码的情况下,ObjectDataSource使用中间层业务对象以声明方式对数据库进行操作。三、SqlDataSource控件的主要功能SqlDataSource控件的主要作用是将基于SQL的关系数据库中

7、的数据呈现给与其绑定的数据控件,由于这种呈现方式使用的是ADO。NET类,因而它可以访问和操作ADO。NET所支持的任何数据库。通常情况下,SqlDataSource 一般访问和操作的关系数据库和数据源主要包括MicrooftSQLServer、Oracle 数据库、OLEDB 和 ODBC 数据源中的数据,SqlDataSource通过ProviderName属性的值区分这些数据源,比如如果连接的是OLEDB或ODBC,则可以分别将SqlDataSource控件的ProviderName 属性设置为 Sytem。Data。OleDb 或 Sytem。Data。Odbc2。SqlDataSou

8、rce的功能非常强大,主要体现在以下个方面:1、SqlDataSource可以在页面中访问和操作数据,而无需直接使用ADO。NET 类。2、在运行时,SqlDataSource控件会自动连接数据库,执行SQL语句或存储过程,返回数据,然后自动关闭连接。3、SqlDataSource与数据绑定控件一起使用,可以方便地在网页上显示和操作数据。4、当SqlDataSource需要与数据源进行连接时,除了需要通过ProviderName属性对数据源进行设置外,还需提供用于连接数据源的连接字符串,并定义使用数据的SQL语句或存储过程。5、连接字符串的传入有两种方式,一种是将连接字符串设置为SqlData

9、Source控件的ConnectionString属性值,从而传入连接数据源所需的信息。另一种方式是不将连接字符串直接传给ConnectionString属性,而是在应用程序配置文件web。config中的connectionstring配置元素下单独配置连接字符串,从而将该配置元素的全部连接字符串作为配置文件的一部分进行保存,这种配置方式不但避免了在页面的源代码中处理连接字符串,而且可以通过使用ProtectedConfiguration对全部连接字符串进行加密处理。6、连接字符串的内容需要随着访问数据源类型的不同而进行相应的修改,比如如果是访问和操作数据库,连接字符串的内容需要包括服务器名

10、称或者服务器的IP地址、数据库名称、数据库用户的身份验证等信息。10、SqlDataSource 可以返回 DataSet 或 DataReader 对象,默认情况下,它返回的数据格式是DataSet对象,如果想要指定返回的数据格式,只需要设置DataSourceMode属性即可。DataReader和DataSet这两种数据格式的区别主要在于功能和速度两个方面,DataReader是按顺序读取数据且是只能读取数据,但是速度相对DataSet要快,DataSet不用按顺序读取数据且可读可写,所以DataSet可以执行排序、分页、筛选、维护缓存等操作,但速度相对DataReader要慢。正是这些

11、区别决定了这两种数据格式的用途,如果要在检索数据后对数据进行排序、分页、筛选、维护缓存,就可以选择返回DataSet。相反,如果只希望返回数据并且正在通过页面上的控件如DropDownLit、LitBo或GridView对返回的数据执行显示操作,就选择返回DataReader。11、SqlDataSource提供了对它已检索数据的缓存功能,这种缓存功能由于避免了重复查询操作的巨大开销,因而大大提高了应用程序的性能,所以只要检索到的数据相对稳定,占用的系统内存不多,就应该使用缓存。但是默认情况下SqlDataSource不启用缓存。如果要启用缓存,只须让EnableCaching属性的值为tru

12、e即可。缓存的时间单位默认是秒数,缓存时间可以通过CacheDuration属性进行设置。实际上,对于数据源的连接、选择命令、选择命令的参数和设置缓存的每一个组合,数据源控件在后台都管理着一个单独的缓存项。此外,SqlDataSource能够使用SQLServer数据库服务器的缓存依赖项功能,即如果连接的是SQLServer数据库,且SQLServer数据库的版本支持缓存依赖项功能,即一直保留缓存中的数据直到SQLServer报告在指定的表中直执行更改操作为止,这种缓存机制仅在必须获取最新数据时才再次执行数据检索操作,使用这种类型的缓存由于最大限度地减少了 Web应用程序执行数据检索的次数,从

13、而大大减少了数据检索的开销甚至重复进行缓存的开销,进而大大提升了数据访问的性能。12、SqlDataSource如果返回的是Data-Set对象,那么它就可以处理与其绑定的数据源控件的排序请求。13、如果SqlDataSource返回的是DataSet对象,而且SqlDataSource也已经启用了缓存,那么它就可以进行数据筛选操作,而不需要再次运行查询操作。它的FilterEpreion属性可以指定数据源控件的数据的选择条件。当然也可以创建FilterParameter对象,以便在运行时为筛选表达式提供相应的值,从而完成对筛选表达式的参数处理。数据筛选操作也可以通过指定将用作SqlDataS

14、ource控件下的DataView对象的RowFilter属性的筛选器表达式完成。四、SqlDataSource和ObjectDataSource的数据插入和更新的性能对比试验及分析1、实验方案设计为了对SqlDataSource控件和ObjectDataSource控件的数据插入和更新的性能进行研究,现在设计和完成一个试验,实验方案设计如下:首先,在同一台计算机上同时安装WIN-DOWS平台、SQLSERVER2022数据库数据库和。Net程序运行环境,同时卸载试验机的一切外部程序,这样不但可以避免计算机的硬件环境、操作系统、应用程序环境和网络状况等外部条件和软件环境对实验结果的影响,而且可

15、以避免网络状况对实验结果的影响。其次,建立实验需要的数据库,并在其中建立表对象和用于处理数据的存储过程。第三,为了避免数据库中数据类型和数据的存放顺序对实验结果的影响,针对不同数据类型的升序数据和降序数据分别建立不同的表对象。第四,在。NET环境中分别完成用SqlDataSource和ObjectDataSource对数据库中不同的表对象进行数据插入和数据更新的相关程序源代码,并完成代码的功能测试和压力测试。第五,按照实验条件开始实验,并分别记录SqlDataSource和ObjectDataSource的相关程序对不同数据类型的升序数据和降序数据执行数据插入和数据更新所需要的时间。第六,对实

16、验结果进行数据分析和误差分析,并得出这两个控件在数据读取时的优劣性,通过比较两者的性能差距,并同时得出两者性能相同的临界值,即得出当一次处理的数据量达到多少时,能使SqlDataSource控件和ObjectDataSource控件的性能相等,这样在企业级应用中当一次执行插入或更新的数据量大于临界值时,就应该使用性能更优的控件,从而为研究人员、软件开发人员、项目设计人员和其他应用人员在基于性能选择使用SqlDataSource和ObjectDataSource控件时,提供重要的参考依据。2、实验结果由于采用降序数据和升序数据的实验结果类似,所以这里只列出了一种数据类型降序数据的实验结果。实验结

17、果如下表所示时间单位为秒。3、实验结论从实验结果看,在。NET平台和SQLSERVER2022数据库在同一台服务器上且当需要处理的数据条数在10万条左右时,SqlDataSource控件和ObjectDataSource控件的数据插入和更新时间几乎是相同的,甚至SqlDataSource还稍有优势,但当数据条数超过30万条时,ObjectDataSource的优势开始体现出来,但优势并不明显,仅在2%左右,特别是当数据条数超过45万条甚至60万条时,ObjectDataSource控件的数据插入和更新时间的优势才逐步有所体现,而且优势也不明显,仅在5%左右。尽管上述数据难以避免的存在误差,但不

18、会影响实验结论的准确性。4、数据分析从实验数据看,在当前一般配置的装有WINDOWS系统和SQLSERVER2022的服务器中,当数据条数超过30万条时,ObjectDataSource控件的数据插入和更新的性能优势开始体现出来,但优势并不明显,甚至在数据条数达到60万条时,优势也只是在5%左右,尽管优势不大,但毕竟是有优势,这对于性能要求不高或者处理的数据量不大的应用程序,这种优势的意义并不重大,但对于性能要求较高或者数据插入更新的数据量较大且数据插入更新的较为频繁的应用程序,这种优势的意义却很重大,这一方面是因为大批量数据插入更新的越频繁,其累计效应就越明显,另一方面是因为随着需要处理的数据量的增加,SqlDataSource控件面临着操作超时甚至崩溃的风险。综上所述,在当前一般配置的装有WINDOWS系统和SQLSERVER2022的服务器中,虽然SqlDataSource控件和ObjectDataSource控件都可以进行数据库的数据插入和更新操作,但是在基于性能选择使用它们的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论