




已阅读5页,还剩54页未读, 继续免费阅读
(计算机软件与理论专业论文)基于java的构件组装工具的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
拱j - v u 的构件豇上城1 0 l 的埘“ 基于j a v a 的构件组装工具的研究 【摘要】 基于构件的软件开发的关键工作为构件豹组装,丽传统的构件组装未能很好 地对b s 应用的开发进行支持。本文的重点在于如何把构件组装与b s 应用的开 发进行结合,并提出了一个基于j a v a 的构件组装工具。该工具以基于j a v a 的b s 应用的体系结构为基础,并通过对b s 应用的m o d e l 2 模型的改进,提出了基于 构件的b s 应用的结构b m o d l e ,它采用c 2 构架风格来组装j a v a 构件,从 而构造出支持业务逻辑的构架;并以s e r v l e t 作为控制器,负责调度j s p 页面和 调用业务逻辑构架。文中给出了该工具的总体结构及采用该工具后的b s 应用开 发方法,并对组装工具实现中的关键技术进行了分析,特别是构架描述语言 x b a 、构件库接口、c 2 框架的实现、s c r v l e t 生成以及打包和部署等关键技术, 最后给出了一个开发实例。 【关键字】 构件组装,软件复用,软件构架,软件构件, c 2 ,b s 应用 尊l 页 幕于1 a v a 的构件组装工具的如旰究 ar e s e a r c ho n c o m p o n e n ta s s e m b l y a b s t r a c t t 0 0 lb a s e do nj a v a t h e k e yw o r ko f c o m p o n e n t b a s e ds o f t w a r ed e v e l o p m e n ti sc o m p o n e n ta s s e m b l y b u tt r a d i t i o n a l c o m p o n e n t a s s e m b l i e sd o n t s u p p o r tt h ed e v e l o p m e n t o fb s a p p l i c a t i o n sv e r y w e l l t h ee m p h a s i so f t h i sp e rl i e si nh o wt oc o m b i n ec o m p o n e n t a s s e m b l yw i t ht h ed e v e l o p m e n to f b sa p p l i c a t i o n s t h i sp a d e ra l s ob r i n g sf o r w a r da c o m p o n e n ta s s e m b l yt o o ib a s e d o nj a v a 1 1 1 et o o l i sb a s e do nt h ea r c h i t e c t u r eo fj a v a b s a p p l i c a t i o n s a n dp r e s e n t sat o m p o n e n tb a s e db sa p p l i c a t i o ns t m c t u r e c b m o d e l i tu sc 2a r c h i t e c t u r es t y l et oa s s e m b l ej a v ac o m p o n e n t s i nt h i s w a y , b u s i n e s sl o g i ca r c h i t e c t u r ec a nb eb u i i t i ta d o p t ss e r v l e ta sc o n t r o l l e rt od i s p a t c hj s p a n di n v o k eb u s i n e s sl o g i ca r c h i t e c t u r e t i l i sp a p e r p r o v i d e st h eo v e r a l ls t r u c t u r eo f t h e t o o ia n dt h ed e v e l o p m e n tm e t h o do fb sa p p l i c a t i o n st h a ts h o u l db ef o l l o w e da f t e r a p p l y i n g t h et 0 0 1 t h i sp a p e ra l s oa n a l y s e st h ek e y t e c h n o l o g i e so f t h ei m p l e m e n t a t i o n o ft h et o o l ,a n de s p e c i a l l yd i s c u s s e st h ea r c h i t e c t u r ed e s e r i p t i o nl a n g u a g ex b a ,t h e i n t e f f a c et o t o m p o n e n tr e p o s i t o r y , t h ei m p l e m e n t a t i o n o fc 2f r a m e w o r k t h e g e n e r a t i o no fs e r v l e t ,p a c k a g i n ga n dd e p l o y m e n t a tt h ee n d ,t h i sp a p e rg i v e sa n d e v e l o p m e n te x a m p l e o f t h et 0 0 1 k e y w o r d s c o m p o n e n ta s s e m b l y , s o f t w a r er e u s e ,s o f t w a r ea r c h i t e c t u r e ,s o f t w a r ec o m p o n e n t , c 2 ,b sa p p l i c a t i o n 第2 页 娘j 1j u r a 的构件虬l 毅ih 的圳宄 1 引言 1 1 软件复用 自n a t o 于1 9 6 8 年提出软件工程概念以来,软件工程界已经提出了一系列 的理论、方法、语言和工具,解决了软件开发过程中的若干问题。但是,软件固 有的复杂性、易变形和不可见性,使得软件开发周期长、代价高和质量低的问题 仍然存在,“软件危机”并没有完全被克服。软件复用是解决“软件危机”的墓 要手段之一。软件复用是d o u gm c l l r o y 在1 9 6 8 年的n a t o 软件工程会议上正式 提出的。复用是成熟的工程领域的一个基本特征,同样,复用也是软件工程走向 成熟的必由之路。 软件复用是指通过对已有软件的各种有关知识来建立新的软件,这些知识包 括:领域知识、开发经验、设计经验、设计决定、体系结构、需求、设计、代码 和文档等。通过软件复用,在应用系统开发中可以充分地利用已有的开发成果, 消除了在分析、设计、编码、测试等方面的许多重复劳动,可以提高软件开发的 效率:同时,通过复用高质量的已有的开发成果,避免了重新开发可能引入的错 误,可以提高软件的质量。因此,软件复用可以大大降低软件开发费用,并显著 地提高生产率和产品质量。 1 2 软件构架的研究 1 2 1 基于构件的软件工程 基于构件的软件工程( c o m p o n e n tb a s e ds o f t w a r ee n g i n e e r i n g ,c b s e ) 是软 件复用的一种有效形式。c b s e 鼓励逶过组装可复用构件来建造软件系统。在采 用c b s e 开发软件时,存在一组预先建造好的、标准化的软件构件可供复用,根 据具体应用来设计系统的构架,然后应用系统通过使用这些构件组装而成,而不 是一切从零开始进行编码。c b s e 体现了“购买,而非建造”的思想。在采用 c b s e 的情况下,程序开发模式也相应的发生了根本变化。软件开发不再是“算 法+ 数据结构”,而是“构件开发+ 基于构絮的构件组装”,软件开发的重点从程 序设计转移到了构件组装。这样做的基础是假定在很多大型软件系统中存在足够 多的共性,从而使得开发可复用软件构件来满足这些共性是值得的。 c b s e 包含两个并行的工程过程t 领域工程和基于构件的软件开发。图1 t 表示了这样一种支持c b s e 的过程模型。 领域工程( d o m a i ne n g i n e e r i n g ) 探索个应用领域。考察相关软件系统的 共性以及它们的差异性,找到对这类系统的需求的一个通用描述以及它们的实现 方法,并试图发现候选的可复用构件。领域工程包括三个主要的活动领域分 析、领域构架开发和领域构件开发。领域分析指特定领域中公共需求的标识、分 第4 页 蚺j il i v ;i 的构什 l l 城1 :儿的i i j f 究 析和规约,通常是为了在应用领域中多个项目间的复用。现在已经有了很多领域 分析的方法,如f o d a 、o d m 、s t a r s 等。领域分析包括领域范围界定和领域 建模两个主要过程。领域范围界定主要目标是获得语境模型。在这个阶段中要识 别出领域的确切边界,对领域应用的使用情况,各种外部条件,以及与外部世界 的可能的交互。领域建模的主要目标是获得领域模型。在这个阶段中要分析领域 中系统的需求,确定哪些需求是被领域中的系统广泛共享的,并且把这些需求表 示出来,从而建立领域模型。开发领域构架的目标是获得领域构架。建立了领域 模型之后,就可以派生出满足这些己被建模的领域需求的领域构架。由于领域模 型中的领域需求具有一定的变化性,领域构架也要相应地具有可变性。它可以通 过可变的( a l t e r n a t i v e ) 、可选的( o p t i o n a 】) 解决方案来做到这一点。实施领域工程, 获取领域模型和领域构架的一个重要意义在于能够识别出领域构件,并提供对现 存的可复用构件的分类,使得在开发过程中尽早地识别复用机会。在获得领域模 型和领域构架之后,就可以以它们为基础对可复用构件进行组织,以便于构件的 查询和复用。对可复用构件的管理一般由构件库来完成。 图i i 一个支持c b s e 的过程模型 对于基于构件的开发( c o m p o n e n tb a s e ds o f t w a r ed e v e l o p m e n t ,c b s d ) ,首先 要根据需求分析和领域工程中确定的领域构架进行软件构架的设计。构架设计过 程的本质在于;将系统分解成相应的组成成分( 如构件、连接器) :并将这些成 分重新组装成一个系统。一旦构架被建立,它必须用构件去充实,这些构件或者 第5 页 摹于l a v a 的构件组驶丁且的 j f 究 可从构件库中获得,或者根据专门需要而开发。因此,基于构件的开发的任务流 有两个并行的路径。当可复用构件可以潜在地被集成进构架中时,它们必须被鉴 定和进行适应性修改。当需要新构件时,必须重新开发,然后,生产的新构件被 组装到构架中,并进行全面测试。 软件复用应该涵盖软件生命周期的各个阶段,而不能仅仅局限在运行层次上 来看待构件,也不应该只是对代码进行复用。因此,采用了基于构件的开发方法 以后,软件开发的各个阶段都与传统的开发方法有所不同。在需求分析阶段,就 应该参考领域分析的得到的领域模型,还要了解有哪些可用的领域构件;在设计 阶段,应该参考领域构架,对系统的构架进行设计;在开发阶段,根据设计出的 构架,使用软件构件来组装应用系统;在维护阶段,根据需要对构架进行演化。 基于构件的软件开发提供了一种利用现存的中间件基础设施自底向上地实 现基于构件的软件复用的途径,强调使用已经开发好的构件来构造系统。但是, 当前大多数c b s d 方法讨论的重点局限于c o m 、c o r b a 、e j b 等二进制构件, 这些中间件技术仅仅提供了在实现层次上支持构件交互的基础机制,缺少指导 c b s d 过程的系统化的方法学,特别是对高抽象层次的构件组装无能为力。要解 决这个问题,就要借助于软件构架的概念。 1 2 2 软件构架 软件构架在软件开发中的地位越来越重要,但目前还没有对软件构架的一个 被广泛接受的定义。虽然对于软件构架有很多不同的解释方式,但是通常认为软 件构架是关于一个系统的结构方面的概念。在文献【1 】中,作者对软件构架的定 义为: t h es t r u c t u r eo f t h ec o m p o n e n t s o f a p r o g r a m “s y s t e m , t h e i ri n t e r r e l a t i o n s h i p s a n d p r i n c i p l e sa n d g u i d e l i n e sg o v e r n i n g t h e i rd e s i g na n de v o l u t i o no v e rt i m e 软件构架将大型软件系统的总体结构作为研究的对象,认为系统中的计算元 素和它们之间的高层组织是系统设计的一个关键方面。其研究和实践旨在将一个 系统的体系结构显式化,以在较高抽象层次处理诸如全局组织和控制结构、功能 到计算单元的分配、计算元素间的高层交互等设计问题。软件构架定义了软件的 局部和总体计算部件的构成,以及这些部件之间的相互作用关系。软件构架的研 究研究的目标是降低应用开发的成本并增加一个紧密相关的产品族的不同成员 之间的共性。基于构架的软件开发的关注点从代码行转移到了粗粒度的构架元素 ( 软件构件和连接器) 以及它们之间的整体互连结构。作为其最重要的一个贡献, 软件构架的研究将构件之间的交互显式地表现为连接器,并将连接器视为系统中 与构件同等重要的一阶实体。这样,软件构架提供了一种在较高抽象层次观察、 设计系统并推理系统行为和性质的方式,也提供了设计和实现可复用性更好的构 第6 页 鳗j + j a v u 的构件纰城i 其的川九 件、甚至复用连接器的途径。软件构架试图在软件需求与软件设计之间架起座 桥梁,着重解决软件系统的结构和需求向实现平坦地过渡的问题。从机器语言、 汇编语言、过程式程序设计语言、面向对象程序设计语言、形式化( 半形式化) 规格说明语言( 如构架描述语言) 发展过程中,可以发现:新的计算机语言越来 越适合于开发人员的思维活动模型,代码复用的级别也在不断地提升。构架技术 的研究,使软件复用从代码复用发展到设计复用和过程复用。构架在软件开发中 为不同的人员提供了共同交流的语言,体现并尝试了系统早期的设计决策,并作 为系统设计的抽象,为实现框架和构件的共享与复用、基于构架的软件开发提供 了有力的支持。软件构架是实现构件组装的基础,只有首先定义出构架,才能在 它的基础上进行构件组装。 在本质上,软件构架提供了一种自顶向下实现基于构件的软件复用的途径。 任何软件开发技术和方法学的目标是支持有效和高效地生产可执行的系统,因此 对软件构架的研究应该更多地关注构架描述豹求精和实现,提供支持转换或组装 自动化的能力。遗憾的是,当前软件构架的研究大都是局限于构架的建模和描述, 以及一些高层的性质验证,对构架的求精和实现的支持能力明显不足。 构架描述语言( a r c h i t e c t u r ed e s c r i p t i o nl a n g u a g e ,a d l ) 是进行构架设计 的主要技术及描述手段。从构件组装的角度来看,a d l 可以视为对构件描述语 言( c d l ) 的进一步扩展。构件描述语言的基本思想是将构件看成是一个黑盒, 通过描述构件接口的语法和语义,使得复用者不必过多地涉及构件代码细节,就 可以在构件描述这一抽象层次上进行构件组装。而a d l 除了描述构件接口的语 法和语义之外,还负贵描述:系统中包括的构件和连接器以及它们之间的交互关 系、构件的非功能属性以及构件间协议,从而为构件组装提供了更为有利的支持。 有代表性的a d l 包括a c m e ,w r i g h t ,r a p i d ,d a r w i n 等。但这些a d l 都 是为满足某种特殊的设计目标与领域特征而开发的,有各自不同的侧重点和特 色,对软件构架的研究起到了重要作用它们在各自领域内是非常有效的,但由 于它们的语法都是固定的并且差剐较大,所以难以增加新的特性,而且彼此之间 的交互非常困难,难以做到构架表示信息的共事。在关于到底什么是a d l 这个 问题上在众多的a d l 之问也还没有达成一致,它们对应该对一个构架的哪些 方面建模的理解也不尽相同。例如,r a p i d 作为一种通用系统描述语言,它对构 件的接口和它们的外部可视行为进行了建模,丽w h g h t 对构架连接的语义进行 了形式化描述。 1 2 3 构架风格 构架风格是描述某一特定应用领域中系统组织方式的惯用模式。它反映了领 域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效的 第7 页 雉卡j 甜u 的构件锃上城t 只的研究 组织成一个完整的系统。软件构架使用一些公认的风格来对系统结构的设计提供 指南。构架风格提供了一系列设计规则,它们标识出了构件和连接器的类型,以 及对于它们的组合的局部或总体约束。每种构架风格都适合于某些类型的问题, 但没有一种是适用于所有问题的。构架风格在本质上反映了一些特定的元素、按 照特定的方式组成一个特定的结构,该结构应有利于上下文环境下的特定问题的 解决。目前已经提出了多种构架风格,以下是一些常见的构架风格: ( i ) 管道i 过滤器风格 在管道i 过滤器风格的软件构架中,每个构件都有一组输入和输出,构件读输入 的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的 变换及增量计算来完成。因此这里的构件被称为过滤器。这种风格的连接器就 像是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。管道 过滤器风格的优点包括: 1 ) 使得构件具有良好的隐蔽性和高内聚、低耦合的特点,独立的、输入输出关 系明确的构件很容易实现复用; 2 ) 可以将整个系统的输,v 输出行为看成是多个过滤器的行为的简单合成; 3 ) 系统维护和增强系统功能比较简单新的过滤器可以添加到现有系统中来, 旧的过滤器可以被改进的过滤器替换掉; 4 ) 由于通过独立构件的组合,系统具有清晰的拓扑结构,因而容易进行某些性 能方面的分析,例如吞吐量、死锁等: 5 ) 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务 并行执行。 但是,这种风格也存在一些缺点; 1 ) 过滤器是对输入的批量转换处理,该类系统特别不适合于设计交互式应用。 2 ) 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的 工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。 3 ) 通过并行运行获得高运行效率往往是行不通的。原因在于如下,第一,独立 运行的构件之间的数据传送的效率会很低,在网络传送时尤其如此:第二, 过滤器通常是在消费掉所有输入后才产生输出;第三,在单处理器的机器上 进程的切换代价是很高的 第四,通过管道对过滤器的同步控制可导致频繁 启动和停止过滤器工作。 ( 2 ) 层次系统风格 层次系统组织成一个层次结构,每一层为上层服务,并作为下层的客户。在 一些层次系统中,除了一些个别的输出函数以外,内部的层只对相邻的层可见。 这样,内部的层对于外部的层来说就相当于虚拟机。与这种不透明的层不同,在 第8 页 基十1 a v a 的构件组上漱工具的研究 另一些层次系统中,层是半透明的。连接器通过决定层间如何交互的协议来定义 拓扑约束包括对相邻层间交互的约束。层次系统风格的优点包括: 1 ) 支持抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤 进行分解; 2 ) 支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多 影响相邻的上下层; 3 ) 支持复用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。 这样,就可以定义一组标准的接口,而允许各种不同的实现方法。 这种风格的缺点主要包括: 1 ) 并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻 辑结构是层次化的,出于对系统性能的考虑,构架设计师不得不把一些低级 和高级的功能综合起来: 2 ) 很难找到一个合适的、正确的层次抽象方法。 ( 3 ) 仓库风格 在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件 在中央数据结构上执行。 根据对控制原则的选取,仓库风格可以分为两类。若输入流中某类事件触发 进程执行的选择,则这种仓库就是传统型数据库;另一方面,若中央数据结构的 当前状态触发进程执行的选择,则这种仓库就是黑板系统。 ( 4 ) c 2 风格 可以把c 2 构架风格看作为通过连接器绑定在一起的按照一组规则运作的基 于消息的并行构件网络。c 2 风格的系统组织规则如下; 1 ) 系统中的构件和连接器都有一个顶部和一个底部。 2 ) 构件的顶部应连接到某连接器的底部,构件的底部应连接到某连接器的顶部, 而构件和构件之间的直接连接是不允许的。 3 ) 一个连接器可以和任意数日的其它构件和连接器连接。 4 ) 当两个连接器进行直接连接时,必须由其中一个的底部到另一个的顶部。 c 2 风格具有如下的特点: 1 ) 底层无关性:构件完全不知道在它下层的其它构件。 2 ) c 2 风格对于构件的实现语言或粒度没有任何限制,所以可以用于组装异构构 件。 3 ) 所有构件之间的通信是通过以连接器为中介的异步消息交换机制来实现的。 由于所有的消息传递都是异步的,控制集成问题就被大大简化了。 第9 页 桀十j a v a 的构件纽城t 且的研究 4 1 构件相对独立,构件之间的依赖性较少。系统中不存在某些构件将在同一地 址空间内执行,或某些构件共享特定控制线程之类的相关性假设。 5 1 对动态构架提供良好的支持。 1 2 4 构件和构件模型 从一般意义上讲,构件是系统中可以明确辨识的构成成分,而软件构件则是 软件系统中具有一定意义的相对独立的构成成分。由于目前讨论的软件构件主要 着眼于其复用意义,因此软件构件主要是指可复用软件构件。目前在构件的定义 上还存在很多争论,一些人把构件强调为有用行为在概念上结合在一起的包,而 有些人倾向于把构件作为运行在某种定义良好的环境中的、物理的、可部署的软 件单元。在文献n 4 中对构件的定义是: 一个独立发布的功能单元它提供7 通过接口对它的骚务的访l 、画, 这个定义强调了构件的很多重要的方面。第一,它定义了一个构件作为一个 可独立交付的单元。这为复用提供了很大的方便。第二,它讲到一个构件提供一 些有用的功能,这些功能被集合到一起来满足一些需求。第三,一个构件通过接 口提供服务。要使用那个构件要求通过那些接口来提出请求,而不是通过访问构 件的内部实现细节。 构件模型是对构件本质特征的抽象描述。目前,国际上已经形成了许多构件 模型,这些模型的目标和作用各不相同。其中,部分模型属于参考模型,例如 3 c 模型;部分模型属于描述模型,例如:r e s o l v e 模型,r e b o o t 模型等;还有 一部分属于实现模型,典型的如:c o r b a ,e j b ,d c 咖,n e t 等,这些实现模型将 构件的接口与实现进行有效的分离,提供了构件交互的能力,从而增加了复用的 机会,并适应了目前i n t e r n e t 环境下多层分布式应用的需要。 1 3 构件组装工具及其研究现状 在基于构件复用的开发方式中,构件组装是一个非常关键而又困难的问题。 构件组装就是利用现有的可复用构件生产新系统的过程。在构件组装中,有两个 关键因素,一个是构架描述,另一个是构件集成机制。构架描述主要通过前面介 绍的构架描述语言来完成,构件的集成机制主要通过前面介绍的构件模型来实 现。这些模型对构件接口和构件间的通信协议进行了标准化,从而为构件集成提 供了可能。 为了使构件组装技术付诸实用,应该对构件组装提供一定的工具支持。但是 目前这方面的研究大都还处于探索阶段没有能够达到商业应用水平的产品出 现。下面是目前国内外在这方面的一些主要研究成果: ( i ) a r c h s t u d i o :这是u n i v e r s i t yo f c a l i f o m i a , l r v i n e 开发的一个基于构架的软 第1 0 页 坫十j a v a 的构件纽城i j i 的圳, 件开发环境。a r c h s t u d i o 支持c 2 构架j x l 格的构件组装,它采用x a d l 作 为构架描述语言。但是a r e h s t u d i o 并不支持图形化的构件组装。 ( 2 ) a r g o :这是u n i v e r s i t yo f c a l i f o m i a , l r v i n e 开发的一个可视化的构件组装环 境,支持c 2 构架风格。a r g o 的特点是对构架演化提供了比较好的支持, 能够在用户设计构架的过程中提供一些反馈以帮助用户做出决策。a r g o 是用j a v a 实现的,在图形编辑方面做得比较出色。类似的工具还有 d r a d e l 和a r a b i c a 等。 ( 3 ) w r e n :这是u n i v e r s i t yo f c a l i f o r n i a ,i r v i n e 开发的一个基于构件的开发环 境,它集成了a r g o u m l 和w e bg a i nv i s u a lc a f 6 ,而且实现了构件库客 户端。在这个环境中,可以实现构件检索、构件选择、构件配置、构件部 署、构件演化等功能。 ( 4 ) s o f a :这是c h a r l e su n i v e r s i t y 开发的一个支持分布式应用程序开发的环 境。它是用s o f a 构件定义语言( s o f a c d l ) 来描述应用程序的构架。 s o f a 构件使用c + + 来实现,定义了s o f a c d l 到c + + 的映射。在s o f a 中,连接器使用c o r b a 来实现。 ( 5 ) c o b a l t :这是e t r i c o m p u t e r & s o f t w a r el a b o r a t o r y 开发的一个支持使用 c 2 构架风格来组合f a b 构件的c a s e 工具。为了组合e j b 构件,c o b a l t 生成了一种对e j b 的包装,从而可以用c 2 风格把它们组合起来。 ( 6 ) a c m e s t u d i o :这是c a r n e g i e m e l l o n u n i v e r s i t y 开发的对a c m e a d l 进行 可视化编辑的工具,但是它并不支持构件的组装。类似的工具有u n i c o n , a e s o p 等支持环境。 ( 7 ) 青鸟构件组装工具( j b a s s e m b l e r ) :它是由北京大学开发的,是青鸟软件生 产线系统的核心工具。j b a s s e m b l e r 提供基于构件规约的系统集成组装 支持,是构件构架高层次上的系统建模与分析工具。使用满足青鸟构件 模型与构件制作指南的构件,用户可以通过可视化的界面,在构件构架 层次上构造复合构件,并进而组装应用系统。1 b a s s e m b l e r 在复合构件 中可以自动进行相关组成构件的连接与合并,生成实际的系统。 ( 8 ) a b c :这是北京大学提出的一种基于构架、面向构件的软件开发方法,这 种方法主要是将软件构架引入到软件开发的各个阶段,作为系统开发的蓝 图,利用工具支持的自动转换机制缩小从高层设计到实现的距离,然后在 构件平台的运行支持下实现自动的系统组装生成。 以上这些工具中,可以分为以下几类: ( 1 ) 以研究为目的的原型系统:包括a r c h s t u d i o 、a r g o 、s o f a 、a b c ,它们 的功能比较单一。仅实现了构件组装的一些简单实例,并不能用于实际系 第1 i 页 基十j a v a 的构件组般丁且的研究 统的组装。 ( 2 ) 有构件库支持的比较完整的组装工具:包括w r e n 和j b a s s e m b l e r ,它们 都可以和构件进行连接,能够完成比较完整的构件组装过程。在构件库的 支持下,它们可以实现构件检索、构件获取、构件配置、系统生成等系 列功能。 ( 3 ) 构件组合工具;包括c o b a l t ,这类工具仅能完成对构件的组合,产生 复合构件,并不能完成应用系统的组装生成。 ( 4 ) a d l 支持环境:包括a c m e s t u d i o 等,这些工具可以完成针对某种特定 a d l 的编辑功能,并不能完成构件组装。 目前各种组装工具大都只实现了原型系统,并不能付诸实用。它们组装的对 象基本上都是c s 应用,不能适用于b s 应用的组装。而且只有少数组装工具实 现了与构件库的连接。如果组装工具不能与构件库连接,那么就很难方便的获取 构件,增加了复用的难度。 1 3 基于j 2 e e 的b s 应用体系结构 1 3 1j 2 e e 体系结构 为了帮助进行n 层应用程序开发,s u n 公司设计了基于j a v a 平台的新型企业 级应用体系结构,这种新的体系结构称为j 2 e e ( j a v a2p l a t f o r n l ,e n t e r p r i s e e d i t i o n ) 。j 2 e e 采用基本j a v a 概念,提供独立予实现方法的高层a p i ,只要各种 实现方法符合这个规范即可。这样,在企业环境中,j 2 e e 规范定义了新型分布 式应用程序体系结构,解决了n 层应用程序开发中的许多问题。 j 2 e e 主要是由一些a p i 组成的,它可以被用来创建大规模的、分布式的、 基于构件的、多层的应用程序。这些a p i 包括:r m i i i o p 、j n d i 、j d b c 、j a v a m a i l 与j a f 、j m s 。但是。j 2 e e 并不是a p i 的筒单组合。j 2 e e 和组成它的a p i 的规 范一起构成了创建和部署企业应用程序的标准。 j 2 e e 通过指定应用程序的接口,以及部署应用程序的运行环境,提供了应 用程序与运行基础设施的明确分界线,使运行环境可以抽象出企业开发人员过去 需要自己建立的大多数萋础设施服务。这样,j 2 e e 应用程序开发人员可以集中 精力考虑应用程序逻辑和相关服务,而把所有与基础设施相关的服务交由运行环 境实现不仅如此,j 2 e e 也没有规定如何建立j 2 e e 运行环境,而是提供了运行 环境基础设施的抽象,这是通过容器( c o n t a i n e r ) 实现的。容器不是实际物理结 构,而是容器体系结构的理论表示。j 2 e e 规范定义了四种容器: ( 1 ) 小程序容器,运行小程序( a p p l e t ) ( 2 ) 应用程序客户容器,运行标准j a v a 应用程序客户 ( 3 ) w e b 容器,放置j a v a 小服务( s e r v l e t ) 和j s p 页面 第1 2 页 牲十j a v a 的构件堂儿城1h 的州究 ( 4 ) e j b 容器,放置e n t e r p r i s e j a v a b e a n s 构件 在图1 2 中,每个容器底部的竖块表示j 2 e e a p i 。除了访问这些基础设旌层 a p i 之外,每个容器还能响应容器特定的a p i ( 例如,由w e b 容器实现j a v a s e r v l e t a p i ,e j b 容器实现e j ba p i ) 。 围 :省w n c 。m r : 、 _ o 一口臼 1 - ; 。州i灌 l 。i 1 1;削i。雏 。f 一 憎 i l e 二i l 嘴l k _ _ ;i ;| 图1 2j 2 e e 体系结构 图1 2 中所示的小程序、应用程序客户、j a v a 小服务、j s p 页面和e j b 是要 开发和放在这些容器中的程序在j 2 e e 中,这些程序被称为应用程序构件 ( a p p l i c a t i o nc o m p o n e n t s ) 。 对任何应用程序,最重要的因素是利用构件构造所需的业务逻辑模型。容器 只是应用程序构件的运行环境,因此尽管容器提供了许多服务和大部分通信基础 设施,但最终还是要由开发人员负责生成应用程序构件。但是,这些应用程序构 件的许多服务依赖于容器,如寿命管理、线程、安全,等等。这样,开发人员可 以集中提供所需的业务功能。而不需要涉及容器的细节和底层实现。 j 2 e e 平台提供了三种开发j a v a 应用程序的技术: ( 1 ) d , r a 务( s e r v l e t ) s e r v l e t 是服务器端程序,可以在h t t p 请求响应过程 中嵌入应用程序逻辑。s e r v l e t 可以扩展w e b 服务器功能,在h t m l 、x m l 或其它w e b 语言中支持动态内容。 ( 2 ) j a v a s e r v e r p a g e s ( j s p ) j s p 适合创建动态w e b 页面。j s p 可以包含h t m l 、 j a v a 代码和j a v a b e a n s 构件实际上,j s p 是s e r v l e t 编程模型的扩展,用 户请求j s p 页面时,w e b 服务器将其编译为s e r v l e t 。然后w e b 服务器调 用这个s e r v l e t ,并将得到的结果返回w e b 浏览器。从j s p 页面编译为s e r v l e t 之后,w e b 服务器只要返回s e r v l e t ,而不必每次重新编译。这样,j s p 提 第1 3 页 基十j a v a 的构件组工驶工具的州究 供了强大的动态页面汇编机制。可以利用j a v a 平台的许多优势。 ( 3 ) e n t e r p r i s ej a v a b e a n s ( e j b ) e j b 体系结构是个分布式构件模型,可以开 发安全的、可伸缩的、事务性的多用户构件。简单地说,e j b 是包含业务 逻辑的可复用软件单元。e j b 被用来封装所有类型的数据库管理系统的接 口而且它们还封装了业务逻辑,以便这些逻辑可以在企业的多个不同应 用程序中得到复用。这样一来,e j b 就可以帮助s e r v l e t j s p 开发者创建灵 活的、可复用的解决方案。这种方案还可以与多个数据源交互,并可以利 用现有的业务逻辑。就像j s p 可以将应用程序与业务逻辑分开一样,e j b 可以将应用程序逻辑与系统层服务分开,使开发人员集中考虑业务问题, 而不必考虑系统编程。 j 2 e e 技术提供了很高的可扩展性和容易维护的软件基础设施,这非常适合 企业级应用。s e r v l e t 和j s p 结合在一起形成了j 2 e ew e b 应用程序的表示层,而 其它技术( 例如e j b ) 则构成了逻辑和数据层。 1 3 2b s 应用程序的结构 基于j a v a 的w e b 应用开发技术之所以受到广泛的欢迎,其中的一个重要原 因就是它通过将动态内容与静态模板显示数据分开来简化应用程序设计。这其中 的一个主要技术就是j s p j s p 最初是被用来开发s u n 公司的j a v aw e b 服务器, 它的重点是将j a v a 代码嵌入到h t m l 中。随着应用程序越来越复杂以及n 层结 构的出现,现在的重点是将j a v a 代码从h t m l 中分离,以便维护该技术的整体 性和灵活性。 使用j s p 的另一个优点是,有利于区分w e b 生成,h t m l 设计者与软件开发 者。在基于w e b 的工程中,存在多种角色和职责。例如,设计h t m l 页面的人 担当实现w e b 生产的角色,而利用j a v a 编程语言来编写软件的人则是软件开发 的角色。在小型工程中,这些角色可以由一个人或两个人来担当。而对于大型工 程,必须由多个人来担当,他们具有不同的技能。此外,如果某个人的开发需要 依赖另一个人的工作,则效率会很低下。因此,我们应该尽量减少在j s p 页面中 包含j a v a 代码,以便支持开发者角色的划分。一些j a v a 代码可以被适当地分解 为s e r v l e t 。 此外,我们还想从j s p 页面中删除业务逻辑和数据访问代码,并将它们封装 到j a v a b e a n s 中,称之为w o r k e r 或h e l p e rb e a n 。这种代码从j g p 中移动到两个地 方:一个是位于主j s p 之前的s e r v i a ( 或j s p ) ,另一个是位于后面的j a v a b e a n s 。 我们将这种常用的模型称之为“向前分解和向后分解”。 使用j s p 技术开发b s 应用有两种基本方法。 ( 1 ) 第一种方法是页面中心( 或客户,服务器) 方法。这种方法包含直接到 第1 4 页 基于j a v a 的构件组裴- t 具的研究 j s p 页面的请求调用。 ( 2 )第二种方法是调度器( 或n 层) 方法。基本的s e r v i e t 或j s f 充当协调 者或控制器,将请求授予j s p 页面和j a v a b e a n s 。 在两种方法分别被称为m o d e ll 和m o d e l2 。它们的主要区别是对于请求处 理的位簧不同。 r e q u t e s t r l脚 4 爹 r e s p o n s e 1 占。 q i d a t a l 吲 图1 3m o d e li 如图1 3 所示,在m 0 d e ll 中。j s p 单独负责处理收到的请求并给客户端发 送响应在这种结构中,具有对于表示和内容的分离,因为所有的数据处理都是 使用b e a n 来完成的。虽然对于简单的小型应用,m o d e l1 是一种很好的实现方 法,但是它并不适用于复杂的大型应用。对这种方法不加选择的使用通常会导致 在j s p 中嵌入大量的j a v a 代码,在有大量请求需要处理的情况下更是如此。但 在大型项目中,页面设计者和j a v a 程序员是由不同的人来承担的。这些嵌入在 j s p 页面中的j a v a 代码对于j a v a 程序员来说可能没有什么,但如果这些j s p 页 面是由页面设计者创建和维护的话,郏么一旦需要对这些页面进行修改,那么必 然会出现问题。这会导致在角色定义和责任分配上出现模糊,引起项目管理上的 麻烦。 m o d e l2 是另一种b ,s 应用的结构,它遵循了著名的m v c 模式,混合使用 了j s p 和s e r v l e t 。它利用了j s p 和s e r v l e t 这两种技术的优点,使用j s p 来生成 表示层,使用s e r v l e t 来进行请求处理。如图1 4 所示,在m o d e l2 中s e r v l e t 作 为控制器,负责处理请求并创建j s p 所需的b e a n 或对象,根据用户的动作来决 定把请求发送到哪一个j s p 页面在这种方法中,j s p 页面中不包含任何处理逻 辑,它仅仅负责检索由s e r v l e t 创建的b e a n 或对象。并从中提取s e r v j e t 生成的 动态内容来插入到静态模版中这种方法实现了表示和内容的清晰的分离,并清 晰地描绘了一个开发团队中程序员和页面设计者的角色和责任。项目越复杂,就 越能体现m o d e l2 的好处。 第l s 页 基于j a v a 的构件组装= 】:= 具的研究 l( c o n t r o l l e r ) r e q u e s ts e r v l e t 蓁 3t | n i 二 、( m o i e l ) 1r 、i rk j 6l ( v i e 。)l。,飞= 一 r e s p o n s e l j s p 1 1 7 门s 7 o l d _ t a i i b a s e i d 二:l 图1 4 m o d e l 2 1 4 在b s 应用中需要采用基于构件的开发方法 虽然现在出现了很多关于j a v a 的构件模型,促进了b ,s 应用开发中的软件 复用的发展,但是目前对于这些构件的复用方式仍然没有实现自动化,主要是靠 企业内部积累构件,在复用时需要人工编写代码,以把构件纳入到系统中来。这 就限制了构件技术的优势的发挥。如果能够把j a v a 构件模型与软件构架技术结 合起来,就能更充分地发挥构件模型的优势。把基于j a v a 的b s 应用的“州t eo n c e , r u f fa n y w h e r e ”和构件组装的“p l u ga n dp l a y ”的特点完美的结合起来,必然会形 成一种强大的开发模式。把软件构架应用于b s 应用的开发有以下主要优点: ( 1 )软件构絮具有较高的抽象层次。 ( 2 )软件构架可以缩小系统需求( 问题空间) 到软件设计( 解空间) 之间的 鸿沟 ( 3 )软件构架可以更好地支持构件复用。 ( 4 )软件构架可以实现产品族。 ( 5 )支持从遗产系统的演化。 ( 6 )允许在运行之前和运行时熏新配置软件。 1 5 存在的闯慝 目前,还没有能够实现以上目标的比较好的解决办法在把软件构架应用于 基于j a v a 的b s 应用时碰到的主要的问题有以下几点; ( 1 ) 传统的软件构架方面的研究不能适应b $ 应用的特点。对于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版范文大全员工宿舍租赁合同变更及通知协议
- 二零二五年度呼和浩特市住宅小区房屋租赁合同范本
- 2025年度电工电气设备研发与制造合同
- 2025年度五星级酒店客房全面服务外包合作协议
- 二零二五年度城市地下综合管廊工程承包协议范本
- 二零二五版现代农业设施采购与安装服务合同
- 2025版城市家庭农场家禽定制采购禽类供应合同
- 2025版企业年会保密承诺协议
- 二零二五年度工程担保与担保合同
- 心理健康记录课件模板
- 近五年辽宁中考英语真题及答案2024
- 锅炉基础传热学热力学知识
- 工会专业知识试题及答案
- 钢板库存出入管理制度
- 招标代理服务及实施方案
- 风险识别防控措施管理制度
- 滑冰场冰面维护设备安全操作规范
- 实验16 一氧化碳还原氧化铁实验-中考化学实验精讲精练(解析版)
- 自动化电气知识培训课件
- 柴油运输协议书年
- 《GoldWave基础教程》课件
评论
0/150
提交评论