已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着i n t e r n e t 的飞速发展,万维网得到了很大的发展。传统的数据访问技术己渐 渐不能满足高速存取、断开连接存取和内置的全面的x m l 支持等的需要,研究i n t e r n e t 的数据库访问技术也就成为数据库研究的主要方向之一。 本文着重就n e t 框架的最新数据库访问技术一- - - a d o n e t 技术,及a d o n e t 体系 结构、对象模型进行了深入而详细的分析和研究。就a d o n e t 的数据提供程序,及数 据提供程序的性能优化、比较和选择,存储过程的优化,数据一致性等作了深入的探 究。 基于上述w e b 数据库访问技术研究,根据研究生管理的实际需求,讨论了该系统 基于n e t 平台,采用a d o n e t 数据访问技术和相关性能优化技术,综合应用了c # n e t 技术和a s p n e t 技术。该管理信息系统的业务层使用了a d o n e t 数据访问技术,运行 在w e b 服务器端,应用了a d o n e t 的各项技术( 如s o ls e r v e r n e t 数据提供程序、存 储过程、安全性、数据一致性等) ,大大提高应用程序的数据访问效率和性能。 关键词:数据访问三层架构a d o n e t 浏览器n 务器 a b s t r a c t w i t ht h ed e v e l o p i n gr a p i d l yo fi n t e m e t ,删h a sg o tt h ev e r yb i gd e v e l o p m e n t t h e t r a d i t i o n a ld a t a b a s ea c c e s st e c h n i q u ec a l l ts a t i s f yl i u l eb yl i t t l et h ed e m a n do fh i g hs p e e d a c c e s s ,t h ed a t aa c c e s so nb r o k e nc o n n e c t i o na n dc o m p l e t es u p p o r to fx m l ,e t c t h e s t u d yo fd a t a b a s ea c c e s st e c h n i q u eb a s e do ni n t e r n e th a sb e c o m eo n eo fm a i nd i r e c t i o no f d a t a b a s er e s e a r c h t h i sp a p e ri n v e s t i g a t e st h r o u g h l yt h ep e r f o r m a n c eo p t i m i z eo fa d o n e t ,a n d c o m p a r i s o n , c h o i c ea n dp e r f o r m a n c eo p t i m i z eo f n e td a t ap r o v i d e r s , a n do p t i m i z eo f s t o r e dp r o c e d u r e ,d a t ac o n s i s t e n c ye t c i na d d i t i o n ,i tp u t sf o r w a r dt h a th o wt od e v e l o p e f f i c i e n t l yd a t a b a s ea c c e s sa p p l i c a t i o no ff a c i n gt ot h e i n t e r n e t0 n n e te n v i r o n m e n t b a s e do nt h ea b o v es t u d i e so f w e bd a t a b a s ea c c e s st e c h n i q u e ,a c c o r d i n gt oa c t u a l n e e do fm a n a g e m e n to fp o s t g r a d u a t e ,d i s c u s s i n gai n f o r m a t i o ns y s t e mo fb sm o d eh a s b e e n d e s i g n e da n dr e a l i z e d t h a ts y s t e mo n n e tp l a t f o r m i st h ei m p l e m e n t a t i o nw i t h 饼 l a n g u a g eb ya d o p t i o na d o n e td a t aa c c e s st e c h n i q u ea n dr e l a t e dp e r f o r m a n c eo p t i m i z e t e c h n i q u e t h ew e b s e r v e ro ft h es y s t e mu s e sa d o n e tt e c h n i q u e ( s u c ha ss q l s e r v e r n e t d a t ap r o v i d e r s ,s t o r e dp r o c e d u r e s ,s e c u r i t y ,d a t ac o n s i s t e n c y ) c o n n e c t i n ga n da c c e s s i n g d a t a b a s e s u c ht h i n g se n h a n c ec o n s u m e d l yd a t aa c c e s se f f i c i e n c y a n dp e r f o r m a n c eo f a p p l i c a t i o np r o g r a m k e yw o r d s :d a t a b a s e a c c e s s t h et h r e e - t i e rs y s t e m a d o n e tb s h 长春理工大学硕士学位论文原创性声明 本人郑重声明:所呈交的硕士学位论文,三层架构下的数据访问研究和应用 是本人在指导教师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用 的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文 的研究做出重要贡献的个人和集体,均己在文中以明确方式标明。本人完全意识到本 声明的法律结果由本人承担。 作者签名:鹾 逅 年一月一目 长春理工大学学位论文版权使用授权书 本学位论文作者及指导教师完全了解“长春理工大学硕士、博士学位论文版权使 用规定”,同意长春理工大学保留并向中国科学信,皂、研究所、中国优秀博硕士学位论 文全文数据库和c n k i 系列数据库及其它国家有关部门或机构送交学位论文的复印件 和电子版,允许论文被查阅和借阅。本人授权长春理工大学可以将本学位论文的全音e 或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和 汇编学位论文。 作者签名:羔釜延年一月一日 特聊魏燃年一月一日 1 1 论文研究的目的和意义 第一章绪论 传统的c s 模式只有两层架构,一端为客户端,另一端为服务器端。数据存放在 服务器上,客户端界面作为程序的另一部分( 完成业务逻辑和鼹示逻辑) 存在于客户 端的桌面计算机上。尽管传统的c s 模式具有较强的数据操纵和事务处理能力,但随 着信息技术的进步,企业规模的扩大,市场竞争的加剧等,其缺点是明显的,主要有: 开发成本高,兼容和可扩展性差,维护麻烦“吨1 。 也许这时候就会有人说,只是想实现界面上与用户交互,然后根据用户的请求将 数掘读出写入数据库就好了,为什么要做如此复杂的分层调用呢? 从这个闷句中只 看到了界面和数掘库,也就是说从用户的需求柬说,就是这两层而己,但是这里首先 要搞清楚的是三层架构主要是程序员为了实现部署、开发、维护企业级数据库系统而 服务的。如果在中间层实现了对表示层和数据库层的完全脱离,其部署、开发、维护 系统的费用和时问至少降低到原来的一半。 1 2 国内外研究现状 c s ( c 1 i e n t s e r v e r ) 结构,即大家熟知的客户机和服务器结构。它是软件系统 体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到c l i e n t 端 和s e r v e r 端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是 c 1 l e n t s e r v e r 形式的两层结构,由于现在的软件应用系统正在向分布式的w e b 应用 发展,w e b 和c l i e n t s e r v e r 应用都可以进行同样的业务处理,应用不同的模块共享 逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有 应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向口1 。 传统的c s 体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性, 在特定的应用中无论是c l l e n t 端还是s e r v e r 端都还需要特定的软件支持。由于没能 提供用户真正期望的开放环境,c s 结构的软件需要针对不同的操作系统开发不同版 本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时 使用,而且代价高,效率低。 在数据库应用中,数据的储存管理功能是由服务器程序和客户应用程序分别独立 进行的,前台应用可以违反规则,并且通常把那些不同的( 不管是己知还是未知的) 运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有 客户才能建立定单规则。所有这些,对于工作在前台程序上的最终用户,是“透明” 的,他们无须过问( 通常也无法干涉) 背后的过程,就可以完成自己的一切工作。在 客户服务器架构的应用中,前台程序是非常“瘦小,麻烦的事情都交给了服务器和 网络。在c s 体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专 门管理。 b s ( b r o w s e r s e r v e r ) 结构即浏览器和服务器结构,它是随着i n t e r n e t 技术 的兴起,对c s 结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通 过w w w 浏览器来实现,极少部分事务逻辑在前端( b r o w s e r ) 实现,但是主要事务逻 辑在服务器端( s e r v e r ) 实现,形成所谓三层3 - t i e r 结构h 1 。 这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降 低了用户的总体成本( t c o ) 。 以目前的技术看,局域网建立b s 结构的网络应用,并通过i n t e r n e t i n t r a n e t 模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实 现不同的人员,从不同的地点,以不同的接入方式( 比如l a n , w a n , i n t e r n e t i n t r a n e t 等) 访问和操作共同的数据库;它能有效地保护数据平台和管理 访问权限,服务器数据库也很安全。特别是在n e t 框架出现之后,b s 架构管理软件 更是体现除了其方便、快捷、高效。 随着i n t e r n e t 技术的普及、电子商务技术的发展等,数据库技术又面临着新的 挑战。这一挑战给数据库技术的发展带来了新的机遇,也造就了现阶段数据库技术发 展最活跃的领域。9 0 年代的中期,出现了三层多层的数据库体系结构,这一结构是 客户机服务器结构相结合的产物,是数据库系统为适应应用对两层客户机一服务器 结构的继承和发展。三层多层结构对传统的客户机一服务器的两层体系结构进行了 扩展,在客户端和服务器之间增加了应用服务器层,在应用服务器中实现主要的商业 逻辑5 j 。 2 图1 1 三层架构的数据流向图 这一结构是数据库技术向功能分配的集中与分散的合理统一又前进了一步,符合 螺旋式上升的发展规律。也就是说以主机为主的数据库系统是将功能高度集中在主机 之上,而客户机服务器结构将功能分布到计算机网络之中,而到了三层结构重新又将 功能集中到服务器之上。 企业要实施信息化建设,必须要有自己的信息化处理平台,而企业的所有信息化 处理,都建立在这个平台基础之上。但是传统的企业信息化处理平台,以及搭建在该 平台上之上的所有应用软件,都是按照企业实施信息化时的现有实际情况,由软件开 发团队开发出来的定制软件。这种按照企业现有逻辑,来部署企业信息化平台,是属 于量体裁衣型的软件平台。这在企业业务相对稳定的环境下,能发挥很好的效用,极 大地促进了企业生产力的水平。但是,现在社会市场经济环境下的企业,都是一个发 展变化很快,追求不断创新的企业实体,其业务逻辑以及管理体制都是随着市场环境 的不断变化而变化的。这就给企业的信息化处理平台带来了挑战,当企业的业务逻辑 和管理体制发生变化的时候,现有的信息处理平台该怎样适应新的要求。有两条途径 可以解决这个问题,一个是对现有信息化软件平台进行升级,这种方法要求企业的业 务逻辑和管理体制相对变化不是很大,对平台的局部进行修改升级就能达到新的要 求;另一个就是开发新的信息化处理平台,这种方法主要是针对企业的业务逻辑变化 很大,对现有的信息化处理平台修改升级比较困难。这两种方法,对企业来说都是一 个巨大的人力物力和财力的浪费。 而相对于开发者来说,针对一个企业来部署其企业信息化处理平台,也是有着解 决不了的问题存在。对企业的信息化处理平台进行升级,这就必须要由原来的开发队 伍成员来完成。这主要是因为,开发出来的企业信息化处理平台都是针对企业具体的 业务逻辑和管理模式,来详细设计实现的。也就是说企业的业务和管理逻辑已经以代 码的形式固化在了软件之中,要升级修改就必须要由原来的既熟悉项目需求又了解程 序开发的程序员来完成。但是,在i t 行业,软件人员的流动性非常大,这就造成了 一般的软件升级很困难,面临着不得不进行重新开发的局面。如果对信息化处理平台 进行重新开发,这就是一个巨大的人力物力财力上的浪费。 因此,企业要想j i l 孵j j 地进行信息化建设并且能发挥出应有的效用,就必须要部署 一个合适的企业信息化处理平台,而且该平台满足以下条件: 能很好地反映企业现有的业务、管理逻辑; 能很容易地进行修改、升级以满足企业不断发展变化着的业务管理流 程; 能很好地部署到网络上进行三层应用的部署,而且具有可扩充性。 鉴于上述问题,传统的解决方案是基于构件的软件开发。这种方法强调使用可复 用的数据流构件来设计和构造软件系统,其思想是创建数据流构件并将其组合,用多 个业务构件动态地组成一个新的应用系统,其核心是构建即插即用型的业务构件。这 种方法,在一定程度上实现了应用系统的数据流的优化,但是,在具体的企业业务逻 辑各异的条件下,其通用性还是很差。 为此,本论文以研究生管理系统为背景的软件开发,对其进行可行性研究和设计。 并且论证了其可行性。 1 3 主要研究内容和文章组织结构 针对上述存在问题,本文的主要研究工作如下: ( 1 ) 确定系统采用b s 模式三层结构体系。 b s 模式在传统的c s 模式的基础上,从两层结构之间增加了一个中闻层w e b 应 用服务器,客户机上只需安装浏览器即呵,它很好地解决了传统c s 模式在可扩展性、 可维护性、可重用性等方面的缺陷。在三层架构中,客户端接受用户向应用服务器提 出的请求,应用服务器从数据库中获得数据,将数掘进行计算并将结果提交给客户端, 客户端浏览器将结果呈现给用户。应用服务器将大部分的处理运算工作承担起来,减 轻了客户浏览器和数据库服务器的负担,提高了工作效率,同时也增加了安全性。采 用三层架构极大地改善了系统的性能,当客户端数目或应用需求发生较大的变化时, 对本系统的影响并不大,不会因为负载过重雨使性能大大衰减,且变化仅局限于服务 器端,修改和维护非常方便,相对于两层结构,数据的传输量减少,减轻网络的负载。 ( 2 ) 以先进的n e t 技术为主要研究架构。 以n e t 技术设计的研究生管理系统能够解决传统三层结构系统的互操作性差以 及跨平台运行等问题。另外a s p n e t 几乎全是基于组件和模块化,每一个页、对象和 h t m l 元素都是一个运行的组件,便于扩展。它的代码将页面逻辑( 显示的内容) 和业务 4 逻辑( 程序代码) 分丌,使网页更易编写,代码更易维护和修改。 ( 3 ) 本论文列举了当前的所有的数据层的模型的技术,并且清晰的论述了这些模 型的优势和缺点,导出了a d o n e t 模型是比较先进的数据流模型,能够作为在三层架 构下,b s 端或者c s 端束完成数据层与业务层的交互。它屏蔽了o l ed b 的复杂性, 开发人员通过它可以轻松自如地访问各种类型的数据库。a d o 有易用、高速、占用很 少的额外内存以及使用磁盘空间小等优点,因此被广大的用户所接受。因此,a d o n e t 越来越多的用到了三层架构下的数据访问中。 ( 4 ) 本文重点研究三层架构下的数掘层,及其包括的相关内容,如a d o n e t 技术、 数据连接池技术、动态链接库技术、数据流操作技术、数据绑定技术和数据流优化技 术等,这些技术构成了完整的数据层的体系结构。本文对这些技术进行了充分的研究, 验证了技术理论的可行性。 ( 5 ) 本文以研究生系统为平台,具体地说明了本论文对于数据流技术研究的可行 性和现实意义。首先,明确需求,建立关系数据库,导入历史数据;其次,使用面向 对象建模,划分功能模块,建模,明确三层的体系架构:最后,分析业务需求,分工 开发编码,完成功能模块做好上述的工作。经过以上几个步骤的认真执行:本文完成 了提出了关于三层架构数据层的解决方案的可行性论证。 ( 6 ) 最后,本文对整个论文的工作和在论述过程中出现的问题,进行了深入的总 结,对本文出现的不足进行了分析,并明确了以后工作的方向。 第二章基于三层架构下数据访问技术 2 1 现有数据访问技术及其缺限 数据访问及其编程来源于不同的背景,每种数据管理系统都有一套自己的编程应 用程序接口( a p i ,a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e ) ,这就为数据访问编程带来 极大的局限性,结构化查询语言( s o l ,s t r u c t u r e dq u e r yl a n g u a g e ) 是标准化数据访 问编程接口的i s o 标准。然而各种数据库所支撑的s q l 又有所差异,为了得到一个统 一的数据访问编程接口,人们进行了很多努力,为此产生了数据库的客户访问技术, 它通过提供访问接口,简化了客户访问数据的过程。 当前供应商提供的数据访问接口主要为专用接口。专用数据库访问接口局限性较 大,没有统一的调用界面,不能为不同类型、异构的数据库系统提供通信,不能利用 这种接口编写的客户代码,很难实现对多种不同类型的数据库的复杂操作,因而无法 得到广泛的应用3 。 2 1 1o d b c 概述 o d b c ( o p e nd a t a b a s ec o n n e c t i v i t y ) 称为开放式数据库系统互连,是由微软公司 开发和定义的一套数据库访问的统一界面标准,是一种重要的数据库访问a p i 。它独 立于数据库,建立在结构化查询语言调用层接口基础上,即基于s q l 并使用s q l ,可 大大简化其a p i 。通过o d b c ,用户能够使w e b 服务器和各种数据库服务器相连,它为 异构数据库的访问提供了一个统一的接口,使得应用程序能够按照相同的方式访问各 种不同结构的数据库。 2 1 2o d b c 缺点 由于o d b c 为关系数据库提供了统一的接口,并逐渐完善成为关系数据库接口的 标准之一。但o d b c 仅限于关系数据库,由于o d b c 的关系型特性,很难使用o d b c 与 非关系数据库像网络目录服务、电子邮件系统之间进行通信,而且o d b ca p i 函数众 多,使用复杂,需要增加大量的编码。 6 o d b c 数据库应用程序 i l 驱动程序管理器 llll 旧翥 0 r a c l e s y b a s e i n f o r m i x 驱动程序驱动程序驱动程序 iiii l s q l s e v e r 0 r a c l e s y b a s e l n f o r m i x i 数据源 数据源数据源数据源 l 图2 10 d b c 体系结构 2 1 3 数据访问对象( d a o ) 概述 d a o ( d a t aa c c e s so b j e c t ) 是一组m i c r o s o f ta c c e s s j e t 数据库引擎的c o m 自动 化接口。d a o 直接与a c c e s s j e t 数据库通信,通过j e t 数据库引擎,d a o 也可以同o d b c 和其它数据源进行通信。 客 户 代 码 d a o 自动化 服务器 a c c e s s j e t 数 据库服 务引擎 o d b c 驱 动程序 r d b m s 数据 库服务器 件m d 瞅l 叫蜘耥 图2 2d a o 体系结构 d a o 支持四种不同类型的数据库环境。 1 打开访问数据库m d b 文件是一个自包含的数据库,它包括查询定义、安全信息、 索引、关系,当然还有实际的数据表。用户只需指定m d b 文件的路径名。 2 外部数据库。这类数据库指的是采用索引顺序访问方法( i s a m ,s e q u e n t i a l a c c e s sm e t h e d ) 建立的数据库文件。即使己经设置了o d b c 数据源,要用j e t 引擎来 访问这些文件类型中的一种,也必须以i s a m 型数据源的方式来打开文件,而不是以 o d b c 数据源的方式。 3 0 d b c 数据库。这类数据库符合o d b c 标准的客户服务器数据库,如s q ls e r v e r 、 o r a c l e 等。但是有一个很重要的限制,即不能打开以j e t 引擎作为驱动程序的o d b c 数据源,只可以使用具有自己的o d b c 驱动程序d l l 的数据源。 4 给a c c e s s 数据库附加外部表。这实际上是用d a o 访问o d b c 数据源的首选方法, 首先使用a c c e s s 把o d b c 表添加到一个m d b 文件上,然后用d a o 打开这个m d b 文件就 7 司以了。 2 1 4d a o 的缺点 d a o 提供了一种非常有用的数据库编程的对象模型,但是,从其体系结构图可以 看出操作涉及到了许多层的软件,当利用d a o 访问这些数据库时,对数据库的所有调 用以及输出的数据都必须经过a c c e s s j e t 数据库引擎,这对于使用数据库服务器的 应用程序来说无疑是个严重的瓶颈。 d a o 同o d b c 相比更容易使用,但不能提供o d b ca p i 所提供的低层控制,因此d a o 也属于高层的数据库接口。 2 1 5 远程数据对象( r d o ) 概述 r d o ( r e m o t ed a t ao b j e c t ) 是m i c r o s o f t 针对d a oa p i 访问o d b c 数据源性能不佳 而推出的,是一组与实现远程数据访问有关的对象。它是专门为o d b c 的接口单独设 计,可视为o d b ca p i 的抽象。它通过o d b c 提供了一个简单且高效的连接驱动程序的 用户界面,r d o 创立了一个以前只能由系统级编程语言才能使用的低级编程界面的快 速界面。 r d o 是在o d b ca p i 和驱动程序管理器之上的一个代码层,用来建立连接、产生结 果集和游标。由于具备了基本的o d b c 处理方法,r d o 可以直接执行大多数的0 d b ea p i 函数,是s o ls e r v e r ,o r a c l e 等大型关系数据库开发者经常选用的最佳数据库接口, 同时它还提供了用来访问存储过程和复杂结果集的更多、更复杂的对象、属性和方法。 r d o 提供了使用代码创建并控制远程o d b c 数据库系统部件的框架。它的属性描述 了数据库部件的特征,也描述了用来操作它们的方法。在这个框架中,用户可以在对 象和集合之间建立联系来表示数据库系统的逻辑结构。 8 图2 3r d o 体系结构 2 1 6 远程数据对象( r d o ) 缺点 r d o 为数据库访问提供基于对象的易于编程的接口。r d o 提供了紧凑、轻量级的 到0 d b c 的基于对象的接口,这些接口提供所有o d b ca p i 拥有的低层功能和灵活性, 并去掉了d a o 中的j e t 引擎层,不像d a o 那样通过j e t 引擎调用o d b ca p i ,而是直接 调用o d b ca p i ,因此对于访问o d b c 数据源具有很好的性能。由于去掉了j e t 引擎层 存在明显的局限性,即它不能访问j e t 和i s a m 数据库文件,而只能通过o d b c 驱动程 序访问关系数据库。但r d o 提供了更为先进的数据库功能,通过提供对象、方法、属 性,r d o 可以访问非常复杂的存储过程和记录集。 2 1 7j a v a 数据库连接( j d b c ) 概述及其缺点 j d b c 是j a v a 数据库的接口规范,j d b c 定义了一个支持标准s q l 功能的通用低层 的a p i ,它由j a v a 语言编写的类和接口组成,旨在让各数据库开发商为j a v a 程序员 提供标准的数据库a p i ,表示数据库连接、s q l 指令、结果集、数据库元数据等。它 允许j a v a 程序员发送s q l 指令并处理结果。通过驱动程序管理器,j d b ca p i 可利用 不同的驱动程序连接不同的数据库系统。 到目前为止,j a v a 应用程序通过j d b c 接口访问数据库有4 种驱动模式: 1 j d b c - o d b c 桥。它提供了经由一种或多种o d b c 驱动进行访问的j d b c 接口。这 种情况下,客户端必须安装o d b c 驱动。s u n 的j d b c o d b c 桥驱动程序的 j a v a s q l d r i v e r 接口实现封装在s u n j d b c o d b c j d b c o d b c d r i v e r 类中。 9 2 部分用j a v a 来编写的本地a p i 驱动程序。类似于j d b c o d b c 桥接器,需要加 载到客户机,却是一个部分用j a v a 实现的驱动接口。它将j d b c 调用转换为对数据库 o r a c l e ,s y b a s e ,d b 2 等客户端接口的调用。 3 j d b c 网络纯j a v a 驱动。这种驱动程序将j d b c 调用转换为与d b m s 无关的中间 网络协议,之后这种协议又被某个特定的数据库服务器转换为一种d b m s 协议。这种 网络服务器中间件能够将它的纯j a v a 客户机连接到许多类型的数据库上,所用的具 体协议取决于提供者,因而是最灵活的j d b c 模式。 4 本地协议纯j a v a 驱动程序。这种类型的驱动程序将j d b c 调用直接转换为d b m s 所使用的网络协议。这将允许从客户机上直接调用d b m s 服务器。由于许多这样的协 议都是专用的,因此数据库产品提供者本身将是这种驱动程序的主要来源。 不同的应用需要不同模式的j d b c 接口,正确选择合适的模式,使之符合于数据 库程序的设计,是提高访问速度必须考虑的一个方面。 模式1 的优点是因为多数r d b m s 平台都支持o d b c 驱动程序,所以使用j d b c o d b c 能与大量o d b c 驱动程序协同工作;缺点是用户受底层o d b c 驱动程序的功能限制。由 于模式1 需要首先把j d b c 操作翻译成对应的o d b c 调用,然后这些调用又被传递给 o d b c 驱动程序,最后才执行数据库的相关操作,所以它的性能要降低。 模式2 的优点是不需要转换成o d b c 调用。它利用多层结构,上层用j a v a 实现, 于跨平台应用和支持多数据库,但底层却改为本地代码,加速执行速度。这种开放和 高性能的特征得到了肯定,因而被主要的数据库厂商强烈推荐。尽管它需要用户下载 本地代码库到客户机,但它提高了访问数据库的速度。 模式3 的优势在于对多种数据库的支持,体现了其灵活性。它广泛适用于 i n t e r n e t i n t r a n e t 的开发,安全性和性能都十分显著;缺点是进行数据库操作时, 需要花费较长的时间。在大型的企业级的软件应用中,后台数据库往往不是一个,而 且是由不同的厂商支持的。不过,模式3 的j d b c 驱动往往提供许多企业级的特征, 因而会对用户特殊的用途有很大的帮助。对该模式的选用,在于用户对扩展应用是否 有需求以及对多d b m s 的支持。 模式4 的优势在于和数据库本身结合比较紧密,而且是纯j a v a 的实现,所以性 能很高,在企业级的软件应用中,应该是首选。一般说来,商业d b m s 的提供者往往 会为自已的数据库提供一个j d b c 接口。 2 1 8 一致数据访问技术( u d a ) 概述及其缺点 随着网络技术和数据库技术的不断发展,应用系统对数据集成的要求越来越高, 这些数据有可能分布在不同的地方,并且使用不同的格式,例如关系型数据库、操作 系统中的文件、电子表格、电子邮件、多媒体数据、目录服务信息等。传统的解决方 案是使用大型的数据库系统,把所有这些数据都移到数据库系统中,然后按照操作数 据库的办法对这些数据进行访问,但这种访问方式带来了很多问题,比如数据更新不 及时、空间资源冗余、访问效率低等。 1 0 m i c r o s o f t1 9 9 6 年推出了一致数据访问技术( u d a ,u n i v e r s a ld a t a a c c e s s ) ,为 关系型或非关系型数据访问提供了一致的访问接口,它使应用可通过一致的接口来访 问各种各样的数据,而不管数据驻留在何处,在实现分布式的同时也带来了高效率, 并且u d a 技术在统一数据访问接口的同时,它的多层结构使数据使用方有了更多的选 择机会,而它强大的扩展能力,也给数据提供方留下了更多的扩展余地,这种开放型 的软件结构使它具有极强的生命力。 u d a 包括两层软件接口,分别为a d o 和o l ed b 实际上是同一技术的两个方面。对 应于不同层次的应用开发,a d o 提供了高层软件接口,可在各种脚本语言( s c r i p t l a n g u a g e ) 或宏语言中直接使用;o l ed b 提供了底层软件接口,可直接使用。 2 1 9 对象链接嵌入数据库( o l e d b ) 概述及其缺点 o l ed b 的设计采用多层次模型,它定义封装各种数据库管理系统服务的c o m 接口 集合,这些接口使创建实现这种服务的软件组件成为可能。o l e d b 组件由数据提供者 ( 包含并公开数据) 、数据使用者( 使用数据) 和服务组件( 处理和传输数据) 组成。o l ed b 接口旨在平稳地集成组件。另外,o l ed b 包括到o d b c 的桥梁,使得可以继续支持当 今可用的广泛o d b c 关系数据库驱动程序。 o l ed b 分为两部分,一部分由数据提供者( d a t ap r o v i d e r s ) 实现,包括一些基本 功能,如获取数据、修改数据、添加数据项等;另一部分由系统提供,包括一些高级 服务,如游标功能、分布式查询等等。这样的层次结构很难为应用程序提供了多种选 择方案,数据提供者复杂了服务功能的实现手段,只能按o l ed b 规范编写一个c o m 组件( o l ed bi n t e r f a c e ) 程序,使得第三方发布数据更为复杂。 2 2 基于三层架构下数据访问技术 数据访问层理论的提出,基于以上的各种数据访问模型的缺点,微软提出了a d o 模型,那么的它的优势主要体现在什么地方昵? a d o 是微软通用数据访问的组成之一。利用a d o 提供的a p i ,开发人员可以访问 任何数据类型,它不仅支持关系型的数据库,还支持非关系型的数据库,如i s a m 文 件系统、电子邮件和图像数据。a d o 封装了o l ed b ,但却屏蔽了o l ed b 的复杂性, 开发人员通过它可以轻松自如地访问各种类型的数据库。a d o 有易用、高速、占用很 少的额外内存以及使用磁盘空间小等优点,因此被广大的用户所接受。 a d o 集成了o l ed b 和o d b c ,它要么直接通过o l ed b 提供者获取数据,要么间接 地通过o d b c 获取数据,因为a d o 没有在已有的数据库结构上添加其它层次,所以a d o 层十分瘦,执行起来十分高效。a d o 在访问数据时使用了p r o v i d e r ( 提供者) 的概念, 这就相当于o d b c 的d r i v e r ,正是通过这个p r o v i d e r 提供的一个接口集合,a d 0 可以 用统一的方法来访问不同的数据类型。对于那些独特的数据文件或更新的、更先进的 数据库系统来说,同样可以使用a d o 的o d b cd r i v e r 和o l ed b 的p r o v i d e r 来访问。 可以这么说,a d o 是为了能够从存放于很多不同类型的数据库中的数据以编程方 式进行访问和修改而设计的。正是这种更为广泛的访问范围,使得a d o 区别于以前的 数据访问技术。 a d o 是建立在c o m 基础之上的,提供了自动服务的接口。开发人员可以在d e l p h i , c # ,v i s u a lc + + ,v i s u a lb a s i c 以及其它支持c o m 的语言中使用它,也同样可以在脚 本语言中使用。 a d o 另外一个重要的优势是被内置在微软的所有操作系统里,如w i n d o w s 2 0 0 0 , 这就意味着使用a d o 访问数据库不需要在每一台计算机中再安装a d o 了。离线 ( o f f li n e ) 访问数据库是a d o 区别于传统的数据库访问技术的一大特点。因网络一般 都是断开的,只有在客户端提出请求时,服务器才有可能与客户端相连接。因此,必 须在断开的概念下实现客户端对服务器上的数据库访问。 a d o 的3 个主要组成对象是c o n n e c tio n ,r e c o r d s e t 和c o m m a n d 图2 4a d o 对象模型 c o n n e c t i o n 对象是到本地或远程数据库的连接,它管理应用程序和数据库之间通 信。借助这个对象,可以使用o p e n ,c l o s e 方法建立和释放一个源连接;使用 b e g i n t r a c n s ,c o m m i t t r a n s ,r o l l b a c k t r a n s 方法启动、提交、回滚一个事务处理; c o m m a n d 对象是用来处理重复执行的查询,或处理需要检查在存储过程调用中的输出 或返回参数值的查询;可以使用p a r a m e t e r s 集合制定命令参数;使用e x e c u t e 方法 执行s q l 并将查询返回到一个r e c o r d s e t 对象中等等。r e c o r d s e t 对象是用来连接到 一个记录集,从而获取查询的结果,这些结果由数据的行( 记录) 和列( 字段) 组成。借 助它可以设定n a m e 属性,参数名称,参数的值,执行a p p e n d c h u n k 方法,可以将数 据传给参数。 这里所提出的软件数据访问技术主要是基于数据应用层的软件技术。它不是软件 构件的再组装,而是对软件功能的抽象所形成的相对稳定的原子操作。而在这些原子 操作的基础上设计出稳定的访问层。整个系统在访问层的支持下,就能根据企业业务 逻辑的具体需求来自动生成企业级应用。 1 2 3 。1 数据流总体研究思想 第三章数据流研究 3 1 1 采用三层框架的必要性 对于一个简单的应用程序来说,代码量不是很多的情况下,一层结构或二层结构 开发完全够用,没有必要将其复杂化,如果对一个复杂的大型系统,设计为一层结构 或二层结构开发,那么这样的设计存在很严重缺陷。也就是说分层开发其实是为大型 系统服务的。 在开发过程中,总会出现相似的功能经常复制代码,那么同样的代码为什么要写 那么多次? 不但使程序变得冗长,更不利于维护,一个小小的修改或许会涉及很多页 面,经常导致异常的产生使程序不能正常运行。最主要的面向对象的思想没有得到丝 毫的体现。 意识到这样的问题,那么开始将程序中一些公用的处理程序写成公共方法,封装 在类中,供其它程序调用。例如写一个数据操作类,对数据操作进行合理封装,在数 据库操作过程中,只要类中的相应方法( 数据添加、修改、查询等) 可以完成特定的 数据操作,这就是数据访问层,不用每次操作数据库时都写那些重复性的数据库操作 代码。在新的应用开发中,数据访问层可以直接拿来用。面向对象的三大特性之一的 封装性在这里得到了很好的体现。这样做似乎找到了面向对象的感觉,代码量较以前 有了很大的减少,而且修改的时候也比较方便,也实现了代码的重用性。 数据库系统软件由于数据量的不断增加,这样原来的数据访问层失效了,数据操 作对象发生了变化,并且页面中涉及数据对象的地方也要进行修改,因为原来可能会 使用o l e d b d a t a r e a d e r 对象将数据传递给显示页面,现在都得换成s q l d a t a r e a d e r 对象, s q ls e r v e r 和a c c e s s 支持的数据类型也不一致,在显示数据时进行的数据转换也要进 行修改,这是要采用三层架构的情况。 这都是由设计不合理造成的,多层开发架构的出现可以很好地解决该问题,通过 程序架构进行合理的分层,将极大地提高程序的通用性。 使用三层架构开发有以下优点: 从开发角度和应用角度来看,三层架构l l - - 层架构或单层架构都有更大的优势。 三层架构适合团队开发,每人可以有不同的分工,协同工作使效率倍增。开发二层或 单层应用程序时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层 应用程序时,则可以结合多方面的人才,只需少数人对系统全面了解即可,从一定程 度降低了开发的难度。 三层架构可以更好的支持分布式计算环境。逻辑层的应用程序可以在多个计算机 上运行,充分利用网络的计算功能。分布式计算的潜力巨大,远比升级c p u 有效。美国 1 3 人曾利用分式计算解密,几个月就破解了据称永远都破解不了的密码。 三层架构的最大优点是它的安全性。用户只能通过逻辑层来访问数据层,减少了 入口点,把很多危险的系统功能都屏蔽了呻1 。 3 1 2 三层架构的数据驱动模式 目前,在开发项目时,大多都使用分层开发架构设计,最常见的就是三层架构, 目的在于使各个层之间只能够被它相邻的层产生影响,但是这个限制常常在使用多层 开发的时候被违反,这对系统的开发是有害的。三层架构按驱动模式可划分三种:数 据层驱动模式、陈述层驱动模式和隔离驱动模式。在本文中主要就数据驱动模式进行 论述。 图3 1 三层架构模式结构图 所谓的数据层驱动模式,就是先设计数据层,陈述层围绕数据层展开,一旦完成 了数据层和陈述层,业务层就围绕数据层展开。因为陈述层是围绕数据层展开的,这 将会使陈述层中的约束不准确,并且限制了业务层的变更。由于业务层受到限制,一 些简单变化可以通过s o l 查询和存储过程来实现。 这种模式非常的普遍,它和传统的客户服务端开发相似,并且是围绕已经存在的 数据库设计的。由于陈述层是围绕数据层设计的,它常常是凭直觉模仿数据层的实际 1 4 结构。 常常存在一种额外的反馈循环在陈述层到数据之间,当在设计陈述层不容易实现 的时候常常会去修改数据层,也就形成了这种反馈循环。开发者请求修改数据库方便 陈述层的开发,但是对数据层的设计却是有害的。这种改变是人为的而没考虑到其他 需求的限制。这种修改经常会违反至少损害数据的特有规则,导致不必要的数据冗余 和数据的非标准化。 3 2 n e t 框架下数据访问的研究 3 2 1 基于n e t 的系统框架研究 对于典型的三层应用系统来说,通常可以把系统分成以下三个层次:数据库层、 用户界面层和应用服务层。对于应用系统来说,在这三个层次中,系统的主要功能和 业务逻辑在应用服务层进行处理,对于系统框架来说,主要处理的也是这个层次的架 构。对于应用服务层来说,在一个面向对象的系统中,以下几个方面的问题是必须要 处理的: 数据的表示方式,也就是实体类的表示方式,以及同数据库的对应关系,即所 谓的o - rm a p 的问题。 数据的存取方式,也就是实体类的持久化问题,通常采用数据库来永久存储数 据实体,这就需要解决同数据库的交互问题。这个部分要完成的功能,就是将数据实 体保存到数据库中,或者从数据库中读取数据实体。同这个部分相关的,就是对数据 访问对象的使用。在框架中对a d o n e t 又做了一层封装,使其使用更加简便,同时也 统一了对a d o n e t 的使用方式。 业务逻辑的组织方式。在面向对象的系统中,业务逻辑是通过对象问的消息传 递来实现的。在这个部分,为了保证逻辑处理的正确性和可靠性,还必须支持事务处 理的能力。 业务服务的提供方式。为了保证系统的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西南名校联盟2025届物理高三第一学期期中教学质量检测试题含解析
- 吉林省联谊校2025届高一物理第一学期期末经典模拟试题含解析
- 2025届辽宁省大连渤海高级中学物理高一上期末预测试题含解析
- 2025届湖北省黄冈、华师大附中等八校物理高二上期中监测模拟试题含解析
- 2025届贵州省仁怀市高二物理第一学期期中达标检测试题含解析
- 2024装修维修合同范文
- 急性腹膜炎护理课件
- 《口袋菜园app介绍》课件
- 急危重症学严重创伤小讲课护理课件
- 2024年意法商户合同范本大全
- 2024抖音短视频代运营合同合作协议书(律师修订版)
- 造价咨询项目部外聘人员合同范本
- 2024-2030年船用发动机行业市场现状供需分析及投资评估规划分析研究报告
- RFID智能仓库管理系统方案
- DB35T 772-2023 行业用水定额
- 农村自建房接受赠与协议书范文
- 2023年温州瑞安农商银行招聘考试真题
- 手术室护理病历临床病案
- 2023-2024学年江西省萍乡市八年级(上)期末物理试卷
- 房屋与市政工程第三方质量安全巡查标准
- 2024年广东省第一次普通高中学业水平合格性考试历史试卷(解析版)
评论
0/150
提交评论