(计算机应用技术专业论文)unieap17组件框架分析及改进.pdf_第1页
(计算机应用技术专业论文)unieap17组件框架分析及改进.pdf_第2页
(计算机应用技术专业论文)unieap17组件框架分析及改进.pdf_第3页
(计算机应用技术专业论文)unieap17组件框架分析及改进.pdf_第4页
(计算机应用技术专业论文)unieap17组件框架分析及改进.pdf_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

东北大学硕士论文 摘要 摘要 u n i e a p l 7 是东软股份公司研究开发的通用企业应用平台框架。本论文主要 是按照j 2 e e 的多层模型来分析u n i e a p l 7 框架,并针对其存在的缺点提出改进 方案。 第一章主要讲述本课题的研究意义:u n i e a p l 7 的定位是一个基于组件技术 的快速开发和运行平台。它是将某一领域的共性进行抽象,提供对于这一领域开 发应用的环境。应用的开发者可以将精力集中于产品业务方面的实现,从而降低 了应用的开发难度,提高了开发速度。 第二章主要介绍了模式的概念,组件框架的基本概念和发展史,j 2 e e 的参考 模型。分析了组件框架和模式、体系结构、类库之间的关系与区别。 第三章介绍了本文涉及到的一些概念,0 0 p ( 面向对象编程) ,a o p ( 面向方面 编程) ,u m l ( 统一建模语言) 。 第四章分析u n i e a p l 7 u i 层的设计,提出其存在的缺点。分析了s u n 的j s f 结合二者的优点,提出了新的u i 层的设计,并进行详细分析。 第五章介绍:完善了u n i e a p l 7 的b l 层,提出了新的设计思路j a v a b e a n 的形式来定义组件,以一种统一的方式查找、管理、组装、使用系统的组件。 第六章介绍:最后为u n i e a p 的未来更加完善提出一些建议。 【关键字】u n i e a p l 7 ( u n i v e r s a le n t e r p r i s e a p p l i c a t i o np l a t f o r m ) 、框架、b l ( b u s i n e s s l o g i c ) 、u i ( u s e ri n t e r f a c e ) 东北大学硕士论文 a b s t r a c t a b s t r a c t u n i e a pi sau n i v e r s a le n t e r p r i s ef r a m e w o r kd e v e l o p e db yn e u s o f tg r o u pl t d t h em a i nc o n t e n to ft h i st h e s i si st h er e s e a r c ho nu n i e a p1 7b a s e do nj 2 e em o d e l p r o v i d ei m p r o v i n gm e t h o df o rd i s a d v a n t a g e i nt h ef i r s tc h a p t e r , t h en e e d o fd e v e l o p i n gu n i e a p1 ,7s y s t e mi sa n a l y z e d u n i e a p l 7i sar a p i dd e v e l o pc o m p o n e n tf r a m e w o r k i tp r o v i d e st h ee s s e n t i a l e n v i r o n m e n tf o rd o m a i na p p l i c a t i o n d o m a i na p p l i c a t i o np r o d u c td e v e l o p e r sc a np u t t h e i ra t t e n t i o no nt h eb u s i n e s sf u n c t i o n w i t ht h eh e l po ft h eu n i e a p l 7 ,t h e a p p l i c a t i o ns y s t e mc o m p l e x i t yc a nb er e d u c e da n d t i m ec a nb es a v e d i nt h es e c o n dc h a p t e r ,s o m ek n o w l e d g ea b o u td e s i g np a t t e r n ,c o m p o n e n t f r a m e w o r k ,e v o l u t i o no ff r a m e w o r ki s i n t r o d u c e d t h er e l a t i o no fd e s i g np a t t e r n a r c h i t e c t u r ea n df r a m e w o r ki sa n a l y z e d i nc h a p t e rt h r e e ,s o m er e l a t i o n a lt e c h n o l o g yi si n t r o d u c e d ,s u c ha so o t , a o p , u m l c h a p t e rf o u ri st h em a i np a r to ft h et h e s i s f i r s t l y , t h ef u n c t i o na n da r c h i t e c t u r eo f u n i e a pu ip a r ta r ei n t r o d u c e d s e c o n d l yt h et h e o r yo ft h ej s fo fs t mi si n t r o d u c e d f i n a l l yb r i n gan e wp r o j e c ti n t e g r a t et h ea d v a n c eo f u n i e a p l 7u ia n dj s f i nc h a p t e rf i v e ,p r o v i d ean e wp r o j e c tt op e r f e c tu n i e a p1 7b l t h ep r o j e c ti s u n i t em e t h o dt om a n a g e ,l o o k u p ,u s e dj a v a b e a nc o m p o n e n t f i n a l l y , s o m ep r o b l e m sa b o u tu n i e a pw i l lb ed i s c u s s e d k e yw o r d s lu n i e a p l 7 ,b l ,u i ,f r a m e w o r 东北大学硕士论文 声明 声明 本人声明,本人所呈交的学位论文是在导师的指导下完成的。论 文中取得的研究成果除加以标志和致谢的地方外,不包含其它人已经 发表或撰写过的研究成果,也不包括本人使用过的其它材料。与我一 同工作的同学和同事对本研究所作的任何贡献均已在论文中作了明确 的说明并标示致谢。 本人签名:王影怒 日期:2 。牛、9 东北大学硕士论文第l 章绪论 1 1 产生背景 第1 章绪论 随着社会信息化程度的提高,l t 技术已经深入到社会生活的方方面面,而 软件作为i t 技术应用的核心,其重要性也同渐突出。无论是生产制造,电子商 务,还是服务咨询领域,软件都已成为担当重任的核心力量,互联网和软件已成 为推动新经济发展的重要基础。 在传统经济下,企业对软件的要求主要是全功能和高质量。而现在,随着竞 争的加剧和客户需求的多样化,企业对软件的更新速度提出了更高的要求,过去 一年更新一次的软件,现在可能是半年、三个月、甚至一个月就必须更新。另一 方面,软件从过去主要用于提高生产效率、加强内部管理逐渐成为帮助企业获得 更大效益的工具也成为人们工作和生活中不可或缺的元素。无论是e d e v i c e 还是e b u s i n e s s 都离不丌软件。这种变化使软件丌发面临新的挑战,传统的软 件开发方法在这时已显得无能为力了,建立更好的软件”发环境,开发和采用可 复用的软件组件成为解决这一问题的最佳方法。 在现代软件工程中,代码重用通过面向对象语言的继承机制和编译技术已成 为现实。随着面向对象技术的r 趋成熟,像这样低层次的复用已经不适合于特定 领域大型软件生产的需求。为了提高软件生产过程的重用力度,软件领域的先驱 者们开始进行一种新的尝试来提高软件生产力。他们不仅要重用旧的代码,而且 要重用相似的分析设计结果和体系结构,来减少构造新软件系统的代价并提高软 件的可靠性。基于组件框架的方式就是这样一种面向特定领域的重用技术。 组件框架出于提供了可重用的组件丽被认为是一种最有前途的面向对象技 术。单独的类的重用,尽管有用,但由于重用力度小而不具备有意义的生产力的 飞跃,只有把特定领域的体系结构作为一个整体进行重用才能取得引入注目的成 就。 1 2 应用意义 组件框架是对具有共性的应用的提取,给应用程序提供一个隔离层,屏蔽了 数据的存储,数据的传输,促进业务模块的再利用,能针对用户需求在多种环境 下应用。使开发商集中精力在业务相关的应用上。从而提高产品的开发速度,满 东北大学硕士论文第1 章绪论 足市场的需要,提高企业的竞争力。 它的应用有以下几个方面的意义: 1 提高应用系统的灵活性。平台的开发遵循j 2 e e 标准,具有扩展( 开放) 性 强、高强壮性、高稳定性。 2 改变了编程人员的理念,有利于开发人员从面向过程向面向对象,面向组 件的方向过渡,提高了公司的整体素质。 3 明确了分工。 4 提高效率。避免重复性的劳动,避免不必要的代码维护和升级,集中精力 了解用户需求,搞好业务系统的设计和开发。 一2 一 东北大学硕士论文第2 章组件框架介绍及j 2 e e 框架介绍 第2 章组件框架介绍及j 2 e e 框架介绍 2 1 基本概念 模式( p a t t e r n ) :其实就是解决某一类问题的方法论。把解决某类问题的方法 总结归纳到理论高度,j 【1 1 5 就是模式。 2 1 1 模式的分类 体系结构模式:表示软件系统的基本结构。它提供了一套预定义的子系统, 规定它们的职责,并包含用于组织它们之间关系的规则和指南。体系结构模式可 以作为具体软件体系结构的模板,它舰定一个应角系统的结构特性,以及对其子 系统的体系结构施加的影响。如m v c 模式,在本章将进行介绍。 设计模式:是中等规模的模式,它在规模上比体系结构模式小,但独立于 特定的编程语言与规范,设计模式的应用对软件系统的基本结构没有影口m 但可 能对子系统的体系结构有影响。 惯用法。本文对此没有介绍, 2 1 2 本文所用的模式介绍 2 1 , 2 1 模板模式( t c m p l a t em e t h o d ) 模板模式是基于继承的代码复用的基本技术,模板模式需要丌发抽象类和具 体予类的设计人员之间的踟调, 发抽象类的设计人员给出算法的骨架和轮廓, 而开发具体子类的设计人员给出这个算法的具体步骤。图2 1 是模板模式的类图。 蚓2 j 毁扳模式的类剧 f i g 2 1t e m p l a t em e t h o dc l a s s 在基类中t e m p l a t e m e t h o d 方法,定义了p r i m i t i v e o p e r a t i o n ,p r i m i t i v e o p e r a t i o n l 的操作顺序,而在子类中只需要实现这两个方法就可以了。 一3 一 东北大学硕士论文第2 章组件框架介绍及j 2 e e 框架介绍 2 1 2 2s i n g l e t o n 模式 s i n g l e t o n 模式主要作用是保证在j a v a 应用程序中,一个c l a s s 只有一个实例 存在。通常的做法是定义类的构造函数为p r i v a t e 的,所有方法为s t a t i c 。 2 1 2 _ 3 策略模式( s t r a t e g y ) 策略模式是针对一组算法,将每一个算法封装到具有共同接口的独立类中 从而在不影响客户端代码的情况下可以相互替换,图2 2 是策略模式的类图。 图2 ,2 策略模式的类图 f i g 2 2s t r a t e g yc l a s s 2 1 2 4m v c ( m o d e l v i e w c o n t r o l l e r ) 模式 m v c 英文即m o d e l v i e w - c o n t r o l l e r ,即把一个应用的输入、处理、输出流 程按照m o d e l 、v i e w 、c o n t r o l l e r 的方式进行分离,这样一个应用被分成三个层 模型层、视图层、控制层。m v c 模式是框架u i 层设计的主要模式,它的发 展,演化直接影响到了框架u i 层的设计,在第四章将详细介绍m v c 与框架u i 层的关系。 视图( v i e w ) 代表用户交互界面,对于w e b 应用来说,可以概括为h t m l 界面,但有可能为x h t m l 、x m l 和a p p l e t 。随着应用的复杂性和规模性,界 面的处理也变得具有挑战性。一个应用可能有很多不同的视图,m v c 设计模式 对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在 视图上的业务流程的处理。业务流程的处理交予模型( m o d e l ) 处理。 模型( m o d e l ) :就是业务流程,状态的处理以及业务规则的制定。业务流 程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终 的处理结果。业务模型的设计可以既是m v c 最主要的核心。 控$ i ( c o n t r o l l e r ) 司以理解为从用户接收请求,将模型与视图匹配在一起, 共同完成用户的请求。控制层并不做任何的数据处理。例如,用户点击一个连接, 控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模 型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图, 一个视图可能对应多个模型的。图2 3 是m v c 组件的关系图。 一d 一 东北大学硕士论文 第2 章组件框架介绍及j 2 e e 框架介绍 2 2 框架发展史 图2 3 m v c 组件关系图 f i g 2 ,3t h er e l a t i o no f m v cc o m p o n e n t 框架是用一些抽象类和这些类的实例结合在一起来描述一个软件系统 ( f r a m e w o r k sa r er e u s a b l ed e s i g n so fa l lo rp a r to fas o r w a r es y s t e md e s c r i b e db ya s e to f a b s t r a c tc l a s s e sa n dt h ew a yi n s t a n c e so f t h o s ec l a s s e sc o l l a b o r a t e ) 。一个好的框 架可以缩短开发应用的成本,因为它可以让你重用设计和代码。框架中嵌入了领 域分析的理论,是领域分析的最终实现。为在这个领域搭建应用提供了底层的基 础。随着软件的发展,不断的提出新的技术来完善框架,为框架提供了新的特性, 使框架逐渐走向成熟。框架的发展大致分为3 个阶段。图2 4 展示了框架的发展 过程。 一5 一 东北大学硕士论文第2 章组件框架介绍及j 2 e e 框架介绍 艇胜趟坍 幽2 4 框架发展史 f i 9 2 4e v o l u t i o nf r a m e w o r k 图2 4 显示了框架的发展中各个阶段之m 的关系。矩形图表示框架发展的 阶段而椭圆形图表示在这些发展阶段所应川的技术。f f f f f x _ j 每个阶段和各阶段 所应用的技术进行详细的介绍。 2 :2 1 单独的应r e ( s i n g l ea p p l i c a t i o n ) 框架发展初期领域专家不知i 道如何抽象领域知以而程序员也不了解领域 知识,所以在设计初期不过是建立简单的应用来实现一定的功能,但是不久就会 发现代码有很大一部分是重复的,程序员通过拷贝和粘贴第一个应用的代码来搭 建以后的应用。随着经验的逐渐积累,领域专家和程序员对一些抽象模型达成了 共识,这时人们发现应当建立一个抽象模型的集合来提高工作效率,这就是框架 的雏形。 2 2 2 白盒框架( w h i t eb o xf r a m e w o r k ) 随着面向对象技术的成熟利用而向对象t i = i | q 继承机制极大提高了代码的复 东北大学硕士论文 第2 章组件框架介绍及j 2 e e 框架介绍 用度。在白盒框架中大量使用了继承,继承允许新的类可以重用现有类中的方法 并在此基础上扩展,在抽象类中使用模扳方法,使予类只关注方法的实现,不需 要了解业务的流程。 2 2 3 黑盒( b l a c kb o xf r a m e w o r k ) 到了黑盒,框架已经基本完善了,丌发者所要做的只是通过继承来丰富组件 库,而应用人员只需通过组合组件来架构应用。在黑盒中,你所做的就是对于组 件的组合,无须知道每个组件的功能,而在白盒中要了解基类的功能,便于正确 生成子类。 2 2 4 框架发展中的技术 框架发展中,为了更加完善框架的功能,提高框架的复用度,提出了很多新 的技术。如图2 4 所示在白盒框架和黑盒框架的发展中提出了,组件库,热点, 可插拔对象技术。丽在黑盒框架的发展中提出了可视化构建,语言工具的技术, 下面详细介绍。 2 2 4 1 组件库( c o m p o n e n tl i b r a r y ) 随着框架的发展,你会发现。相同的对象( 这些对象其实就是组成框架的抽 象类的子类) 在多个应用中使用,这就产生了创建组件库的想法,这样可以把多 次使用的对象作为组件来调用。抽象类般是在框架中而其子类一般是在应用 中,组件库就是这些子类的井集,是那些在多个应用中被使用对象的集合。 2 2 4 2 热点( h o ts p o t s ) 在基于框架丌发应用的过程中,可能有很多代码在多处被重写,这些地方叫 做热点。由于对象有很好的重用性,我们应该把这些重复的代码封装成对象。这 样,我们就可以通过对对象的调用来完成需要的功能,而不是复制代码。 2 2 4 3 可插拔对象( p l u g g a b l eo b j e c t s ) 为了使框架能适应外界的变化,提出了可插拔的概念,使新增的变化可以无 缝的和已有框架结合在一起。为了达到这个目的,人们提出了很多设计模式,如 策略模式。 2 2 4 4 可视化的构建( v i s u a lb u i l d e r ) 为框架应用提供一个可视化的工具可以对组件进行可视的拖放和编程。 2 2 4 5 语言工具( l a n g u a g et 0 0 1 ) 为框架提供一个便于操作的凋试环境。 2 3 组件框架 2 3 1 组件框架概述 组件框架是指在特定领域中的应用软件的半成品。框架是对于那些试图在它 们所关心的领域构造一个复杂软件系统的用户而言的。因为它是处于特定领域 中,所以应用系统的体系结构在许多不同的方面具有一定的相似性。组件框架利 用一系列的对象和它们之间的接口来对应静态和恒定结构的端口,并保留友好界 一 一 东北大学硕士论文 第2 章组件框架介绍及j 2 e e 框架介绍 面使用户能够很容易完成变化的、不稳定的部分而得到一个新应用程序。任何框 架都是特定领域的框架,一个框架可以包含一个或多个组件,模式。一般来晓 如图2 5 框架示意图所示。框架定义了一个应川程序的骨架,f :提供可以放胃于该 骨架中的标准用户界面实现。作为一个程序员,你的: 作只是在骨架中填入你的 应用程序中特定的部分。或是利用框架提供的细粒度组件来构建粗粒度组件。 图2 , 5 框架示意i 到 f i g 2 5f r a l l l e w o l ks k e t c hm a p 组件框架是一种软件重用技术,它是一个应用软件系统的部分或整体的可重 用设计。组件框架的具体表现为一组抽象类以及其实例( 对象) 之间的相互作用方 式。它是对于一个软件系统的全部或部分的可复用设计。由定义可知,一个组件 框架是一种面向对象的设计,尽管通常我们看到的框架都是山某种面向对象语言 实现的,但从理论上讲它可以不捉j f j , q t i i 向对象浯者的实现。面向对象类库大力度 的复用需要框架框架提供了类库l | 】被复门l t t 中t :的上f 文关系。 在一个专业领域内搭建框架时,把握框架的,e 同点是关键因素。框架一旦被 建立,其适应性和可扩展性就被提到了苘要地位。框架的直接日的是被复用,以 减少建立一个新应用系统的工作量。只有当理解个框架的代价少于建立一个新 系统的代价时框架的复用爿成为可能。擀建框架是个逐渐积累的过程,就是 说不断有新发现的共同点和新的组件被7 j l i k ,同时那些老的、不必要的组件被删 除,以此来保证整个应用系统的性能。任何框架都不能被直接复用,除非要建立 的应用系统非常简单或者与框架极为相似,除此之外都要对框架进行或多或少 的修改和扩展才能被复用。 2 3 2 组件框架和体系结构的不同 1 。 1 一 ,。 体系结构是更高层跃列吁某一个特定的软件l f j :l d i设计,是这个软件的总体 结构( a r c h i t e c t u r ei h i , g x l j e v ;ld e s i g n a r c h i t e c t u r ei st h eo v e r a l ls t r u c t u r eo ft h e s y s t e m ) 。与框架的不同在于。 体系结构在软件的生命周期| = i 属于砹汁部分,而组件框架是设计的具体实 现。 体系结构适用于单独的应j _ l :| 程序,= i :l i 适川于憋个产i 锗线。丽组件框架适用 一8 一 东北大学硕士论文第2 章组件框架介绍及j 2 e e 框架介绍 于某一领域。 组件框架需要满足可重用性。 2 3 3 组件框架和模式的不同 组件框架和模式都是软件重用的方法,但是他们的主要不同在于。 组件框架集中于具体设计,算法,语言的应用。而模式是抽象设计。 组件框架中体现了模式在某一应用领域的具体实现,模式起到了指导实现 的作用。 2 3 4 组件框架和类库的不同 我们首先要给类库一个明确的定义,对类库的广义描述为:类库以库文件的 形式存在,库文件中包含了事先定义好的类。从广义的角度看,组件的存在形式 可以看作一个类库,它是建立在多态性和动念绑定的系统化的广泛使用基础之 上。这些蜕起柬很简单,但现在已建立的开发方法很少有支持对框架设计的。不 过一些新的方法原理,例如模式,表现了对面向对象方法有意义的支持。但在传 统意义上,组件框架是不同于类库的,组件框架包含更多的内容。组件框架是对 协作完成一系列相关责任的类集合的抽象设计。组件框架和类库的+ 些主要区别 与联系如下: 在类库中是出用户实侈化抽象类,类库构件被单独使用。而在组件框架中 要有抽象类的一些具体予类应用软件开发者通过修改现存的类或定义新的子类 以扩展现存的类来使用框架。 在类库中是用户在需要的时候调用函数,不预定义控制流。而组件框架使 用了与用户之州的反向控制流,使用组件框架时,通常只是实现一些回调函数或 者使一些类适用于上下文然后调用一个单一的方法或过程,组件框架将完成其 余的工作。 使用类库只需要了解类的外部接口,但必须要定义应用软件的整体结构。 而组件框架的使用者要了解组件框架的抽象设计和类的内部结构来进行修改和 扩展,因此学习组1 i f | 二框架要比类库更加嗣难。 在类库中没有定义缺省行为,而在组件框架中提供缺省行为。 2 4j 2 e e 框架 。 ,。 j 2 e e 走的就是玎放路线,众多厂商芡同制定规范。使得j 2 e e 吸收了这些厂 商多年来在系统设计、系统集成方面的经验、教训。同时,这些厂商对新技术发 展的预测以及各自独到的观点,也会在j 2 e e 的规范中体现。所以,j 2 e e 产品可 以满足当前不断变化、同趋复杂的商业需求,很快就成为企业构建新系统的首选 产品。 s u n 公司在j 2 e ef _ ;f 增加了整套核心企业应用程序编程界面,而所有这些 界面均为标准的模块化组件。这些组件分为。 应用的客户组件( a p p l i c a t i o nc l i e n tc o m p o n e n t s ) 。 e n t e r p r i s ej a v a b e a n s t m 组件( e n t e r p r i s ej a v a b e a n s t mc o m p o n e n l s ) 。 9 东北大学硕士论文 第2 章组件框架介绍及j2 e e 框架介绍 s e r v l e t s 及j a v a s e r v e rp a g e s ( j s p 页而) 组件( 也被称作w e b 组件) 。 a p p l e t s 。 2 4 1 组件容器搭建体系架构 j 2 e e 规范定义了一个基于组件的多层企业应川系统玎发平台,而这种多层体 系结构的灵感j f 是来自m v c 模式。如图2 6 表示m v c 模式在j 2 e e 上的应用。 图中的椭圆形表示组件,人矩形表示容器,箭头表示访问,箭头线上的文字表示 相应的协议。 幽2 6m v c 模式a - j 2 e e | ,j 庸川 f i g 2 6u s e dm v c 0 1 1j 2 e e j 2 e e 是一个攮于- i h i :容器模型的系统5 | 台,其核心概念是容器。容器是指 为特定组件提供服务的个标准化的运行时环境,j a v a 虚拟机就是一个典型的容 器。组件是一个可以部薯的程序单元。它以某利一方式运行在容器中,容器封装了 j 2 e e 底层的a p i ,为组件提供事务处理、数据访问、安全性、持久性等服务。 在j 2 e e 中组件和组件之问并不直接访问,而是通过容器提供的协议和方法来相 互调用。组件和容器间的关系通过“协议”来定义。容器的底层是j 2 e e 服务器, 它为容器提供j 2 e e 中定义的各种服务和a p i 。一个j 2 e e 服务器( 也i t l ij 2 e e 应用 服务器) 可以支持一利,或多种容器。 2 5j 2 e e 多层应用模型 。 o 矿 一个多层的分前j 式的应用模型意味着应用逻辑被根据功能而划分成组件,并 且可以在同一个服务器或不同的服务器上安装组成j 2 e e 应刚组件。一个应用组 件应被安装在什么地方。取决于该应用组件属于该多层的j 2 e e 环境中的哪一 层。j 2 e e 定义了一个典型的四层结构,分别是客户层、w e b 层、商业逻辑层( 也 叫e j b 层) 和企业信息系统层。如图2 7j 2 e e 的多层模型。 1 0 一 东北大学硕士论文 第2 章组件框架介绍及j 2 e e 框架介绍 2 5 1 客户层( c l i e n tt i e r 】 本文没有对这部分做介绍。 2 5 2w e b 层 图2 7j 2 e e 的多层模型 f i g 2 7j 2 e ea r c h i t e c t u r e j 2 e ew e b 组件可以由j s p 页面、基于w e b 的a p p l e t s 以及显示h t m l 页面 的s e r v l e t s 组成。w e b 层可能包括一个j a v a b e a n s 类来管理用户输入,并将输入 发送到在业务层中运行的e n t e r p r i s eb e a n s 类束处理。运行在客户层的w e b 组件 依赖容器来支持诸如客户请求和响应及e n t e r p r i s eb e a n s 查询等。 2 5 3 商业逻辑层 作为解决某个特定业务领域需求( 比如银行、零售或金融业) 的逻辑的业务代 码由运行在业务层的e n t e r p r i s eb e a n s 来执行。一个e n t e r p r i s eb e a n s 从客户程序 处接收数据,对数据进行处理,再将数据发送到企业信息系统层存储。一个 e n t e r p r i s eb e a n s 还从存储中检索数据,并将数据送回客户程序。运行在业务层 的e n t e r p r i s eb a n s 依赖于容器来为诸如事务、生命期、状态管理、多线程及资源 存储池提供非常复杂的系统级代码。! l 业务层经常被称作e n t e r p r i s ej a v a b e a n s ( e j b l 层。业务层和w e b 层一起构成了3 层j 2 e e 应用的中间层,而其它两层是客户层 和企业信息系统层。 2 5 4 企业信息系统层 本文没有对这部分做介绍。 东北大学硕士论丈 第2 章组件框架介绍及j 2 e e 框架介绍 2 6j 2 e e 的核心e j b 2 6 1e j b 技术的体系结构 e j b 组件是基于分砷j 式事务处理的企业级应川程序的组件。所有的e j b 都有 如下的特点:e j b 包含了处理企业数掘的应用逻辑。定义了e j b 的客户界面。这 样的界面不受容器和服务器的影响。于是,当一个e j b 被集台到一个应用程序 中去时,不用更改代码和重新编译。e j b 能够定制备种系统级的服务,例如安全 和事务处理的特性都不是属于e j b 类的。而是由配置采i 组装应用程序的工具 来实现。 e j b 分和式应_ = f j 程序是基于剥象组件模型的,低层的事务服务用了a p i 技 术。e j b 技术简化了用j a v a 语言编写的企业应用系统的了1 :发,配胃。e j b 技术 定义了一组可重用的组件e n t e r p r i s eb e a n s 。你可以币l j l l j 这些组件,象搭积木一样 建立你的分稚式应用程序。当你把代码写好之后,这些f i l l - i :就被组合到特定的文 件中去。每个文件有一个或多个e n t e r p r i s eb e a n s ,在加上一些配置参数。最后, 这些e n t e r p r i s eb e a n s 被配置到一个装了e j b 容器的平台上。客户能够通过这些 b e a n s 的h o m e 接口,定位到某个b e a n s ,并产生这个b e a n s 的一个实例。这样, 客户就能够调用b e a n s 的应用方法和远程接h 。 e j b 服务器作为容器和低层平台的桥梁管理着e j b 容器和函数。e j b 容器提 供e j b 组件的状态管理、事务管理、线程管理、远程数据资源访问、连接管理 和安全性管理等系统级服务。所有的e j b 组件实例都运行在e j b 容器中,由e j b 容器控制着e j b 组件的生命期。e j b 组件可以被定制为提供安全和事务处理等各 种系统绂服务,但这些服务特性在本质上不属于e j b 组件类,而是由部署e j b 组件的容器来提供和实现的。容器是e j b 里面最重要的概念。它在r m i 的基础 上进行了进一步的封装使程序,1 :发者从网络传输中解放山柬,通过提供对象定 位机制,数据重组机制等等,简化分枷式应刚程序的7 1 :发。 2 6 2e j b 组件分类 e j b 分为:会晤b e a n ( s e s s i o nb e a n s ) 和实体b e a n ( e n t i t yb e a n s ) 。而会话 b e a n s 为有状态( s t a t e f u l ) 1 1 无状念( s t a t e l e s s ) 两种类型。 : 有状态会话类型e j b 组f ,f : 有状态会话类型e j b 组件实例与创建e j b 组件的客户端应用之间存在着一 一对应的关系e j b 容器代理客户端应用剥有状态会话类型e j b 组件实例中方法 的调用。客户端应用与曲b 容器巾有状态会活类型e j b 组件实例之间的对应关 系如图2 8 所示: 1 2 东北大学硕士论文 第2 章组件框架介绍及j 2 e e 框架介绍 圈2 8 客户端应用与有状态会话类型e j b 组件的对麻关 f i g2 8t h er e l a t i o no f c l i e n ta n ds t a t e f u ls e s s i o nb e a n s 由图2 8 可以看出:客户端创建e j b 组件对象实例获得e j b o b j e c t 类型对象。 当客户端调用该组件对象实例中的业务方法时,e j b 容器由组件的r m i 类型对 象实例作为远程调用代理与实例池中的有状态会话类型e j b 组件实例进行交互, 从而调用e j b 组件中定义的方法。针对e j b 容器中定义的每一个有状态会话类 型e j b 组件,e j b 容器均创建一个r m i 类型的远程对象作为e j b 组件与客户端 之间的代理。 s e s s i o nb e a n s 的生命周期是相对较短的。只有当客户端保持会话的时候, s e s s i o nb e a n s 才是活着的。一旦客户端退出了,s e s s i o nb e a n s 就不再与客户端 相联系了。s e s s i o n b e a n s 被看成是瞬时的,因为如果容器崩溃了,那么客户端必 须重新建立一个新的s e s s i o n 对象来继续会话。 无状态会话类型e j b 组件 无状态会话类型e j b 组件在客户端调用组件的方法期间不维护任何客户端 的状态信息。e j b 容器将所有创建的无状态会话类型e j b 组件实例均维护在个 组件实例池中,客户端对于同一e j b 组件的调用过程均可以由同一个e j b 组件对 象实例来完成。客户端应用与e j b 容器中无状态会话类型e j b 组件对象实例之间 的对应关系如图2 9 所示: 1 3 一 东北大学硕士论文第2 章组件框架介绍及j 2 e e 框架介绍 图2 9 客户端成川j j 无状态会衍类j 靼e j bf r t l l 。的对脚关系 f i g2 9t h er e l a t i o no f c l i e n lo f s t a t e l e s ss e s s i o nb e a n s 由图2 9 可以看出,所有的客户端应j 1 j m 明川 | 5 并在e j b 服务器t i i 的无状态 会话类型e j b 组件的方法时,均利j 1 1 同一个r m i 类型远程i ! x q 象作为e j b 组件的 调用代理。无状态会话类型e j bf ll f l :i i l + 以7 i :不同的客户端应用之i a u 享。但共 享的过程是某一时刻只能有一个客户端应川i 调川e j b 组件叫1 的同一方法。由于 e j b 组件不需要维护客户端应用的状态,因此客户端渊用任何无状态会话类型 e j b 组件实例中的同一方法均能够获敬相同的服务,这使得e j b 容器可以维护一 个较小的e j b 组件实例池,节省刈服务器资源n 勺- 1 j 耗。 实体b e a n s 实体组件代表存储在外部介质【| 1 的持续( 1 ,e r s i s t e n c e ) x , j 象或者已有的企业应 用系统资源。简单地说:一个实体纰件可以模拟为数据库表q 1 的一行记录,多个 客户端应用能够以兆享方式问表示浚数抓阼记录的实体l l f l :。依赖于e j b 容 器提供的事务服务,多个客户端应用能够在保持数撕库i 己录的致性和完整性前 提下实现刘数掘资源的共享。 实体类型e j b 组件的生命期戢i x , l 较k 并日其状态是持续的。只要实体组 件代表的数据库记录存在,该组f l :x , t 象实例就一九存在,叩使e j b 容器崩溃, 实体组件仍然具有生命力。按照实忭类型e j b 组仆持久性的实现形式,可以将 实体组件分为容器管理持久性( c o n t a i n e r m a n a g e df e r s i s t e n c e ,c m p ) * t l 组件管理 持久性( b e a n m a n a g e dp e r s i s t e n c e ,c m p ) 两种类型。在c m p 类型e j b 组件的实 现代码中,组件程序设计人员不需要为组件的持久性控制方法编写任何数掘库操 作的代码,而是在组件组装和部署过程h b 部署工具自动创建。如果要创建b m p 类型e j b 组件,则组件程序设计人员需要为所有持久性方法编写控制代码。 2 6 2 1e j b 的优点 e j b 是分= n f 式应用和复杂习f 务管理问题n 勺个最仆解决力案 开发人员免于编写复杂的多线程代码。 e j b 容器强大的事务管理,提高了,i :发人员f 门效率。 一1 4 东北大学硕士论文第2 章组件框架介绍及j 2 e e 框架介绍 2 6 2 2e j b 的缺点 e j b 使应用变得更难测试。分布式应用测试起来始终比运行在同一个j v m 中的应用更困难,e j b 应用无论是使用远程接口还是本地接口,测试起来都是很 困难,因为它们严重依赖于容器服务。 e j b 使应用变的更难部署。使用e j b 引来了很多部署方面的问题,如复杂 的类装载器。包翕了e j bj a r 文件和w e b 应用的一个企业级应用将包括很多的 类装载器。具体细节随着服务器的不同而不同。因此要求对服务器有所了解。复 杂的部署符。更慢的开发,部署,测试周期。 使用具有远程接口的e j b 可能会妨碍o o 设计的实施。 具有远程接口的e j b 使用的r m i ,r m i 自身的缺陷也使开发e j b 变的困 难,r m l 只能支持初级的分布对象互操作。而且容量和性能比较差,并发量大 以后,很容易出错和崩溃。 e j b 在实现数据持久化方面与j d o 相比也存在很多缺点。如c m p 不够灵 活如果我们要完成类似s q l 搜索语旬的l i k e 命令,如“s e l e c t 4f r o m a w h e r en a n l e l i k e 。b a n q i a o ”,c m p 就无法自动帮助我们完成,这样我们就需要自己来写。 你的代码依赖于e j b 的a p i 。 你的组件只能运行在e j b 的环境中。 1 5 一 东北大学硕士论文 第3 章相关技术介绍 第3 章相关技术介绍 在u n i e a p l 7 组什框架的7 :发_ ;f 改进的过刷小,采j n q 是i n i 向列象( o o p ) , 面向方面( a o p ) ,反向控制( 1 0 c ) 的技术。术论文叫= i 使川lu m l 和面向对象,而向 方面的一些术语来描述组件框架的分析和没汁过程。本章剥涉及到的基本概念及 系统开发中用到的相关知识进行简单的介绍。 3 1i o c 介绍 控制倒置( i o c ) 这个概念是经常在好莱坞原则上使川:“不要扣。电活给我,我 打给你”。这个原则的关键之处是娱乐公司列娱乐项目的完全控制,演员在这罩 只能被动的服从项目流程的安排,在需要的时候来完成流程中的一个具体环节。 同样框架中山框架来管理,登i 己,部珊 l t f l 。当k l :运例m 它需要的资源山框 架提供。这个模式为组件之问的凋用提供了一种松敞耦合的方式。避免了组件之 间的层层嵌套避免了业务逻辑的混乱。 3 1 1 o c 的分类 t y p el 组件的声明定义在一个外部文件中,容器通过凄i 跌配置文件来部署组件, 这要求组件要实现接口与实现分离。这种方式的缺点是在组件脱离容器之 后,会缺少一部分的功能。 q y p e2 组件通过使用s e t ( ) j j + 法米调j i j j l :它的鲔【1 ,| :。这利一方式的却缺点是需要在 组c t - q ,使用与业务无关的s e t ( ) 方法。 t y p e3 组件通过在构造函数r | l 术实例化洲川其他的组件。这利t 方式的缺点是需 要组件中使用与业务无关的构造函数。 3 1 2i o c 优势 因为组件不需要在运行时寻找合作( 这山框架提供) ,所以它们可以很容易 编写和维护。 测试变的更容易。 最后要强调的是,基于i o c 的容器不同0 :传统的容器,如e j b 。l o c 容器 使组件最小限度的依靠容器。这意味着你的、j p 务刘象- j 以运行存不同的i o c 框 架上或者没有框架而不需要改动仃何代码。 3 2 面向对象的基本知识 本节主要介绍一下面向刘象的川:发t 利织的砹汁和创建过程中一些特点和 相关的概念。 1 6 一 东北大学硕士论文第3 章相关技术介绍 3 2 1 面向对象的软件开发 面向对象方法的基本思想是,从客观世界存在的事物( 即对象) 出发来构造软 件系统。面向对象方法的任务就是根据系统的需要,找出系统需要的对象,对对 象进行设计,找出对象的属性、功能,并用面向对象的编程语言将对象抽象为类, 对类进行属性装配和功能实现。 对象的发现会发生在以下几个阶段。 对象的发现:它出现在最初的系统分析阶段,通过寻找外部因素与界限, 系统中的元素副本和最小概念单元而发现对象。 对象装配:建立对象时会发现需要一些新的成员,对象的这种需要可能要 用新类来支持它。 系统构造:随着系统开发的深入,与系统中的其它对象通讯和相互连接的 需要,可能改变已有的类或要求新类。 系统扩充:当

温馨提示

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

评论

0/150

提交评论