




已阅读5页,还剩87页未读, 继续免费阅读
(计算机应用技术专业论文)数据访问层组件性能及性能测试研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 近年来,w e b 应用程序正迅速渗入到社会的各个领域,其规模不断扩大,复 杂性不断增加,如何在不断增长的用户需求下保证w e b 应用程序的服务质量, 成为越来越多w e b 投资人关注的问题。作为衡量w e b 性能的重要手段,w e b 性 能测试己成为w e b 软件开发过程中的一个重要环节。 目前,w e b 测试仍然停留在系统或w e b 页面上,目的是测试w e b 应用程序 所能承受的负载水平,或找出程序存在的瓶颈。组件级别上的性能测试很少涉及。 把性能测试留到已完成开发、站点即将投入运行之时才进行,或者认为总可以通 过硬件扩展来解决性能问题,是当前性能测试中存在的两大误区。事实上,即使 通过w e b 应用程序的压力测试的方法,想从众多组件中分离出存在性能瓶颈的 组件也非易事。 数据访问层d a l ( d a t aa c c e s sl a y e r ) 作为n 层架构应用程序的重要组成部 份,其性能优劣对w e b 性能至关重要。n e t 数据访问技术为数据访问提供了众 多的选择,每一种数据访问解决方案的性能与具体的应用场合直接相关。程序设 计时我们无法预知什么样的解决方案可以获得最优性能,更无法预知应用程序可 以达到的性能。正是由于这些原因,对数据访问层组件进行性能测试十分必要。 本文将用于页面级别上的性能测试工具m sa c t 引申到组件级别上,研究 其在数据访问层性能测试上的应用。重点对数据访问层的测试方法、测试平台、 测试参数和性能指标进行了研究;其次基于测试结果研究了数据访问层的性能特 征;最后对构建高性能的数据访问层提出了优化建议。本文旨在推动性能测试深 入到组件级别,为在软件开发过程中实施数据访问层性能测试及开发出高性能的 数据访问层做出探索。 关键词:w e b 测试;性能测试;数据访问层 a b s t r a c t a b s t r a c t i nr e c e n ty e a r s w e ba p p l i c a t i o np r o g r a mi s r a p i d i yp e n e t r a t i n ga l l a r e a so f s o c i e t y a s i ti s c o n s t a n t l ye x p a n d i n g i ns c a l ea n di t s c o m p l e x i t i e s i n e r e a s e s c o n t i n u o u s l y , n o wag r o w i n gn u m b e ro fw e bi n v e s t o r sc o n c e r nm o r ea b o u th o wt o g u a r a n t e et h es e r v i c eq u a l i t yo f w e ba p p l i c a t i o nf o rt h eg r o w i n gd e m a n d so f t h eu s e r s a sa ni m p o r t a n tm e a n so f m e a s u r i n gw e bp e r f o r m a n c e ,w e bp e r f o r m a n c et e s t i n gh a s b e c o m ea r e a l l yi m p o r t a n tl i n ki nt h ep r o c e s so f w e bs o a r ed e v e l o p m e n t c u r r e n t l y , t h ew e bt e s ts t i l lr e m a i n si nt h el e v e lo fs ”t e mt e s t i n go rw e bp a g e t e s t i n g ,耐mt h ea i mo ft e s t i n gt h ew e ba p p l i c a t i o n sb e a r i n g s ,o ri d e n t i f y i n gi t s e x i s t i n gb o t t l e n e c k s ,b u tr a r e l yi nc o m p o n e n tl e v e lo fp e r f o r m a n c et e s t s n o w a d a y s , t h e r ea r et w oe i t o n e o u si d e a si nt e s t i n gt h ep e r f o r m a n c e ,t oh a v et h ep e r f o r m a n c et e s t a f t e rt h ea c c o m p l i s h m e n to fw e b s i t ed e v e l o p m e n t ;o rt h o u g h tw ew i l ls o l v e st h e p e r f o r m a n c ep r o b l e mt h r o u g hh a r d w a r e - e x p a n da l w a y s i nf a c t ,i ti sn o te a s yt ou s e t h ew e ba p p l i c a t i o ns t r e s st e s t i n gt os e p a r a t et h ep e r f o r m a n c eb o t t l e n e c ko u tf r o mt h e n u m e r o u sc o m p o n e n t s d a t aa c c e s sl a y e ra sa ni n t e g r a lp a r to f n t i e r sa r c h i t e c t u r ea p p l i c a t i o n s ,i th a s t h ee s s e n t i a li n f l u e n c eo nt h ep e r f o r m a n c eo ft h ew e b n e tf r a m e w o r kd a t aa c c e s s t e c h n o l o g yc a np r o v i d eaw i d er a n g eo fd a t aa c c e s so p t i o n s ;t h ed a t aa c c e s ss o l u t i o n p e r f o r m a n c e i s d i r e c t l y r e l a t e d w i 也s p e c i f i ca p p l i c a t i o n so c c a s i o n s d u r i n g p r o g r a m m i n g ,w ec a n n o tp r e d i c tw h a tak i n do fs o l u t i o nc o u l dp r o d u c et h eb e s t p e r f o r m a n c e ;w ec a n n o tk n o wt h ep e r f o r m a n c ec a na tl a s tc o m et ob ea l s o i ti sf o r t h e s er e a s o n st h a tt h ed a t aa c c e s sl a y e rc o m p o n e n t sa r en e c e s s a r yf o rt h ep e r f o r m a n c e t e s t t h i sp a p e rw i l ls t u d yo nt h e1 e | - f o m a a n c et e s to fd a t aa c c e s sl a y e rc o m p o n e n t w i t hp e r f o r m a n c et e s tt o o lm sa c t , w h i c hu s e dp e r f o r m a n c et e s ti np a g el e v e l t h i s p a p e rf o c u so nd a t aa c c e s sl a y e rt e s tm e t h o d s ,t e s tp l a t f o r m ,t e s tp a r a m e t e r sa n d p e r f o r m a n c ei n d i c a t o r sf o rt h es t u d y ;s e c o n d l y , i tw i l ls t u d yo nd a t aa c c e s sl a y e r p e r f o r m a n c ec h a r a c t e r i s t i c sb a s i n go nd a t ao ft h et e s t s ;f i n a l l y , t h ep a p e rg i v eo u t o p t i m i z a t i o n so nb u i l d i n gah i g h - p e r f o r m a n c ed a t aa c c e s sl a y e r t h i sp a p e ra i m st o p r o m o t et h ep e r f o r m a n c et e s t i n gt ot h ec o m p o n e n tl e v e l ,a n dt oe x p l o r ei nd e v e l o p i n g h i g h - p e r f o r m a n c ed a t aa c c e s sl a y e r k e yw o r d s :w e bt e s t ;p e r f o r m a n c et e s t ;d a t aa c e sl a y e r 厦门大学学位论文原创性声明 兹呈交的学位论文,是本人在导师指导下独立完成的研究成果。 本人在论文写作中参考的其他个人或集体的研究成果,均在文中以明 确方式标明。本人依法享有和承担由此论文产生的权利和责任。 髫獬嘞釉缛 滏 胛 k 乒 凡 新 厦门大学学位论文著作权使用声明 本人完全了解厦门大学有关保留、使用学位论文的规定。厦门大 学有权保留并向国家主管部门或其他指定机构送交论文的纸质版和 电子版,有权将学位论文用于非营利目的的少量复制并允许论文进入 学校图书馆被查阅,有权将学位论文的内容编入有关数据库进行检 索,有权将学位论文的标题和摘要汇编出版。保密的学位论文在解密 后适应本规定。 本学位论文属于 l 、保密() ,在年解密后适用本授权书。 2 、不保密( ) 作者签名撕鲜 刷谧名卿镲v 、i 日期:砷卅绰r 月必日 ,一 日期:加g 年5 月巧日 第一章引言 1 1 论文背景 第一章引言 随着网络技术的发展,w e b 正以其交互性、易用性和快捷性等特点越来越受 到企业和个人的青睐。日益增长的用户需求,要求w e b 系统能够处理更多的用 户请求,并且同时提供更短的系统响应时间,所以w e b 性能开发已成为w e b 开 发的一项重要内容。 微软推出的n e t 平台,使得我们可以按照n 层架构的方法对w e b 应用程序 进行开发和布置,数据访问层( d a t a a c c e s sl a y e r ) 作为n 层架构的重要组成部分, 其目的是高效地实现对数据库数据创建、读、更新和删除( c r u d ) 操作,然而, 一个不好的数据访问层,不仅限制了w e b 应用程序的性能,而且限制了w e b 应 用程序通过硬件扩展获得性能提升幅度,所以,高性能的数据访问层是实现高性 能w e b 系统的前提。 基于a c t 对数据访问层性能测试的研究,目的是避免在w e b 应用程序集成 或页面完成后才开始进行性能测试的缺点,组件性能测试可以在编码过程中及时 发现及消除软件存在的性能问题,并对组件实施性能控制和性能优化,避免性能 不佳的组件被集成到系统。数据访问是系统频繁调用而且最消耗资源的操作,数 据访问层进行测试和优化,对保证和提高w e b 系统性能非常重要【1 【2 】。 优化数据访问层的性能,首先要进行性能测试和评价,通过组件性能测试找 出存在瓶颈的组件。如何对数据访问层组件进行性能测试和性能评价,是本课题 的任务。 1 2 国内外研究进展 国外对w e b 性能研究开展较早,有许多关于w e b 性能研究方法的文献 3 】 4 【5 】【6 1 ,有许多公司从事性能测试工具开发及应用 7 1 。在这些文献中,性能优化 关注的是w e b 页面优化、数据库优化以及采用数据缓存对w e b 系统进行优化, 性能测试对象为集成后的系统或页面。在组件研究方面,也有专门的论著 8 】,但 数据访问层性能及性能测试研究 未涉及组件性能测试及组件性能量化研究;在数据访问层的相关文献中 6 】 9 b o 1 1 】,大多涉及数据层的构建和单元测试,以及依据经验对数据访问层进 行调优。性能优化方面的文献【3 】【4 】【5 】对数据性能开发仅作了泛泛的讨论;微软性 能测试方面的专著 1 2 也仅有一章谈及s q l 层分析。 国内在w 曲性能测试及优化研究起步较晚。较多的文献 1 3 b 4 】【1 5 b 6 【1 7 1 8 b 9 】 u w 涉及性能测试方法研究、性能测试工具开发以及使用现有的测试工具对性能 测试的探索,测试对象为w 曲应用程序或系统;性能优化方面的研究 2 1 2 2 】 2 3 】 2 4 】【2 5 】 2 6 1 ,主要涉及页面优化、缓存优化、数据查询优化和数据库优化;数据访问 层组件的研究方面 2 7 】【2 8 2 9 j ,仍停留在如何构建数据访问层的层面上:在组件性 能模型方面,已有学者进行了一引起研究 3 0 1 。 总的来说,性能研究国外要走在国内的前列。国外在性能及调优( p e r f o r m a n c e a n d t u n i n g ) 方面做了大量的研究工作,有许多成熟的测试工具和测试案例,但 现阶段仍然停留在页面级别和定性分析阶段,仍然依据经验进行性能优化;在组 件性能测试的量化研究、以及用组件性能测试指导性能开发等方面的研究很少涉 及。数据访问层组件性能测试属较深入的研究课题。 1 3 本文主要工作及创新 本文主要工作有以下三个方面: 1 、在总结前人研究成果的基础上,结合本文性能测试的结果,分析了n e t 不同数据访问解决方案的性能表现,明确了制约性能的因素及提高w e b 性能的 措施。 2 、对数据访问层组件性能测试方法和性能特征进行了研究,这是本文重点 和创新点。数据访问层组件性能测试研究包括了测试架构、测试方法、测试平台、 测试参数以及性能衡量指标等方面的研究;基于数据访问层性能测试数据,对数 据访问层的性能曲线特征、c r u d 性能特征、性能构成以及数据访问层组件叠加 性能进行了研究。 3 、最后对数据访问层性能优化提出了一些建议。 现有w e b 性能测试工具的测试对象是w e b 系统或w e b 页面,不能直接对组 件进行性能测试。通过本文的研究,得出了切实可行数据访问层及其组件性能测 第一章引言 试方案。使用该测试方法,对数据访问层组件进行了大量的性能测试,基于这些 测试数据,研究得出如下有意义的结论: 1 、数据访问层的性能是w e bc p u 达到使用极限时的性能值,c p u 的使用 极限为8 0 ; 2 、数据访问层性能主要受c p u 限制,与其它硬件关系很小; 3 、数据访问层的吞吐量r p s 性能与并发用户及用户思考时间无关,末字节 响应时间随并发用户及思考时间增加而增加; 4 、数据访问层性能衡量指标为末字节响应时间t t l b 和请求成本p c o s t 。 请求成本是作者提出的一个参数,用于度量一个数据访问请求需要消耗的w e b c p u 主频;末字节响应时间则用于度量w e b 服务器处理数据访问请求需要的时 间: 5 、请求成本曲线随负载增加近似为一条水平线,在负载达到w e bc p u 使用 极限后出现小幅波动;末字节响应时间曲线为随负载增加近似于过原点的位于第 一象限的正抛物线曲线,曲线在w e bc p u 极限处斜率增加很快。换句话说,在 w e bc p u 使用极限这一特征点上,请求成本表现不敏感,而末字节响应时间表 现极为敏感,超过c p u 使用极限,末字节响应时间将急剧增加; 6 、数据访问层c r u d 操作性能消耗由大到小排列是:插入、更新、删除和 查询: 7 、d a t a s e t 类实例化及数据填充占用比较大的性能开销; 8 、对于内联式叠加组件,其请求成本性能为各组件的请求成本之和;末字 节响应时间则视组件性质不同而不同。对于外联式叠加组件,其请求成本性能为 各组件的请求成本平均值;末字节响应时间则取决于性能消耗最大的组件,此时 该组件已成为叠加组件的瓶颈。 这些结论在组件性能测试和性能开发上有指导作用。例如,依据结论3 ,测 试时可以不必采用专用的高性能测试端计算机,只要用较小的并发用户和较短的 用户思考时间、使用普通的测试端就可以完成数据访问层r p s 性能测试,为软 件开发过程中单元测试之后进行组件性能测试提供了可能;又如,依据结论5 , 在性能优化时,优化的重点不是请求成本,而是如何降低w e b 系统对请求的响 应时间;而结论8 对多个组件集成性能的估算提供了依据,并说明了性能瓶颈对 数据访问层性能及性能测试研究 响应时间的影响要远大于对请求成本的影响,这一结论也从另一个侧面验证了结 论5 。 1 4 本文组织结构 本文分为六部分。 第二章介绍了n e t 框架中数据访问技术可以构建出众多不同的数据访问解 决方案。正是由于解决方案的多样性以及性能与具体应用的相关性,使得对数据 访问层进行性能测试和评价成为必要。 第三章分析数据访问层性能与性能瓶颈、性能与伸缩性、性能与硬件扩展、 性能与代码优化的关系,明确了一个高性能的站点,一定是高可伸缩的站点,高 可伸缩的站点来源于高可伸缩的组件,而高伸缩性的组件来源于良好的程序架构 和优化的程序代码。 第四章介绍了w e b 性能测试的重要性、目的、难点和一些流行的测试方法。 第五章是本文的重点和主要创新点,作者将微软开发的a c t ( a p p l i c a t i o n c e n t e r t e s t ) 用于数据访问层性能测试。a c t 是针对w e b 系统或w e b 页面进行 性能测试的工具,将其应用于组件级别上,特别是数据访问密集型的数据访问层 组件上有许多技术困难需要攻克。本章在测试方法、测试平台、测试参数的选取 和数据访问层性能衡量指标等四个方面进行了研究,其中对测试平台和随机种子 做了改进,以适应数据访问层性能测试。 第六章基于数据访问层性能测试的数据,对性能曲线特征、性能构成分布、 c r u d 操作性能以及数据访问层组件叠加的性能特征进行了研究。 第七章对数据访问层性能优化提出了一些建议。 4 第二章基于n e t 框架数据访问技术研究 第二章基于n e t 框架数据访问技术研究 2 1 n e tf r a m e w o r k 应用程序架构概述 n e t 平台是一个非常广阔的平台,它提供了丰富的编程类库和众多的编程 模型。n e t f r a m e w o r k 推出,可以比较方便的实现n 层架构的w e b 应用程序。 对于n 层架构一般可以简化成为三层架构【3 2 1 ,其各层划分如图2 - 1 所示。 表示层 a s p n e tw e b 窗体 业务逻辑层 n e t 组件程序 数据服务层 n e t 数据访问层 数据源 图2 - 1 n e t 软件架构 1 、表示层 表示层就是客户浏览器中显示的用户界面,通常由a s e n e t w e b 窗体和代 码隐藏文件组成。该层以适当的形式显示由业务逻辑层动态传送的数据信息,同 时,负责获得用户录入的数据,完成对录入数据的校验,并将录入数据传送给业 务逻辑层。 2 、业务逻辑层 业务逻辑层实现各种业务规则和逻辑,将用户界面与数据访问隔离。业务逻 辑层是整个分层模型的中问层,这一层为用户界面层提供功能调用,同时它又调 用数据访问层所提供的功能来访问数据库。根据整个系统的设计,在该层中实现 程序中的大部分逻辑控制功能。 3 、数据服务层 数据服务层是由两部分组成的,一是数据库,二是由访问数据库程序代码组 成的数据访问层d a l ( d a t a a c c e s sl a y e r ) 。数据访问层为应用程序实现数据交 数据访问层性能及性能测试研究 互,对数据库实现查询、插入、更新和删除操作。 2 2 数据访问层概述 在n 层架构的应用程序中,通常把专门用于访问数据库的程序代码封装成 为组件,称为数据层组件或数据访问层( d a t aa c c e s sl a y e r ,简称d a l ) 。建立 以数据为中心的n e t 应用程序时,必需建立数据访问层。在n 层w e b 应用程序 架构的基础上,基于微软a d o n e t 技术把数据层设计成一个通用的数据库访问 组件,可大大降低应用程序访问数据库的复杂性,使得各层的结构更加清晰,功 能更加明确并且相对独立,同时缩短了项目的开发周期,程序的可读性、可维护 性、可移植性以及可扩展性也得到增强。综合对数据库访问的操作,d a l 的功 能可以归纳为以下四种操作类型: 1 、在数据库中创建记录; 2 、读取数据库中的记录并把业务实体数据返回给调用程序; 3 、使用调用程序提供的修改后的业务实体数据更新数据库中的记录; 4 、删除数据库中的记录; 以上四种操作通常又称为c r u d 操作,即c r e a t i n g ,r e a d i n g ,u p d a t i n g 和 d e l e t i n g 。 一个有效的数据访问层执行所有的数据访问,并使中间层免于执行数据库访 问。具体来说,设计数据访问层的好处可以归纳为 3 3 1 : 重用:多种应用程序,包括w e b 应用程序和w i n d o w s 应用程序,能够使用 同一个数据访问层来解决数据需求。 抽象化:把应用程序的业务逻辑解脱出来,使其不需要关心数据访问代码, 便于维护。 隔离:把业务逻辑同潜在的数据库模式和a d o n e t 的修改隔离开来。 扩展:允许数据访问层驻留在一个单独的物理层,以应对性能提升的需要。 测试:与应用逻辑分开,便于测试程序维护和故障排除。对一个单独的封装 好的数据层进行测试,可以更方便地确定和消除瓶颈。 第二章基于n e t 框架数据访问技术研究 2 3a d o n e t 数据访问技术 用n e t 设计数据层组件时,离不开a d o n e t 。a d o n e t 是n e tf r a m e w o r k 的重要组成部分,是n e t 平台上数据存取的解决方案。a d o n e t 是一种应用程 序接口,支持对数据进行断开连接访问,是一种松耦合的、n 层的、基于i n t e m e t 的应用程序数据访问接口,以及能够组合来自多个数据源的数据。a d o n e t 对 象模型的两个核心组件:d a t a s e t 和n e t 数据提供程序( 如图2 2 ) 。 图2 - 2a d o n e t 模型 在d a t a s e t 这个核心组件中,其设计目的很明确:为了实现独立于任何数据 源的数据访问,数据集( d a t a s e t ) 是表( t a b l e ) 的结合,存放于本地缓冲区, 支持断开式连接,d a t a s e t 包含的数据很容易跨层传输,而不必担心面向连接的 资源会一直打开。 a d o n e t 结构的另一个核心元素是n e t 数据提供程序,是一组包括 c o n n e c t i o n 、c o m m a n d 、d a t a r e a d e r 和d a t a a d a p t e r 对象在内的组件,其设计目 数据访问层性能及性能测试研究 的是为了实现数据操作和对数据的快速、只进、只读访问。 图2 - 2 展示a d o n e t 详细的对象模型即s y s t e m d a t a 名称空间中的核心组 件及他们之间的相互关系。包括6 个主要对象:c o n n e c t i o n 对象,c o m m a n d 对 象,d a t a r e a d e r 对象,d a t a a d a p t e r 对象,d a m s e t 对象以及d a t a v i e w 对象。 1 c o n n e c t i o n 对象 该对象用来建立与指定的数据源连接,提供用于打开数据源,保持与各种数 据源的通信机制。它是直接与数据源进行交互的提供者,并提供物理连接。 2 c o m m a n d 对象 用来在指定的连接上执行命令并从数据源中返回结果。针对数据源完成相关 的命令( 即:s e l e c t ,i n s e r t , u p d a t e ,d e l e t e ) 操作。主要设置的属性有: c o n n e c t i o n :用于执行命令的连接对象; c o m m a n d t e x t :想要执行的s q l 语句或存储过程名字; c o m m a n d t y p e :f f 旨定c o m m a n d t e x t 属性的类型,有三个取值t e x t ( s q l 文 本) ,s t o r e d p r o c e d u r e ( 存储过程) 和t a b l e d i r e c t ( 表) ; p a r a m e t e r s :参数集合,用来在查询或存储过程中指定参数、类型以及设置 参数值。 c o m m a n d 对象支持的方法中,最重要的是四个e x e c u t e 方法: e x e e u t e n o n q u e r y :执行不返回行的命令,并返回受影响的行数; e x e c u t e r e a d e r :执行查询并以数据流的形式返回结果,并生成d a t a r e a d e r 对象; e x e c u t e s c a l a r :执行查询并返回结果集中的第一行的第一列,实际是返回 单个值; e x e c u t e x m l r e a d e r :执行查询并以x m l 数据流的形式返回结果,并生成 x m l r e a d e r 对象。 3 d a t a r e a d e r 对象 该对象对来自数据源的数据流提供只读、只向前访问。查询结果通过命令的 执行返回,存储在客户端的网络缓冲区中,使用d a t a r e a d e r 的r e a d 方法对它们 发出请求。一旦数据可用,d a t a r e a d e r 方法就立即检索该数据,而不是等待返回 查询的全部结果:并且在默认情况下,该方法一次只在内存中存储一行,因而降 第二章基于n e t 框架数据访问技术研究 低了系统开销、提高了应用程序性能。通过c o m m a n d 对象的e x e c u t e r e a d e 方法 从数据源中检索行来创建一个d a t a r e a d e r 。主要设置的属性和方法有: r e a d 方法:检索结果集的下一行,当d a t a r e a d e r 首次打开时,被置于结 果集的开始处,即第一行之前;首次调用时,移到结果集的第一行,以后每调用 一次会移到下一行。 i t e m 属性:返回结果集当前行中某一列的值。 c l o s e 方法:打开的d a t a r e a d e r 要显式地调用c l o s e 方法关闭,以释放出 与之相联系的连接。 4 d a t a a d a p t e r 对象 该对象将数据源中检索出的数据,通过f i l l 方法填充到d a t a s e t 中的表,同 时将对d a t a s e t 做出的更改解析回数据源。该对象用作托管提供程序和d a t a s e t 之间的通信机制,本质上是一组命令对象,每个命令对象有一个独立的命令( 见 图2 3 ) 。 图2 - 3 d a t a a d a p e r 结构图 s e l e c t c o m m a n d :用于从数据库获取数据的命令 u p d a t e c o m m a n d :用来更新数据存储的命令; 数据访问层性能及性能测试研究 i n s e r t c o m m a n d :用来在数据存储中插入数据的命令; d e l e t e c o m m a n d :用来从数据存储中删除数据的命令。 5 d a t a s e t 对象 该对象是支持a d o n e t 的断开式、分布式数据方案的核心对象。因此,它 可以用于多种不同的数据源。d a t a s e t 对象可以看成是包含很多子对象容器对象, 在d a t a s e t 包含了一个或多个d a t a t a b l e 对象,d a t a t a b l e 又包含数据行和数据列 以及主键、外键、约束和表间关系等信息。通过d a t a a d a p t e r 来控制与现有数据 源的交互,并利用d a t a a d a p t e r 填充( f i l l ) 数据,利用c o m m a n d 对象的u p d a t e 方法将数据改变更新到数据源。图2 4 显示了d a t a s e t 对象模型。 图2 - 4d a t a s e t 对象模型 d a t a s e t 数据集具有如下一些特性: 处理脱机数据:d a t a s e t 中的数据是与数据库断开连接的。一旦用数据适 配器将查询结果返回d a t a s e t 之后,便和数据库断开连接,对d a t a s e t 的更改不 会影响到数据库。这种脱机数据结构对于创建多层应用程序及在层问传递数据是 很有用的。 浏览、排序、搜索和过滤:d a t a s e t 对象允许在任何时候对其数据进行查 看、频繁循环进行遍历、排序等操作。 处理分级数据:允许定义表间的关系,根据主表信息展示子表的相关信息。 缓存更改:提供d a t a a d a p t e r 将缓存中更改后的信息提交给数据库。 x m l 的完整性:d a t a s e t 对象和x m l 文档几乎可以互换,完全相容。 1 0 第二章基于n e t 框架数据访问技术研究 统一功能:只要将数据从各类数据库查询到d a t a s e t 中,对这些数据的处 理完全一样。 6 t r a n s a c t i o n 对象 事务是一组组合成逻辑工作单元的操作,其目的是通过事务控制保证操作的 一致性和完整性。在数据操作中,如果事务中的某个点发生故障,则所有操作都 可以回滚到事务开始之前的状态;如果没有发生故障,则通过提交事务来完成更 新。 在a d o n e t 中,可以使用c o n n e c t i o n 、c o m m a n d 和t r a n s a c t i o n 对象来控 制事务: 调用c o n n e c t i o n 对象的b e g i n t r a n s a c t i o n 方法来标记事务的开始。 执行所需数据操作的命令。 调用t r a n s a c t i o n 对象的c o m m i t 方法来完成事务,或调用r o l l b a c k 方法来 取消事务。 2 4 n e t 数据访问层剖析 在设计数据访问层时,主要采用两种方法,一种是通用方法,为每种需要访 问数据库的实体建立一个过程:另一种是建立一个帮助器类( s q l h e l p e r ) ,处理 常见的任务,如数据库连接、执行命令和缓存参数,为数据层中的所有组件执行 所有的数据访问。在数据访问模式上,分别有基于d a t a s e t 为核心和基于 d a t a r e a d e l - 为核心的数据访问。微软大力推荐的两个企业级开发实例d u w a m i s h 和p e t s h o p ,其数据访问层的实现分别采用了上述两种模式,此外,微软发布的 d a t a a c c e s s a p p l i c a t i o n b l o c kf o r n e t 2 0 则提供了a d o n e t 所有数据访问对象 的使用方法。 2 4 1d u w a m i s h 数据访问剖析 d u w a m i s h 7 0 是一个外表简单、内部极其复杂的一个网上书店,作为微软官 方提供的完整应用范例,它同时有c 撑和v b n e t 两种语言版本。d u w a m i s h 采用 四层应用结构,使用不同的项目分隔层,即每一层为一个项目,分别为表示层、 业务外观层、业务规则层和数据层。d a w a m i s h 7 的数据访问是通过 数据访问层性能及性能测试研究 d a w a m i s h d a t a a c c e s s 项目来实现的。如图2 5 所示,数据层中有4 个数据访问 类,分别是b o o k s ,c a t e g o f i e s ,c u s t o m e r s 和o r d e r s 。每个类分别对应一至二个 数据表,只负责相关数据存取。d a t a a e c e s s s i n 中有两个引用( 见图2 - 5 ) , d a w a m i s h s y s t e m f r a m e w o r k 和d a w a m i s h c o m m o 玛前者用来处理有关的配置节 信息,后者则用来定义与数据存取相关的数据结构。d u w a m i s h 采用d a t a s e t 数 据集的方法在层问传递数,所采用的d a m s d 结构( 实体) 就是在 d a w a m i s h c o m m o n 中进行定义的。下面以g e t b o o k b y i d ( b y v a lc a t e g o r y l da s i n t e g e r ) 来剖析其数据访问。 曰解决方案“l j a t “c c e s s ( 1 项目) 目固) a t e a c c e s s 日筐i 引用 !e 3n u w n i j h tc o m m d n : ; ;p 衄d w m i s h 7s y s t n f r m s w a r k ii 3s y e t e m ; o s y s t e m d a t a i ;o s y s t e md e s i g n ;pq s y s t e md r d i n g l 三心s y s t e mx m l j 豳k s s m b l y i n f o 讪 豳b o o k sv b i 豳c a t e e o r l t b 圈c u _ 唧h 响 i 一函鳓鳞鹣黛黼 图2 5d u w a m i s h 7 d a t a a c c e s s 解决方案 首先来分析d a w a m i s h 7 c o m m o n ,在d a t a 目录下定义了四个实体类( 见图 2 6 1 ,每个实体类均继承d a t a s e t 类,这些实体类并不是与数据表一一对应的, 而是对数据表的一种抽象,其主要代码如下: s y s t 鳓c o m p o n e n t m o d e l d e s i g n c r c a t e g o 吲”c 碱热。 s c r i a l i z a n c a r t r i b u c p u b l i cc l a b o o k d a t a。 l n h c r i t sd a t a s c l 【薯 p u b l i cs 。u bn e w ( 、,) 蓦_ _ _ _ i 。i 零黪n n e w i ;萼。一i 。 0 基 ib u i l d d a t a m a b l e s 薯。_ ;:j j。 e n d g u bi_ ; ? 一量量 0 - | _ ;_ j 董誊 辛i 一 曩_ 1 _ = o :一 p 肌a l es u bb u i l d d a t a t a b l c s ( ) j 一基_。:。j _ d i m t a b l e 舡嬲a t a b l e 2 n e w d a t a t a b i e f b o o k s _ t a b l e , 。曩 _ i :w 强t a b l e c u l u m n 。= ! _ o a d d 妒k t df i e l d , g e t t y p e ( s y s t c m i n t 3 2 ) ) i 第二章基于n e t 框架数据访问技术研究 ; ; _ 一以下为同样的为法增加袭t a b l e 中的其他宇段,省略 | e n d w i 班 _一 。 :;: m e 矗b 】c = s a d d ( t ;l b l e ) j j :j ; ; ; ; e 拍s u b 一。叠;一一 - _ ;:; ;| j 。;:一_ i ;! e n d 嘤6 每? 1 b 鳓囝髓砖|麓 j 日一掣c o m f o r t 白鼋函引用 ! 姻l l w n i s k ? - s y n | m f r t w o r k ;四s y s t ;- s y s t e mi a t l i j 四s y s t e mb e s i 弘 i 。os y e t d r x w i n g jm 心s y s t e m x f f l 目淘n s t a l i 謦鬻獭鞴戮 ii 攀c a t e e o r y l a t l 讪 ij 豳c u s t o m l r r t t t a 讪 l i 豳o r d e 2 i a t t n 园a s s e m b l y t n f o 讳 豳d u w m is l ,c o n f i f u r s t i o n v b 图2 6d u w a m l s h 7 c o m m o n 解决方案 我们可以看到它有一个b u i l d d a t a t a b l e s 方法,并且在构造函数中调用,这 样,这个b o o k d a t a 数据集中捆绑了一个名为b o o k s _ t a b l e 的表,而 b o o k _ t a b l e 表具有确定的字段名,该b o o k s _ t a b l e 与b o o k s 表对应。解决了 数据结构,接下来看看数据层的代码实现。 p u b l i cc l a s sb o o k s m p i b 【n e n 刚d i s p o s a b l e p r i v a t ed s c o m m a n da ss q l d a t a a d a p t e r k = 这里省略了“1 些代鹅i p u b l i cf u n c t i o ng e t b o o k s b y ( 7 a t 略o r y l d ( b y v a lc a t e g o r y l da si n t e g e r ) a sb o o k d a t a g c t b o o k s b y c a t c g o r y l df i l l b o o k d a t a ( ”g e t b o o k s b y c n t e g o r y l d ”,” c a t e g o r y l d ”,s t r ( c a t 锚o r y l d ) ) e n df u n c t i o n p r i v a t e f u n c t i o nf i l lb o o k d a t a ( b ) v a lc t r l ( 1 w e x | a ss t r i n g ,b y v a l p a r a m n a m e a ss t r i n g ,b y v a l p a r t i t t t 确l u ea ss i r i n g ) a sb o o k d a t a dimd a t aa s b o o k d a t a ? d a t a = n c wb o o k d a t a w i t hd s c o m m a n d i t r y o 、v i i h ,s e l e c t c o m m m d ;:_ c o m m a n d t y p c = c o m m a n d t y p e s t o r e d p r o c e d u r e 。c o m m a n d t e x t = c m d t c x t d i mp a r a ma ss q l p a r a m c t e r = n e ws q l p a r a m e t e r ( p a r a m n a m e , s q l d b t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版二年级下册科学创新教育计划
- 一年级数学(上)计算题专项练习汇编
- 煤矿安全检查管理办法
- 燃煤电厂负荷管理办法
- 物资配件盘活管理办法
- 特别国债资金管理办法
- 特殊工种审核管理办法
- 特殊禽类养殖管理办法
- 特种材料资料管理办法
- 特色平台招商管理办法
- 汽车配件营销与管理
- 高压氧对脑卒中恢复期患者神经功能的影响
- 《企业能源审计》课件
- 工程力学专业大学生职业生涯发展
- 人教版八年级物理上册《第四章光现象》单元测试卷(带答案)
- 学校购买文具用品的供货合同2025年
- 物业保安各岗位培训
- iso28000-2022供应链安全管理手册程序文件表单一整套
- 小学二年级下安全课件
- T-CSEA 25-2022 批量热浸镀锌行业含锌固废资源化利用技术规范
- 继发性肥胖症的临床特征
评论
0/150
提交评论