




已阅读5页,还剩73页未读, 继续免费阅读
(计算机软件与理论专业论文)三层结构及组件技术实现员工数据管理系统.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原理工大学硕士研究生学1 立论文 y6 2 0 3 2 9 三层结构及组件技术实现员工数据管理系统 摘要 以传统的c l i e n t s e r v e r 应用程序而言,为了满足 公司或组织多样化的要求,客户端的程序除了提供输入 接口,同时兼具传送数据与处理逻辑于一身,有时只是 某种规格或公式有异,客户端的程序便得重新编制,接 着重新除错、编译、连接,效率低下。构建三层或多层 结构适当地分配工作量到服务器端或客户端,以便达到 相辅相成的效果,成为大多数系统开发者与w e b 开发者 共同希望达到的目标。 本文对w e b 环境下的员丁数据管理系统进行了研 究,使用三层结构搭建了该系统,u i 层负责员工信息的 录入及查询表单的界面设计,商业逻辑打包在第二层 ( b l l ) 组件,包含添加、查询、删除、修改等,到数据 库存取的操作都在第三层( d a l ) 组件。本系统将处理逻 辑和网页内容分层,商业规则的变动不会影响到前端的 网页内容,分工合作,便于维护,同时建立好的第三层 太原理工大学硕士研究生学位论文 组件很容易被其他系统组件调用、使用( 第三层组件的方 法并非都要用到) ,这样可以达到组件重复使用的目的。 关键词:三层结构、组件、c o m + m t s 、员工数据管理系 统 i i 奎星堡三盔堂堡主婴塞生堂堡堡壅 r e s e a r c ha n di m p l e m e n t o fas t a f f d a t am a n a g e m e n ts y s t e m b a s e do n t h r e e t i e rs t r u c t u r ea n dc o m p o n e n t t e c h n o l o g y a b s t r a c t w h e l li tc o m e st ot h et r a d i t i o n a lc l i e n t c e r v e r a p p l i c a t i o n p r o g r a m ,i n o r d e rt om e e tv a r i o u sd e m a n do f c o m p a n i e s o r o r g a n i z a t i o n s ,c l i e n tp r o g r a mn e e dt op r o v i d eu i ,t r a n s f e rd a t aa n d e x e c u t el o g i c i fs o m er u l eo rf o r m u l ah a ss o m ec h a n g e s ,t h ec l i e n t p r o g r a mm u s t b er e w r i t t e n ,d e b u g g e d ,c o m p i l e da n dl i n k e da g a i n ,s o t h ee f f i c i e n c yi sv e r yl o w i no r d e rt o c o m p l e m e n te a c ho t h e r , t ob u i l dt h r e eo rm u f f t i e r s t r u c t u r ea n d p r o p e r l ya l l o c a t et h ew o r kl o a dt os e r v e ra n dc l i e n th a s b e c o m et h ec o m m o ng o a lo fm o s t s y s t e md e v e l o p e r s a n dw j b d e v e l o p e r s t h i sa r t i c l eh a sc a r d e do nr e s e a r c ht oas t a f td a t am a n a g e m e n t s y s t e mu n d e rw e b e n v i r o n m e n t ,a n du s i n gt h r e e t i e rs t r u c t u r et op u t u pt h i ss y s t e m i nt h es y s t e mu ii sr e s p o n s i b l ef o rt h ei n p u to fs t a f f i n f o r m a t i o na n di n t e r f a c ed e s i g no fi n q u i r yf o r m ;b u s i n e s sl o g i ci s p a c k a g e dt ob l lc o m p o n e n t s ,w h i c hi n c l u d ea d d i n g ,i n q u i r i n g , d e l e t i n g r e v i s i n ge t c 1 1 1 eo p e r a t i o nt og e ta n dr e t r i e v a ld a t af r o m d bi sd e v i s e di nt h ed a l t 1 1 i ss y s t e mi sd i v i d e di n t o1 a y e r st od e a l w i t hl o g i ct i e ra n dw e b p a g e s ,t h ec h a n g e so fb u s i n e s sr u l e sw i l ln o t i n f l u e n c et h ec o n t e n to f t h ef r o n tw e b p a g e s s o i ti se a s i l ym a i n t a i n e d a tt h es a n x et i m e ,t h ed a l c o m p o n e n tc o u l db ee a s i l yu s e db yo t h e r s y s t e m a t i cc o m p o n e n t s ,s ot h ea i mo fr e u s i n gc o m p o n e n t sc o u l db e a t t a i n e d i 太原理工大学硕士研究生学位论文 k e y w o r d s :t h r e e t i e r 、c o m p o n e n t 、c o m + m t s 、t h ed a t a m a n a g e m e n ts y s t e mo f s t a f f 太原理 _ 大学硕士研究生学位论文 一绪论 1 有关m l s 的开发 伴随着计算机软硬件的不断发展,计算机在管理方面的应用 所占的比例越来越大。但是,企业级的管理软件通常都比较庞大 而复杂,需要的不仅仅是高档的计算机硬件和优秀的软件,还需 要一定的开发方法和技术来不断满足和完善企业的需要。在过去 的十几年里,m i s 对于企业完善管理、提高生产和工作效率做出 了不可磨灭的贡献。然而,随着信息技术的进步、人们信息意识 的增强以及操作信息技能的普及和提高,传统m i s 的不足之处越 来越突出,其封闭的特点使人们难以实现建立完整信息网络的设 想。 传统m i s 的不足主要有以下几点: 系统为封闭式,限制信息资源开发的深度和利用的广度: 系统维护性差,过多依赖开发者的维护和修改; 系统用户界面作用繁杂,不统一,无法推广使用: 系统软件开发周期长,且基于某一操作系统; 系统的生命周期短,移植困难,升级麻烦; 系统信息内容与形式过于单一,系统质量难以保证。 如何减轻m i s 开发者的工作量,有效地利用以往m i s 建设中的成 功经验,避免低效重复劳动,自动生成应用系统程序;如何建设 高效、可靠、应变能力强的m i s 应用系统,使之功能强大,维护 简单,成为m i s 建设亟需解决的问题。 随着面向对象程序设计( o o p ) 的不断发展,面向对象的系统分 析和设计( 0 0 a o o d ) 也逐渐进步。面向对象的先天性优势决定它必 将逐步成熟,因为面向对象的分析和设计是以现实对象为基础, 不仅描述了对象的静态属性,也描述了对象的动态行为,更接近 现实,面向对象技术提出了一些基本概念( 对象,消息,类,封 装,继承,多态,动态定连等) 。这些概念为软件复用提供了依据, 然而传统的对象技术的可复用性很局限,比如用c + + 语言定义的 对象和类在其他面向对象语言的环境中就不能被调用,因为这种 复用标准是基于语言源代码级的,不能实现跨语言环境的调用, 为了克服这一局限,微软公司推出了c o m ( c o m p o n e n to b j e c t 太原理工大学硕士研究生学位论文 m o d e l ) 组件对象模型的技术标准。当然还有其他的组件模型,本 文主要讨论c o m 组件对象模型。软件组件的产生是对软件的生产 方式作一次根本性的变革。软件组件是具有特殊功能的、自主的 软件模块,这种模块按照一定的接口规范可以实现互操作。与对 象相比,组件是自主的、组件化不需要代码的重新编译和连接, 而直接作为功能模块在二进制级用于软件系统的装配。进入9 0 年代以来,组件方法己成为工业界普遍接受的提高软件质量、可 靠性与软件生产力的行之有效的方法和技术,即通过装配可重用 软件的方法来构造应用程序。就客户,来说,希望这种软件组件能 “即插即用”,即能从所提供的软件组件库中获取最合适的组件并 充分重用现有成熟的软件代码,而且这种组件必须便于增减,便 于维护和重构。 软件组件化思想和代码重用优势以及组件用于m i s 应用所 形成的三层结构体系和分布式处理,给软件工程带来了新的活力。 在本文中将介绍如何将组件技术应用于人事管理系统的子系统: 员工数据管理系统。 2 本文的研究方法 由于当前i n m r n e t i n 仃a n e t 技术的飞速发展,使用三层结构 技术开发管理信息系统成为必然趋势。 本文主要研究员工数据管理系统。在本系统中,考虑到一般 地,公司或企业各部门均在一个局域网范围内,系统用户多,部 门多且地点分散。为了便于扩展和维护、易于升级,维护人员不 再为程序的维护工作奔波于每个客户机之间,而把主要精力放在 功能服务器上。用户端无需专用的软件,当企业对网络应用进行 升级时,只需更新服务器端的软件,减轻系统维护与升级的成本 与工作量。整个系统决定采用三层结构( 本文采用b s 结构) 开发。 在m i s 系统中,用户的业务逻辑比较复杂,涉及到很多数据 处理,因而适合应用组件封装业务逻辑,员工数据管理系统涉及 到客户与数据库服务器之间基本的查询、修改操作。本文考虑应 用组件化程序设计方法设计商业逻辑组件同时将到数据库的操作 打包在第三层组件中。 通过对分布式应用系统体系结构和组件技术的研究搭建的 员工数据管理系统优于两层结构构建的m i s 系统,具有易于管 理、易于维护的特点,能够应用于以浏览器当成客户端接口或开 2 太原理工大学硕士研究生学位论文 发平台中,同时所作的登陆组件、b l l 组件、d a l 组件中包含了 全部的业务逻辑与接口,因此在a s p 代码中( 本文采用a s p 开发) 可以直接使用组件中提供的各种对象和接口,不必为建立数据库 连接、记录集的返回、合法性较验而做过多的重复工作。 3 本文的组织 本文共分为五章,第一章为绪论,介绍了传统m i s 的开发、目前 研究现状和本文的研究方法;第二章介绍了传统的两层c s 结构 与三层c s 结构模式的比较;第三章介绍了组件原理与a c t i v e x 组件:第四章详细叙述了员工数据管理系统分析和设计;第五章 为结束语,指出了系统功能需要进一步完善的地方。 3 查堕望王查堂堡主型壅竺兰垡丝苎 二传统的两层c s 结构与三层c s 结构 模式的比较 1 传统的两层c s 结构的特点与不足 分布式系统可以和多种计算模型相结合,形成不同的系统组 成和结构。c l i e n t s e r v e r ( 客户服务器) 模型是目前分布式计算系统 广泛采用的一种计算模型。在传统的c l i e n t s e r v e r 模型中,软 件分为客户和服务器两部分,分别运行于不同的机器或进程中, 二者协同工作。8 0 年代以来,一些主要的计算机技术( 网络、廉 价p c 、图形化用户界面和关系数据库) 推动了这种模型的应用与 发展。c l i e n t s e r v e r 模型的主要特点是: ( 1 ) 客户朋务器( c a l l r e t u r n ,请求与响应) 工作方式; ( 2 ) 以消息传递作为通信方式: ( 3 ) 基于过程的服务访问: ( 4 ) 服务集中于特定的服务器。 c l i e n t s e r v e r 模型的出现简化了复杂的应用系统的开发和 维护。服务器为客户提供系统定义的各种服务,如各种基于文件 的服务、数据库的服务、名字目录服务、事务处理等,为用户提 供了一种有效的资源共享手段。与传统的分时共享模式和资源共 享模式相比,c l i e n t s e r v e r 模型具有以下优点: ( 1 ) 优化网络利用率,减少了网络流量。客户端只把请求的内 容传给服务器,服务器只返回处理后的最终结果,系统中不必传 输整个数据文件的内容。特别是数据库操作时,由于处理数据的 主要过程和数据是放在一起的,库的内容可以不必传来传去。而 在资源共享模式中,由于整个文件要在本地处理,信息通常都要 下载到工作站上,其间要传输大量的数据。 ( 2 ) 响应时间较短。改进的原因之一是网络的流量减少,特别 是如果当c l i e n t s e r v e r 模型中允许在本地留下远端数据库的副 本时,数据查询的性能会得到很大的提高。 ( 3 ) 通过把应用程序同其处理的数据隔离,可以使数据具有独 5 太原理工大学硕士研究生学位论文 立性。这样,服务器就能对数据的存取进行充分而且有效的控制, 未通过验证和授权的用户将无法对数据进行非法的访问,系统数 据的完整性可以得到充分的保证。此外,数据的封装性使得改变 对数据本身的操作较为容易,通过少量的改动就把新的数据集成 到已有的应用中去,可以更快的开发出新的应用。 但是传统的c l i e n t s e r v e r 模型还存在一些不足,传统的 c l i e n t s e r v e r 应用软件模式大都是基于“胖客户机”结构下的两 层结构应用软件。客户端软件一般由应用程序及相应的数据库连 接程序组成,服务器方软件一般是某种数据库服务系统。它面临 的一个主要问题是系统的可伸缩性差和安装维护困难。开发人员 编写的程序在客户端运行,占用了大量的系统资源和网络资源。 传统的c l i e n t s e r v e r 模型的不足有以下几点: ( 1 ) c l i e n t 与s e r v e r 直接连接,没有中问结构负责处理请求: ( 2 ) s e r v e r 定位通常需要网络细节: ( 3 ) s e r v e r 必须是激活的; ( 4 ) 客户端的应用程序严格依赖于服务器端的数据存储和组 织方式; ( 5 ) 应用接口的异构性严重影响着系统间的互操作; ( 6 ) 许多相同的功能块被多次重复开发,软件复用率很低,最 常见的复用方式是拷贝代码块并对其进行修改。 在局域网中,早期采用文件服务器,现在广泛使用s q l 数据 库服务器( 如o r a c l e ,s q l s e r v e r ,s y b a s e 等) 。s q l 最初是 一种处理数据的描述型语言,随着s q l 应用于c l i e n t s e r v e r 环 境,人们认识到仅仅管理数据是不够的,还应管理处理数据的函 数,为此引入了存储过程的概念。存储过程存在于数据库服务器 上,c l i e n t 通过类r p c 机制调用这样的过程。但s q l 的进程管理 能力很弱,且不适合于管理复杂数据类型和分布于多个服务器的 数据。事务处理监控( t r a n s a c t i o np r o c e s s i n gm o n i t o r ) 技术和群件 ( q o 印v 啪溅术从不同方面都对此作出了贡献。 2 三层结构 传统客户机朋臣务器的应用在很长一段时间内满足了人们的 应用需求,但由于它的局限性,三层结构应用系统应运而生。三 层结构是在分布式技术成熟之后建立起来的,它的基本思想是将 用户界面同企业逻辑分离,把信息系统按功能划分为表示、功能 6 太原理工大学硕士研究生学位论文 和数据三大块,对应的软件层: ( 1 1 客户层( 表示层) ,表示层是应用的用户接口部分,它担负着 用户与应用间的对话功能。它用于检查用户输入的数据,显示输 出的数据。一般在客户层不存放业务逻辑或存放很少。 ( 2 ) 中间层( 业务逻辑层) ,通常由应用服务器或w e b 服务器实现, 中间层提供业务逻辑、事务调度,并与数据库有连接,它充当客 户与数据库之间的桥梁。m t s 或s y b a s ec t s 等事务服务器都是 中间层服务器,c o m 或c o r b a 对象可以嵌入其中提供业务逻 辑。 ( 3 ) 数据库层,即d b m s ,负责管理对数据库数据的读写,能迅速 执行大量数据的更新和检索。现在的主流是通常像s q ls e r v e r , o r a c l es e r v e r 等关系数据库系统( r d b m s ) 。 三层结构中的三层,只是逻辑上的概念。具体实现时,物理 结构上的差异可能会很大。三层可以在一台计算机上,也可以在 两台、三台,甚至更多的计算机上,只要它们在体系上遵循三层 c s 结构即可,只不过在一台或两台计算机上实现三层c s 结 构,它的优势是很难体现的。 在三层结构中,见图2 - 2 ( a ) ,每层支持应用程序的一个独 立部分。在事务处理过程中,每个客户机只向应用服务器发出一 个请求,这就减少了网络通信和竞争。每个应用程序的商业逻辑 部分是由该程序的所有用户共享,这就更好地控制了商业逻辑, 大大简化了变化的实现。另外,应用服务器和数据库之间是一定 数目的常连接( 用户不必做连接和断开数据库的操作) 。而且,三 层结构的特性是客户请求应用服务而不是数据请求。所以,随着 用户的增加,三层结构更加有效并容易扩展。当前,最典型的也 是最有前途的三层结构是b r o w s e r w e bs e r v e r d bs e r v e r ( b s ) ,本文的员工数据管理系统采用这种结构,见图2 - 2 0 3 ) 。 7 太原理工大学硕士研究生学位论文 表示层 应用层 数据层 图2 - 2 ( a ) 商业 图2 - 2 ( 8 ) 图2 - 1三层结构示意图 f i g 2 - 1t h r e el a y e r so f s t r u c t u r es k e t c hm a p 目前,三层( 多层) 应用程序已得到较广泛应用。该结构的主要 优点是: ( 1 ) 客户端人机界面部分的程序开发得到简化,不必关心业务 逻辑是如何访问数据库的,只需把精力集中在人机界面上。 ( 2 ) 中间业务逻辑层包含了大量的供客户端程序调用的业务 逻辑规则,以帮助其完成业务操作。它的优点就在于它所具有的 可伸缩性,可使其随具体业务逻辑的变化而变化但在客户层和 数据服务层所做的改动较小,提高了开发效率。 ( 3 ) 数据服务层主要提供对数据库进行各种操作的方法。它主 要由中间业务层来调用并完成业务逻辑,当数据库的结构确定后, 对于它的改动就比较小了。 ( 4 ) 系统的安全性得以提高。它可以对每个业务功能组件进行 授权,限制非法访问。 ( 5 ) 便于进行事务管理( 可使用微软的m t s 或其他类似的中间 件产品来实现) 。 请注意,本文今后所谈的三层结构均指是b r o w s e r w e b s e r v e r d bs e r v e r 结构 8 太原理工大学硕士研究生学位论文 三组件原理与a c t i v e x 组件 组件软件技术的基本思想是:将大而复杂的应用软件分成一 系列的可先行实现、易于开发和调整的软件单元,也就是组件。 这些组件可以单独开发、编译和调试,所有组件开发完成以后, 把它们组装在一起就得到完整的应用系统。这些组件模块可以运 行在同一台机器上,也可以运行在不同的机器上,甚至是不同的 操作系统。为了实现这样的应用软件,组件程序之间需要一些极 为细致的规范,为此,o m g ( 对象管理组织) 和微软分别提出了 c o r b a ( c o m m o no b j e c tr e q u e s tb r e a k e ra r c h i t e c t u r e ) 和c o m d c o m ( c o m p o n e n to b j e c tm o d e l d i s t r i b u t e dc o m p o n e n to b j e c t m o d e l ) 标准。 1 几种分布对象技术的比较 目前国际上分布式对象技术有三大流派:c o b r a 、c o m d c o m a c o m + 和j a v a 。c o r b a 技术是最早出现的,1 9 9 1 年o m g 颁布了c o b r a l 0 标准;再有就是微软的c o m 系列,从最初的 o l e 发展到现在的c o m + ,形成了微软一套分布式对象的计算 平台;而s u n 公司的j a v a 平台最早推出的时候只提供了远程的 方法调用( r m i ) ,接着又推出了e j b ( 企业级j a v a b e a n ) 。于是, 也就形成了目前的三大流派。 c o b r a 标准主要分为三个层次:对象请求代理、公共对象 服务和公共设施。最底层是对象请求代理o r b ,规定了分布对象 的定义( 接口) 和语言映射,实现对象问的通讯和互操作,是分 布对象系统中的“软总线”;在o r b 之上定义了很多公共服务, 可以提供诸如并发服务、事务服务、安全服务等;最上层的公共 设施则定义了组件框架,规定业务对象协作所需的规则。总之, c o r b a 的优点是大而全,互操作性和开放性非常好,缺点是庞 大而复杂,并且技术和标准的更新相对较慢。 j a v a 分布对象技术通常指r m i 和e j b 。r m i 提供了一个j a v a 对象远程调用另一j a v a 对象方法的能力;e j b 框架提供了像远程 访问以及安全管理等多种支持分布对象计算的服务。j a v a 的优势 是纯语言的,跨平台性非常好,缺点是运行速度比较慢。 c o m d c o m c o m + 技术是微软与其他厂商合作提出的种 9 太原理j 二犬学硕士研究生学位论文 分布组件对象模型,经历了o l e 、c o m 、a c t i v e x 、d c o m 和 c o m + 等几个阶段。从c o r b a 的观点来看,我们可以粗略地说, a c t i v e x 控件与d c o m 的关系相当于c o r b a 构件与o r b 的关 系。在公共服务方面,微软提出了自己的事务服务器 m t s ( m k :r o s o f t t r a n s a c t i o n s e r v e r ) 和消息队列服务器 m s m q ( m i c r o s o f fm e s s a g eq u e u es e r v e r ) 。前者与c o r b a 对象事 务服务目标类似,后者则是为了保证应用之间进行可靠的消息通 讯和管理。此外,微软在网络安全方面也有一整套实用的解决方 案。因此,c o m 他c o m c o m + 是分布对象计算的一个比较完整 的平台,比较c o r b a 和j a v a b e a n ,应用c o m d c o m c o m + 技术开发m i s 系统具有以下优势: 强有力的m t s 支持。m t s 为分布式应用提供了底层的基 础设施,它把应用系统的客户程序与应用组件对象以及各种资源 有机地组织起来。在m t s 应用中,所有的组件对象都运行在m t s 运行环境中,组件的运行环境负责所有资源管理、安全性管理、 环境管理等系统级特性处理。开发人员在编写组件对象时可以忽 略这些要素,只需简单实现基本的应用逻辑规则即可适合企业级 应用程序开发。 广泛的语言支持。多种语言支持c o m d c o m c o m + 的开 发,如c + + 、v b 、v c + + 、d e l p h i 等。尤其是应用v b 开发自动 化组件更加简单,只要按常规的方法编写“c l a s sm o d u l e ”即可 实现c o m 组件。v b 编译器承担了所有的底层细节处理任务,对 于开发企业级组件来说,v b 是一个高效的开发工具。 操作数据库更加简单。微软在推出o l ed b 和a d o 以后, 应用组件访问数据库更加简单、方便。o l ed b 完全基于c o m , 它不再局限于关系数据库,而是几乎适用所有的线形数据;a d o 是建立在o l e d b 上层的自动化对象库,它广泛用于各种脚本语 言中,为脚本代码访问数据库提供了极大的便利。 2 c o m 的发展历史及应用 可以说微软最初并没有刻意去发展一种组件化系统,而是在 o l e 技术的发展过程中产生了c o m ,c o m 的进一步发展表明, c o m 所定义的组件标准及其广泛性远远超过了o l e 所具有的能 力。o l e 最初表达的是复合文档的概念,在o l e i 中,组件程序 和客户程序之间进行通信是使用动态数据交换( d d e ) 的机制。 l0 太原理_ 大学硕士研究生学位论文 d d e 建立在w i n d o w s 操作系统的消息机制基础上,其缺点是效 率低,稳定性和易用性差。在o l e2 中,微软重新编写了底层代 码,放弃了d d e 而采用了c o m 模型,由于采用了c o m , o l e2 比o l e1 更高效,稳定性和灵活性也有了很大的改善。 自从c o m 在o l e2 中被应用以来,c o m 在不断地完善自己。 随着i n t e r a c t 和 n t r a n e t 的飞速发展,c o m 也以巨大的潜力渗透 到软件科学的各个领域中。 ( 1 ) 、c o m 应用于w i n d o w s 操作系统 在3 2 位w i n d o w s 版本中,很多系统部件以c o m 的形式出 现。这样做的好处是不仅使各种开发语言可以直接调用系统提供 的功能,而且也有利于在特殊情况下对组件的单独升级。 ( 2 ) 、c o m 应用于数据库 目前w i n d o w s 平台上访问数据库最高效的方式当是基于 o l ed b 上的a d o ,而o l ed b 完全基于c o m 。由于采用开放 的c o m 接口,增加数据源支持变得更加容易。 ( 3 ) 、c o m 应用于i n t e r n e t c o m 在i n t e m e t 相关软件的发展中最能体现c o m 的优势, 因为i n t e m e t 软件要求有很好的开放性,开放性就意味着要遵从 标准,在w i n d o w s 平台上,c o m 就是这样的标准。 ( 4 ) 、c o m 应用于i n t r a n e t 现在的i n t r a n e t 应用不再局限于一个厂家提供的产品,而是 将一些专业厂商提供的产品进行系统集成。系统集成的一个关键 问题就是软件之间的接1 2 1 ,如果所有的软件遵从了同样的接口标 准,则不同软件产品之间的交互就有了基础。 从c o m 的标准及c o m 相关的技术来看,c o m 应用于企业 的i n t r a n e t 将会给企业带来更大的效益。基于组件的企业信息系 统不仅可以缩短开发周期,保证软件质量,而且系统维护和升级 的费用也会大大降低。当软件的环境或者用户的需求发生改变以 后,只需要修改相应的组件,然后将新的组件和其他组件组合在 太原理工大学硕士研究生学位论文 一起就得到了新的应用系统。 3 c o m 的基本概念 c o m 是面向对象的软件模型,因而对象是它的基本要素之 一。接口是客户程序和组件程序进行交互的渠道,组件通过接口 暴露自己的功能,c o m 对象和接口是c o m 最重要的两个基本概 念。 ( 1 ) 、c o m 对象 在c o m 规范中并没有对c o m 对象进行严格的定义,但c o m 提供的是面向对象的组件模型,c o m 组件提供给客户的是以对 象形式封装起来的实体。客户程序与c o m 组件程序进行交互的 实体是c o m 对象,它并不关心组件的名称和位置。c o m 组件位 置之所以透明是因为客户程序通过全局唯一标识符( g u i d ) 进行 对象的创建和初始化工作。c o m 对象可以分为客户机、服务器 和a c t i v e x 控件。c o m 客户机可以是个应用程序或编程工具,操 作个或多个c o m 对象。服务器可以分为进程内服务器和进程 外服务器,进程内组件运行在客户程序迸程之中,所以进程内组 件的运行效率很高,但如果组件程序发生严重错误将导致客户程 序的崩溃。相反,进程外组件的稳定性好,但效率底。a c t i v e x 控件可以作为进程内服务器用于任何o l e 容器中,a c t i v e x 控件 与c o m 进程内服务器的最大差别在于a c t i v e x 控件通常有用户 界面。 一个组件程序可以包含多个c o m 对象,并且每个c o m 对 象可以实现多个接口。当客户程序调用组件功能时,它首先创建 或获得一个c o m 对象,然后通过该对象所实现的c o m 接口调 用提供的服务,c o m 组件、c o m 对象和c o m 接口的关系如图 所示。 耐白 接口1接口2接口3 图3 - 1c o m 组件、c o m 对象和c o m 接口的关系 l2 太原理工大学硕士研究生学位论文 f i g 3 - 1t h er e l a t i o no f c o m c o m p o n e n t ,c o mt a r g e ta n dc o m i n t e r f a c e ( 2 ) 、c o m 接口 c o m 接口是一组公用功能定义,是逻辑上相关函数的结合, 也被称为成员函数。客户程序与组件对象之恻通过接口进行交互, 因此组件接口的定义至关重要。 c o m 接口标识类似于c o m 对象的标识,也采用了全局唯一 标识符,它被称为接口标识符i i d ( i n t e r f a c ei d e m i f i e r ) 。如果客户 程序要使用一个c o m 对象的某个接口,则必须知道该接口的 i i d 。接口有以下几种类型: i u n k n o w n 接口,c o m 定义的每一个接口都必须从 i u n k n o w n 接口继承过来,因为i u n k n o w n 接口提供了两个非常重 要的特性:接口查询和生存期控制。i u n k n o w n 接口包含三个成 员函数:q u e r y i n t e r f a c e 、a d d r e f 、r e l e a s e ,函数q u e r y i n t e r f a c e 用于查询c o m 对象的其他接口指针;a d d r e f 和r e l e a s e 用于对 引用计数进行操作,c o m 对象通过引用计数控制对象的生存期。 i d i s p a t c h 接口,i d i s p a t c h 接l j 是自动化对象的基本接口, 自动化对象通常被用于高级语言或脚本语言开发环境中,它可以 直接用符号化的名字访问自动化的属性和方法。 自定义接e l 和双接口,自定义接口是系统尚未支持的接口。 双接口是指自动化对象在实现i d i s p a t c h 接k i 的基础上,把方法和 属性函数也以接口成员函数的方法暴露出去,这样就形成了双接 口的概念。 ( 3 ) 、注册表与c o m 的运行机制 c o m 规范使用1 2 8 位g u i d ( g l o b a l i yu n i q u ei d e n t m e r l f 根 据特定算法生成的g u l d 可以保证是全世界唯的) 来标识c o m 对象和接口,客户程序通过这些g u i d 值来创建c o m 对象并与 对象进行交互。因为客户程序与组件程序是独立的,客户程序通 过c o m 库完成对象的创建工作。c o m 库通过系统注册表所提供 的信息进行组件的创建工作,系统注册表是一个全操作系统范用 公用的信息仓库,其中包含了所有的c o m 组件必要的信息以及 其他一些用于系统管理的信息。 c o m 规范本身并没有规定系统注册表的结构,但它要求注 册表必须包含c o m 库在完成各种操作时所要求的各种信息因 13 太原理工大学硕士研究生学位论文 此注册表结构是与c o m 库直接相关的,实现c o m 库时必须同 时定义出注册表的结构。在w i n d o w s 操作系统中,c o m 库所要 求的注册信息都被放到w i n d o w s 系统的注册表中,所以w i n d o w s 注册表是注册c o m 信息的仓库。w i n d o w s 注册表是一个树状的 层次结构,根结点下包含了一些键( k e y ) 和值( v a l u e ) ,每个键 又可以包含子键和值,这样层层递进形成树状层次结构。w i n d o w s 注册表并不是c o m 专用的,c o m 只是用到其中的一部分, w i n d o w s 注册表还包含了其他辅助系统管理的注册信息。 以w i n d o w s2 0 0 0s e r v e r ( 中文版) 为例,w i n d o w s 注册表的 根结点有五个键结点:h k e y - c l a s s e s r 0 0 h k e y - c u r r e n t - u s e r , h k e y - l o c a l - m a c h i n e ,h k e y - u s e r s ,h k e y - c u r r e n t - c o n f i g 。 c o m 只用到了其中的一个:h k e y c l a s s e s r o o t ,在 h k e y - c l a s s e s r o o t 键下,最主要的是c l s i d 子键。在c l s i d 子键列出了当前机器上所有组件的信息,c l s i d 子键下的注册信 息中包含组件程序的路径。如果是进程内组件,则组件的c l s i d 子键下包含i n p r o c s e r v e r 3 2 子键,该子键的缺省值为组件程序的 全路径文件名;如果是进程外组件,则组件的c l s i d 子键下包含 l o c a l s e r v e r 3 2 子键,该子键的缺省值为组件程序的全路径文件名。 在c l s i d 子键下还可以包含其他一些与组件相关的信息,例如组 件程序的版本、o l e 组件的i n p r o c h a n d l e r 3 2 子键、组件程序的 图标信息、组件程序的类型库等。c o m 组件分配全球唯一的c l s i d ,g u i d ,u i i d 。 c o m 组件的创建,查询接口都是通过注册表进行的。有了 注册表,应用程序就不需要知道组件的d l l 文件名、位置,只需 要根据c l s i d 查就可以了。当版本升级的时侯只要改一下注册 表信息就可以转到新版本的d l l 。注册表把c l s i d 映射到文件 名( 本地激活) 或者远程名字( 远程激活) 。 4 c o m 特性 概括起来讲,c o m 特性包括面向对象的特性,客户端服务器 特性,语言无关性,对进程的透明性和可复用机制。面向对象的 特性,因为c o m 作为一种组件技术,也是从面向对象的思想发 展而来的。 客户端朋臣务器特性,组件之间的调用与被调用的关 系类似于客户端与服务器的关系。语言无关性,以i d l 的通用机 制为基础,c o m 规范的定义不依赖于特定的语言,因此,编写 l4 太原理_ l _ = 大学硕士研究生学1 :奇:论文 组件对象可以使用的语言与编写客户程序使用的语言可以不同, 只要它们都能够生成符合c o m 规范的可执行代码即可。c o m 标 准与面向对象语言不同,它采用的是一种二进制代码级的标准, 而不是源代码级的标准。在面向对象编程语言中定义的对象,只 能在同样的语言中被重复使用,这在很多程序上限制了对象的复 用。例如,用c + + 实现的c o m 组件中的对象,可以很容易地 在其他语言如d e l p h i 中使用。因此,c o m 的语言无关性实际上 为我们跨语言合作开发提供了统一的标准,有了这个标准,各种 语言可以发挥各自的特长,互相协作。 进程透明性,在客户端 服务器模型的软件结构中,运行在客户端的代码和运行在服务器 端的代码,既可以在同一个进程中,也可以在不同的进程中。如 果它们运行在同一个进程中,则由于组件和客户共享了进程的资 源,因而无论对于编程还是运行效率都是很有益的。但实际情况 往往并不简单,因为服务器程序并不总是作为d l l 被装入到客户 进程中,它也经常是一个e x e 可执行程序,所以跨进程操作也是 很必要的。可复用机制主要是通过包容和聚合两种复用模型来实 现。如图所示: 图3 - 2c o m 包容模型 f i g 3 - 2c o m c o n t a i nm o d e l 图3 - 3c o n 聚合模型 15 太原理工大学硕士研究生学位论文 f i g 3 - 3c o mc o n g r e g a t i o nm o d e l 5 c o m 的实现过程 c o m 应用系统是c o m 客户程序、c o m 库和c o m 组件程 序根据c o m 规范协同工作的结果。客户程序使用c o m 组件时, 首先要创建组件对象。如图3 - 4 所示: 图3 - 4 进程内组件的实现过程 f i g 3 - 4r e a l i z a t i o np r o c e d u r eo ft h ec o m p o n e n tp r o c e s s i n 客户程序通过调用c o c r e a t e l n s t a n c e 函数,它在内部实际调 用了c o g e t c l a s s o b j e c t 函数。c o g e t c l a s s o b j e c t 函数先找到由 c l s i d 指定的c o m 类的类厂,然后连接到类厂对象。如果c o m 对象是进程内组件对象,则就调用组件模块的d l l g e t c l a s s o b j e c t 弓l 出函数,由d l l g e t c l a s s o b j e e t 创建类厂,并返回类厂对象的接 口指针。如果c o m 对象是进程外组件,c o g e t c l a s s o b j e c t 函数先 启动组件进程,然后一直等待,直到组件进程把它支持的c o m 类对象的类厂注册到c o m 中。客户程序或c o m 库得到类厂对 象的接口指针以后,就可以调用类厂对象的c r e a t e l n s t a n c e 成员函 数创建组件对象。 16 太原理工大学硕士研究生学位论文 6 a c t iv e x 组件 在c o m 原理的基础上,在一定的环境下,可按照常规步骤 进行a c t i v e x 组件的设计。 为了最佳化资源的利用、提高效率与易于扩充系统等因素, 将常用的功能、模块与数据库的存取操作“组件化”,通过a c t i v e x 组件获取数据、显示结果,比直接用客户端脚本更能突显其效率。 使用a c t i v e x 组件具有以下优点: ( 1 ) 编译过的程序代码 a c t i v e x 组件是编译过的程序代码,和内嵌于a s p 中的s c r i p t 以逐行解释的方式不同。 ( 2 ) 最佳化 以v b 、v c c + + 、v j + + 或其它程序语言丌发工具建立的 a c t i v e x 组件已经过最佳化,加上它是编译过后的程序代码,执 行速度会比内嵌于a s p 中的s c r i p t 要快些。 ( 3 ) 。隐藏商业逻辑 商业逻辑包含的范围广泛,但主要都是数据库的连接( 服务 器数据库名称、帐号、密码等) 和存取操作( s q l 语句) ,像是 一些机密或安全性的数据( 如:薪资或转帐等) ,组件提供者可能 不想让其他人看到其中的处理规则,此时便可将其纳入组件中, 仅提供某些方法让w e b 开发人员调用。 ( 4 ) 维护容易 当有需要时,只要修改a c t i v e x 组件,便能同时更新多个a s p 文件显示的内容,而不用一一订正这些a s p 文件内的s c r i p t 。 ( 5 ) 扩充性强 以v b 或v c + + 开发的a c t i v e x 组件,不论是内含交易 ( t r a n s a c t i o n ) 操作,都可交给c o m + ( 组件服务一i i s 6 0 ) 或 m i c r o s o f tt r a n s a c t i o ns e r v e r ( m t s 一i i s 6 o ) 掌控,以便拥有更强 的扩充性。 7 c o m + m t s 三层结构不见得一定要搭配c o m + m t s ,但为了让w e b 应 用程序具“交易”的处理能力,可以交给c o m + m t s ,此并不代 表c o m +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年身体健康及养生保健知识竞赛试题(附含答案)
- 2024国家工作人员学法用法试题库及参考答案(版)
- 兽医传染病学模拟试题与答案
- 呼吸机相关肺炎预防与控制指南试题(附答案)
- CRRT护理相关知识考核试题及答案
- 2025年医院临床主治医师《口腔颌面医学影像诊断学》专业知识考试题库与答案
- (2024)“铸牢中华民族共同体意识”应知应会网络知识竞赛题库及答案
- 2024年广东省公务员考试申论真题及答案(县级卷)
- 标准日本语课件pdf
- 凭祥市电梯安全管理人员月考模拟题库加答案
- 第9章探放水钻机及相关设备的安全使用.
- 人教版三年级下册体育与健康教案(全册教学设计)
- (高清正版)JJF 1908-2021 双金属温度计校准规范
- 交通部农村公路建设标准指导意见
- 卫浴店面管理
- 清表施工方案4常用
- 纯化水系统再验证方案E
- 5立方米液化石油气储罐课程设计说明书
- 完工情况说明-
- 临床技术操作规范_骨科学分册资料全
- 华为内部虚拟股管理暂行条例
评论
0/150
提交评论