




已阅读5页,还剩63页未读, 继续免费阅读
(计算机软件与理论专业论文)基于ccm的消息中间件的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨l :稃人学颤十论交 摘要 随着两络狻术鞠软件开发技术的羧袋,以面商构件技术为主簧蒋征酶分 东式计算技术乐在戏为磷究懿焦点。 c o b r a 构件模型( c c m ) 的个戢重要的负献是标准化了采用c o r b a 为中间 件的基础系统框架的构件丌发标准。本文比较全耐的介绍了c c m ,对c c m 舰 范中定义的抽象模囊、构件实现框架模型、乔器编程模型以及构件配置和打 包禳型送行了深入分袄,并一l 盖双集成。陡、霹蠲性、可扩展性三个大方嚣慰 c o m d c o m ,e j b 积c c m 三弛掬 牛技术进行比较。网时,本文对基二j 二构件的软 件丌发方法进行了简要阐述,通过组合米复辟j 构件库中的“个或多个软件构 件,高效率、高质鬣的构造应用软件系统是软件产业化的必然趋势。在此基 磕上,本文提出了一种綦手c c m 耥件技术的消崽中闻件,通过对基于。i m s i 1 故开源中闽 串j o r a m 酶基于c c m 技术的封装,竞整的阑述了渡泌息中越件熬 体系结构框架、丌发模型以及设计思路,劳射其中的一些技术性问题进行了 讨论。奉文在经过对目前实王见c c m 的荦j :十个平台的比较后,选择了实现c c m 较好的o p e n c c m 平台来实现木文掇尚的消息中间件,在o p e n c c k l 平台上通过 使蹋i d l 3 、c i d l 这样静摇述性语爵定义构件静棱望,存囊减框繁 弋璐螽拥入 必要敬业务代码,嚣镀用撼规范定义灼瓤署南式部鹫消息中矧 ,丰,这样就 完成了使幸 c c m 技术开发消息巾删什的整个过程。 关键饲:软件复用;软件构件技术:c o r b a ;c c m ;淆惑中闷件 喻尔演i :程人学硕 j 论文 a b s t r a c t w i t ht h ed e v e l o p e m e n to ft h en e t w o r ka n dt h es o f t w a r ed e v e l o p m e n t t e c h n i q u e d i s t r i b u t i n gc o m p u t i n gw i t i lt h em a i nc h a r a c t e ro fo r i e n t e dc o m p o n e n t i st h es t u d y i n gf o c u s t h em o s ti m p o r t a n tc o n t r i b u t i o no fc c m ( c o r b ac o m p o n e n tm o d e l ) i s t h a ti ts t a n d a r d i z e sc o m p o n e n td e v e l o p m e n ts t a r d a r dw h i c ha d o p t sc o r b a m i d d l e w a r ea sf o u n d a t i o n a ls y s t e mf r a m e w o r k t h ep a p e rd e t a i l e d l yi n t r o d u c e d t h ec c ma n da n a l y z e dt h ef o u rm o d e lt h a ti sd e f i n e db yc c ms p e c i f i c a t i o n , a b s t r a c tm o d e l ,c o m p o n e n ti m p l e m e n t a t i o nf r a m e w o r k ,c o n t a i n e rp r o g r a m m i n g m o d e la n dp a c k a g i n ga n dd e p l o y m e n tm o d e l t h e n ,t h ep a p e rc o m p a r e st h et h r e e c o m p o n e n tt e c h n o l o g y , c o m d c o m ,e j ba n d c c mf r o mt h r e e a s p e c t s m e a n w h i l e ,t h ep a p e rb r i e f l y i n t r o d u c e d t h e c o m p o n e n t b a s e d s o f t w a r e d e v e l o p m e n tt e c h n o l o g y f i n a l l y , t h ep a p e rp u tf o r w a r dt h ea r c h i t e c t u r eo fa m e s s a g e o r i e n t e dm i d d l e w a r eb a s e do nt h ec c mc o m p o n e n tt e c h n o l o g ya n d d i s c u s s e dt h ed e v e l o p i n gm o d e la n dm e t h o d t h em o mi sm a d et h r o u g h e n c a p s u l i n gaf r e ec o d em i d d l e w a r et h a tb a s e do nj m s l 1b yu s i n gc c m t e c h n o l o g y t h ep a p e rc h o o s e d ac c mp l a t f o r mn a m e do p e n c c mt h a t i m p l e m e n t s t h ec c mb e t t e ra n df i n i s h e dt h ew h o l ep r o c e s so fm a k i n ga c o m p o n e n tb a s e do nc c m ,w h i c hi sm o m k e y w o r d s :s o f t w a r er e u s e ;s o f t w a r ec o m p o n e n tt e c h n o l o g y ;c o r b a ;c c m ; m e s s a g e o r i e n t e dm i d d t e w a r e 哈尔滨工程大学 学位论文原创性声明 本人郑重声明:本论文的所有工作,是在导师的 指导下,由作者本人独立完成的。有关观点、方法、 数据和文献的引用已在文中指出,并与参考文献相对 应。除文中已注明引用麴内容井,本论文不包含任何 其他个人或集体已经公开发表的作品成果。对本文的 磊开究傲磁重要贡献的个入和集体,均已在文中以明确 方式标明。本人完全意识到本声明的法律结果由本人 承担。 作者( 签字) :翌丝 日期:矽玎年1 月笛日 哈尔滨工程大学硕士论文 第1 章绪论 1 1 概述 自从1 9 6 8 年n a t o 会议首次提出“软件危机”以来,软件工程已经取得 了很大进展,然而软件危机并没有消失。随着计算机应用领域的迅速扩大和 软件规模及复杂性的不断提高,软件危机愈加明显地暴露出来,提高软件生 产率成为软件产业的当务之急m 。要解决这个问题,软件复用无疑是一个有效 的方法一,。 软件复用是指在新软件的开发过程中,利用已有的、可复用的软件成分 来构造和生成新的软件系统。软件复用是在软件开发中避免重复劳动的解决 方案,其出发点是应用系统的开发不再采用一切“从零开始”的模式,而是 以己有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如 需求分析结果、设计方案、源代码、测试计划及测试案例等,从而将开发的 重点集中于应用的特有构成成分。通过软件复用,在应用系统开发中可以充 分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许 多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开 发成果,避免了重新开发可能引入的错误,从而提高了软件的质量n 一一1 。软件 复用是软件工程的重要领域,被认为是解决软件危机,提高软件生产率“1 。 基于构件的复用是产品复用的主要形式,软件构件技术是当前复用研究 的焦点,被视为实现成功复用的关键因素之一。同时,国内外的众多厂商或 共同制定或单独制定了应用在不同领域、不用平台的构件技术的规范,也为 软件构件的实现提供了技术支持。构件技术必将成为实现软件复用的最有效 和最前沿的技术,在整个软件工业中得到了迅速的发展和应用。 软件技术的不断发展也使得软件复用成为可能。面向对象的程序设计语 言,以更符合客观世界的实体对象的概念,提供了封装性、继承性和多态性, 将软件的可复用性和维护性推进了一大步。分布式对象技术更使得面向对象 技术能够在异构的网络计算环境中得以全面、彻底和方便的实现,从而能够 有效地控制系统开发管理和维护的复杂性。 哈尔滨工程大学硕+ 论文 1 2 软件复用的实现 软件复用有三个基本问题,一是必须有可以复用的对象,二是所复用的 对象必须是有用的,三是复用者需要知道如何去使用被复用的对象“1 。软件复 用包括两个相关过程:可复用构件的丌发和基于可复用构件的应用系统构造 ( 集成和组装) 。解决好这几个方面的问题才能实现真正成功的软件复用。实 现软件复用的关键因素( 技术和非技术因素) 主要包括:软件构件技术 ( s o f t w a r ec o m p o n e n tt e c h n o l o g y ,包括构件的抽取、实现、构件库的管理 等) 、领域工程( d o m a i ne n g i n e e r i n g ) 、软件体系结构( s o f t w a r e a r c h i t e c t u r e ) 、软件再工程( s o f t w a r er e e n g i n e e r i n g ,例如改造l e g a c y 系 统,抽取可复用构件) 、c a s e 工具等以及各种非技术因素u 。,。 软件复用的一种方式是类库,类库的出现使大规模的软件重用得以实现, 并使软件的重用性及可维护性得到大大增强。然而,类库也与函数库一样有 受限于开发语言的缺陷,因为它也是经过特定的开发语言编译而成的。 目前最现实、主流的软件复用方式是复用已有的软件构件( c o m p o n e n t ) 。 软件构件技术是支持软件复用的核心技术,也是近几年来迅速发展并受到高 度重视的一个学科分支。基于软件构件的软件生产是软件产业发展的必经之 路,软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键 因素“1 1 1 ”j 。 1 3 基于构件软件复用的相关研究与实践的成果 1 3 1 枣每俦、构l 拳库、软件鬟用的标准 美国军方与政府资助的项目中,己建立了璐干构件库系统,如c a r d s 、 a s s e t 、d s r s 等。投由d a r p a 发趔,美国军方、s e i 和m i t r e 支持的s t a r s 顼嚣中,考疼了开放体系结梅懿秘符瘁之凌共事舞滚秘无缝纛搡馋麓逶繇, 并于1 9 9 2 年提交了a l o a f ( a s s e tl i b r a r yo p e na r c h i t e c t u r ef r a m e w o r k , 开放体系结构的构件库框架) v e r s i o n l 2 版。这一报告体现了s t a r s 对可复 用构件瘁系统的认识,绘出了一个构俘库框絮黪参考模型。l i 大西洋公约缀 织 一 构件c o m p o t l e n t 乒 长 n l j 刻面的实现被封 装在构件内部 图2 2c c m 构件的刻面与等价接口 c c m 模型中的刻面与构件的关系有如下特点: ( 1 ) 刻面接口的实现被封装在构件内部,是构件的组成部分。构件内部结 构对客户来说是透明的。 ( 2 ) 客户端程序可以通过定位接口( n a v i g a t i o ni n t e r f a c e ) 从任何一个 刻面定位( n a v i g a t e ) 到构件的等价接口( e q u i v a l e n ti n t e r f a c e ) ,也可以从 等价接口定位任何一个刻面。 ( 3 ) 客户端程序可以判断任何两个引用是否属于同一构件实例。 ( 4 ) 刻面的生命周期绑定于它所包含的构件。 构件上的每一个刻而都可支持不同的接口类型,对应着构件完成的不同 功能,因此就可将构件与多个接口联系起来了。刻面的引入,使客户端可以 通过多个不同类型的对象引用访问构件。在不同刻面之间以及刻面和构件之 阳j 可以任意游离。在传统的c o r b a 对象模型中,通过继承来对c o r b a 对象进 行扩展比较困难,主要是由于无法将多个接口和一个实现的实体关联起来。 c c m 引入“刻面一f a c e t s ”的概念解决了这个问题。刻面是c c m 构件提供的外 部可用接口,和构件的其它支持刻面没有必然的继承关系。 3 插座( r e c e p t a c le s ) 9 哈尔滨。,:程大学硕士论文 插座定义的是构件与其它构件或对象之削的依赖关系,描述了构件被实 例化时所依赖的其它构件或对象的接口。如果一个构件要完成某个需要其它 构件( 对象) 才能完成的功能时,那么这个构件就必须先获取它所需用到的构 件( 对象) 的实例的引用。存c c m 规范中,把这种引用和对象之间的连接称为 是对象连接( o b j e c t c o n n e c t i o n ) ,把这种用于获取这些实例引用的端口叫做 插座( r e e e p t a c l e s ) 。插座机制提供了构件与构件、构件与对象间相互协作完 成其功能的一种标准途径。通过这个机制,构件可以连接其它构件( 对象) , 并可同步或异步( a m i ) 地调用它们的功能。而构件的丌发者需要说明构件是否 愿意与其它的构件相连接。这咀说的对象指的是其他的构件或接口。构件开 发者可以通过这个特性描述构件和与之关联的对象间的关系。 此外,插座可以是多重插座,即多个对象可以在同一个插座进行多重绑 定。图2 3 表示出了插座与其它构件或对象的关系。 二胄誓三 厂、 c c m 构件 三p :i ij :詈差 ,插座 ( r e c e p t a c l e ) 七兰 弑t ) o 一 口 厂 卜o 。 1 j 图2 3 插座与构件对象之间的关系 4 ,事件源事件槽( e v e n ts o u r c e s s i n k s ) 除了通过调用操作实现构件问的互操作外,还可以通过监视( m o n i t o t ) 其它构件的状态的变化来实现构件间的互操作。事件源事件槽就是通过监视 异步的事件发生来进行交互的机制。这种基于观测模式的松耦合连接常用于 分布式应用系统中。一个构件在它的定义中通过定义事件源和事件槽来发布 ( p u b l i s h ) 订阅( s u b s c r i b e ) 构件感兴趣的事件。事件源事件槽是构件行为 相互触发的一种机制。当一个构件的某一状态发生变化时,可能触发另一构 件的某个动作。状态发生变化的构件称为事件源,被触发的构件称为事件槽。 在c c m 中定义的事件机制只有推模式( p u s hm o d e l ) 。构件源持有事件消费者 的对象引用,通过调用事件消费者中的各种推的操作,将事件主动地推给所 1 n 有的事件消费者。如图2 4 显示了c c m 中的事件发送过程: 图2 4c c m 中事件发送过程 在c c m 规范中,有两种类型的事件源e m i t t e r 和p u b l i s h e r 。两者都 需要通过容器所提供的事件通道来发送事件,一个e m it t e r 只可以连接一个 由容器提供的代理;而个p u b li s b e r 可通过事件通道连接任意数量的事件 消费者。 p u b l s h e r 类型的事件源有如下特点: ( 1 ) 允许多个事件的订阅者( s u b s c r i b e r ) 消费者( c o n s u m e r ) 同时连接到 一个p u b l i s h e r 类型的事件源。 ( 2 ) 事件订阅者通过由容器在运行时提供事件通道连接一个p u b l i s h e r 类型的事件源,且构件只允许一个p u b i s h e r 使用这个事件通道。 e m i t t e r 类型的事件源的特点是: ( 3 ) e m i t t e r 事件源同一时刻只允许一个事件消费者进行连接。 ( 4 ) 允许多个e m i t t e r 事件在同一个事件通道中发生。事件从e m i t t e r 事件源发出后,再由容器将事件作为c o n n e c t 一 操作的参数,推送到 事件消费者。 一般说来,e m i t t e r 事件源主要用于构件的配置而不是为客户端应用准 备的。e m i t t e r 事件源可以在初始化、配置构件时用于联系作为客户程序、 其它构件及系统对象的事件通道的代理的事件消费者。与之相反,p u b lis h e r 事件源则用于提供客户端程序以获取构件所产生的特殊的事件流。 5 属性( a t t r i b u t e s ) 为了构件的配置,c c m 规范扩展了在以前的c o r b a 对象模型中的属性的 1 l 一 哈尔滨l :程人学硕十论文 含义。属性可由配置工具设置以用于预置构件初始值的。通过初始化构件属 性来为构件建立基本的行为特性。构件的配置过程主要是设置构件属性的过 程。在c c m 规范中把构件的配置生命周期( c o n f i g u r a t i o i ll if ec y c 】e ) 分为 配置阶段( c o n f i g u r a t i o np h a s e ) 和一些特殊的操作来配置或修改构件的属 性集。当配置完毕之后,调用c o n f i g u r a t o n c o m p le t e 操作标志配置阶段结 束,构件进入可操作阶段。c c m 定义了专门的配置接uc o n f i g u r a t o r 完成构 件配置,它封装了修改构件属性的一个操作集。 和以前的c o r b a 不同,c c m 规范允许当系统配置完成后,通过访问和修 改属性( a t t r i b u t e s ) 的值来引发异常。构件的开发者可以利用这个特性在试 图去修改己经配置好的构件属性值时日1 发异常。而以前版本的c o r b a 规范则 要求构件开发者必须确定构件的属性是暂态的持久的。 与传统的c o r b a 对象模型相比,这些新的端口机制无疑大大地增强了构 件的可重用性。例如,一个现有的构件可被一个通过从原有的构件上增加接 口而得到扩展,而不影响原来的构件的客户端程序。新的客户端程序可以通 过c c m 规范的定位接口( n a v i g a t i o ni n t e r f a c e ) 来查看构件的所有刻面。此 外,由于c c m 规范允许将数个不相关类型的接口绑定于一个构件实现e ,因 此客户端程序无须明确地知道构件的实现细节既可调用构件的提供的接口。 图2 5 集中说明了构件间相互关联的几种端口机制: 哈尔滨上科人学硕十论文 1 ,c o m p o n e n t ),c o m p o n e n t ) s t a l u : 叫 oo p 电 “c p o p 器嚣 耳广- 3 厂 c o p l 童 w o r k e r i h 善 p r o c e s l i e v e n t 岂 e v e n t s o u r c es i n k (, c )( ) h p q u u u u 3 c 0 n s u m 9 0 a n n e ,乱 ,乱 c o n s u m e r ic h a n n e l y n o t i f i c a t i o n s e r v i c e 图2 5c c m 构件通过端口机制与构件交互 2 2c c m 构件实现框架模型 构件实现框架”“1 ( c o m p o n e n tl m p le m e n t a t i o nf r a m e w o r k ,c i f ) 是c c m 规范中能通过编程语言无关的方式自动完成构件的实现及构件的持久性管理 等过程。构件实现框架采用从接口定义语言( i d l ) 扩展而来的构件实现定义语 言( c o m p o n e n t m p l e m e n t a t i o nd er in ic i o nl a n g u a g e ,c i d l ) 来定义并生成 构件实现框架( s k e l e t o n s ) 、构件宿主及构件的核心行为,如:导航 ( n a v i g a t i o n ) ,构件激活与去活及构件的状态管理等,从而大大简化了服务 器端的开发工作。在开发分句式系统时,服务器端需要做很多的工作,包括 构件的实现、构件在服务器上的配置和管理以及构件的生命周期管理等等, 哈尔滨【。群人学硕士论文 因此蜕c c m 规范主要是r 一个服务器端的脚本。而c c m 中的构件实现框架模型 就是用来解决服务器端构件的实现问题的。构件的实现程序在内容上包括两 部分:功能( f u n c t i o n a l ) 部分和非功能( n o n f u n c t i o n a l ) 部分。用户在开发 构件( 指符合c c m 规范的构件) 时,首先,从相关应用领域抽取业务逻辑并加 入构件的描述,应用构件实现定义语言c i d l 对构件进行描述。然后,用c i d l 编译器根掘c i d l 文件的描述生成构件的框架,构件的开发者通过添加自己的 特定的业务逻辑f 构件行为功能) 来扩展这个构件框架来实现一个完整的构 件:最后,构件实现框架将服务器端服务框架、构件框架和服务器端主程序 联编生成服务器端的应用程序。在此过程中,构件实现框架自动生成了许多 例行性的代码,使构件的开发者不必过多的考虑构件内部的实现细节,可以 专注与构件的应用逻辑功能的实现。图2 6 是c c m 规范中构件实现框架模型 的具体工作流程。 图2 6 通过c l d l 实现构件的过程 从图中我们可以看出,c c m 模型与传统的c o r b a 对象模型相比,客户端 的程序实现方面儿乎没有什么改变,改变的是服务器端的开发模式,因此说 c c m 是一个服务器端的规范。构件实现框架为构件的实现提供了类似后者由 i d l 文件编译所产生服务器端服务框架的方式。 c i d i 编译器生成的构件的实现称为执行体( e x e c u t o r s ) ,它包含很多独 一1 4 一 哈尔潦i 。群人学硕士论文 赢的执行段( s e g m e n t ) ,这些段可以被单独的激活和独立的执行,在概念上有 些类似与编译后生成的类文件。这些执行体被打包成组装文件( a s s e m b l y f i l e ) 并被安装在支持特定平台( n t ,l i f l u x 或u n i x ) 和特定程序设计语言( 如 j a v a c + + ) 的构件服务器上。c t d i 。编译器除了要生成这些执行代码,同时还 要根据c i d l 的描述生成构件的主要功能的描述信息,这些描述信息可能包括 构件的接口、线程策略、事务策略及构件所需的服务等。 2 3 容器编程模型 c c m 构件实现依赖c o r b a 规范中的可移植对象适配器( p o r t a b l e o b j e c t k d a p t e r ,p o a ) 将客户的调用请求分发到相应的服务伺服程序( s e r v a n t ) 中去。然而,与以前版本的c o r b a 规范不同,应用程序的开发者不再负责自 己创建p o a 的层次结构,而是由c c m 构件模型通过构件描述自动地创建并配 置p o a 的层次结构,以获取c c m 规范中定义的公共服务。此外,构件可通过 回调接口( c a ll b a c k ) 感知在特定事件发生。为了以可重用方式支持上述功能, c c m 规范定义了容器,构件服务器通过容器来负责管理包含在其中的构件的 上述功能。构件容器编程模型是c o r b a 构件实现运行时的服务器端环境,是 一个集成的框架,在构件的运行过程中,将事务服务、安全服务、事件服务 和持久性服务加载到构件的行为中去1 。一个容器封装了它所管理的构件并 为其提供了一个构件运行环境。容器的功能特点有: ( 1 ) 一个容器只管理一个山构件实现框架定义( c i f ) 的构件的实例,并且 为它所管理的构件创建一个p o a 。 ( 2 ) 激活与去活构件的实现以优化系统- 丌销( 如:系统内存) 。 ( 3 ) 将客户的调用请求转发给事务服务、安全服务、持久性服务及事件服 务等四个公用的c o r b a 对象服务( c o r b ao b j e c ts e r v i c e s ,c o s ) ,从而避免 客户端自己去定位这些服务。 ( 4 ) 为回调接口提供一个适配层( a d a p t a t i o r ll a y e r s ) ,以使容器及o r b 通过回调接口将构件感兴趣的事件回传给构件。 ( 5 ) 管理p o a 策略并决定如何创建构件的引用。 图2 7 描述了c c m 容器编程模型。 重 羞 图2 7c c m 容器编程模型 c c m 的容器编程模型定义了一套接口a p i ,这些a p i 用于简化基于c c m 构 件应用系统的开发及配置。如上图所示,这套接口a p i 由以下三类接口组成: ( 1 ) 外部接口( e x t e r n a li n t e r f a c e ) 外部接口即客户端视图,客户端程序可直接访问构件的外部接口,如构 件的等价接口、刻面和宿主接口( h o m ei n t e r f a c e ) 等; ( 2 ) 内部接口( i n t e r n a li n t e r f a c e ) 即服务器端视图,是由容器提供给它所管理的构件,构件可通过内部接 口来获取各种o r b 服务: ( 3 ) 回调接口( c a l i b a c ki n t e r f a c e ) 回调接口是由构件实现的,容器编程模型中的容器可以通过回调接口调 用它所管理的构件,来实现构件对外界的事件的感知; 外部接口又包含一种特殊的接口构件宿主( h o m e ) 接口。c c m 规范中 引入了构件宿主的概念用来管理构件的生命周期。构件开发者在声明一个构 件的同时,必须声明其宿主对象,用以管理该类型构件。一个构件可以对应 多个h o m e ,每一个h o m e 可以对构件实施不同的生命周期管理策略。但在构 1 6 哈尔滨- i :群人学硕十论文 件的运行期,仅有一个h o m e 町以对构件进行生命周期的管理。h o m e 接口支 持构件的特殊的操作,它允许客户端获取构件实现的一个应用接口( 刻面、等 价接口) 。从客户端来看,获得这个应用接口的方法有两种设计模式:生产机 制( f a c t o r y ) 和查询机制( t - i n d e r ) 。前者通过创建新的构件实例获得构件引 用,后者通过查询已有的构件获得构件引用。这两种模式的区别在于宿丰 h o m e 的管理是否支持主键模式( p r i m a r yk e y ) 。 一个存在p r i m a r yk e y 的h o m e 声明,支持f i n d e r 操作。它的客户端称 为有键的( k e y f u l1 ) 。 一个存在p r i m a r yk e y 的h o m e 声明,不支持f i n d e r 操作。它的客户端 称为无键的( k e y l e s s ) 。 所有h o m e 接口均支持f a c t o r y 的操作,包括构件的创建和删除。 容器为了满足不同类型构件的需要被分为两种类型:会话容器( s e s s i o n c o n t a i n e r ) 和实体容器( e n tit yc o n t a i n e r ) 。会话容器管理的是暂态类型的 对象。实体容器管理永久类型对象。 c c m 构件模型定义了容器和p o a ,c o r b a 服务之间的交互方式,决定p o a 创建的是永久对象引用还是暂念对象引用,以及剥象标识和伺服程序之间采 用l :1 还是i :n 的映射。这些规则由c i d l 定义,x m l 扩充,在容器被创建时 用于创建p o a 。规范定义了三种使用模型,他们对c o r b a 服务有同样的支持, 他们的区别在于对p o a 的支持: 无状态( s t a t e l e s s ) ,它使用短暂对象引用,并支持任何对象标识符 ( o b j e c t i d ) 和p o a 伺服程序相联系,每个伺服程序对于p o a 来说都是地位平 等的,p o a 可以根据其他原则例如:负载平衡来选定其中任意的伺服程序, 即l :n 映射方式; 普通( c o n v e n t i o n a ) ,它使用短暂对象引用,并和给定对象标识符 ( o b j e c t i d ) 的p o a 伺服程序相联系,即l :1 映射方式; 持久( d u r a b l e ) ,它使用永久性对象引用,并和给定对象标识符( o b j e c t i d ) 的p o a 伺服程序相联系,即1 :l 映射方式; 构件种类( c o m p o n e n tc a t e g o r i e s ) 被定义为外部a p i 、容器a p i 和c o r b a 使用模型的不同类型的合法组合。表2 1 描述了由于这种组合而产生的四种 构件类型: 17 表2 1 构件类型 c o n t a i n e rc o n t a i n e r p r i m a r yk e yc o m p o n e n t i m p l e m e n t a t i o nt y p e s c a t e g o r i e s t y p e s s t a t e l e s ss e s s i o n n os e r v i c e c o n v e n t i o n a ls e s s i o nn o s e s s i o n d u r a b l e e n t i t y n op r o c e s s d u r a b l e e n t i t y y e s e n t i t v 以上描述了构件容器在容器编程模型中的组成和功能作用。实际上,一 个容器服务器包含若干数量的构件容器。每个容器a p i 有各自的容器类型和 c o r b a 使用模型。每个容器支持一种单独类型的容器a p i 类型,管理一种类 型构件( c o m p o n e n tc a t e g o r y ) 的多个实例在容器中的分布。每个容器包含自 己创建的p o a ,负责创建构件引用和管理构件的伺服程序。 规范定义的容器模型集中反应在p o a 的各种策略、容器a p i 类型以及和 c o r b a 服务绑定上。对应于构件的四种类型:服务构件( s e r v i c ec o m p o n e n t ) 、 会话构件( s e s s i o nc o m p o n e n t ) 、过程构件( p r o c e s sc o m p o n e n t ) 和实体构件 ( e n t i t yc o m p o n e n t ) 在构件服务器上也同样存在不同的容器模型,专门管理 对应类型的构件。如图2 8 所示: 图2 8c c m 容器服务器体系结构 哈尔滨l :程大学硕十论文 2 4 构件打包和部署模型 c c m 规范使用、打包技术来管理构件的二进制、多语言版本的可执行代码 和配置信息,并制定了构件包的具体内容和基于x m l 的文档内容的标准。构 件打包( p a c k a g e ) 和配置( d e p l o y m e n t ) 模型在基于构件的分布式应用系统的 丌发及应用中具有重要的作片j 。一个c o r b a 构件包( c o m p o n e n tp a c k a g e ) 维护 着一个或多个构件的实现。构件包可被单独安装在台机器上,也可以与其 它构件组成个构件集。构件集是由一些相互关联的构件包及构件宿主 ( c o m p o n e n th o m e ) 等组成并被打包在一个构件集包巾。这些包含在构件集中 的构件及其宿主可通过构件配置工具分别安装到具体的应用环境中去。构件 打包及部署模型和构件的抽象模型、容器模型相互协作,共同构成完整的分 布式企业服务器体系结构。构件打包的步骤是:首先,按照构件抽象模型的 描述实现构件;然后通过构件模型中的打包模型,把构件信息存储到c o r b a 构件描述文件( c o r b ac o m p o n e n td e s c r i p t o r ,c c d ) 中,它包含了一个构件执 行时所需要的所有信息。若干个互交关联的构件也可通过打包模型生成构件 集包( c o m p o n e n ta s s e m b l yp a c k a g e ) 并生成含有这个构件集信息的构件集描 述文件( c o m p o n e n ta s s e m b l yd e s c r i p t o r ,c a d ) 文件中。构件c a d 文件可以 对多个构件进行定制,连接( 与其它构件) 和分割。c a d 文件描述了组( 可以 是已定制了的) 物理构件集合及其之间的关系描述,包括定义构件实例之问的 关系,配置构件的初始属性及状态,描述与其它构件的连接关系等内容。构 件组装文档既可以直接进行配置,在运行时可被一个构件容器或位于不同主 机的多个构件容器所动态装入和初始化,也可以继续被构造成更复杂的c a d 文件。部署工具解释c a d 文件的含义,通过部署模型把构件部署到己命名的 配置目标上。每个结点上有一个安装对象( i n s t a l lo b j e c t ) ,它负责安装和 激活构件。最后,提供配置安装服务,可以将打包好的构件配置安装到网络 上的特定主机上运行。一旦构件被配置和安装成功,构件实例通过标准的 c o r b a 的o r b 机制被激活运行并提供相应的服务。 构件包中的文件包括构件实现和构件描述文件。一个完整的构件是可配 置的,具有自描述能力的软件包( p a c k a g e ) 。构件包可以在运行时被安装或配 置到应用中去,并立刻可为客户提供服务,也可以在设计时通过开发环境“可 哈尔滨l :程人学硕十论文 视的”进行装配,并生成装配信息。被打包的构件实现和构件描述文件等内 容将以构件存档( a r c h i v e ) 文件的形式进行存储。如图2 9 比较详细的描述了 c g m 构件部署的过程: 5 ;面赢函i = 忑 。+ 。+ j | l i a s s e m b l y ! f a c t o r y 图2 9c c m 构件部署的过程图 ( 1 ) 用户通过部署工具确定哪些构件将被部署在应用系统中,并将构件部 署的位置记录在构件组装文件( a s s e m b lyd e s c r i p t o r ) 中。 ( 2 ) 当构件实现对象己安装在要使用它的平台后,部署工具调用 i n s t a l l a t i o n 对象的i n s t a l l 方法以传递构件实现对象的i d 和地址。如果 构件还没安装到目标平台上,i n s t a l l a t i o n 对象将从本地检索构件文件。 ( 3 ) 部署工具创建一个a s s e m b l y 对象用于负责构件集的创建及去活。每 个a s s e m b l y 对象代表一个己安装的构件集,a s s e m b l y 创建于 a s s e m b l y f a c t o r y 对象,a s s e m b l y f a c t o r y 对象将通对过构件集描述文档告知 a s s e m b l y 对象其所在地址。 ( 4 ) 最后a s s e m b l y 对象将使用构件集描述文档( a s s e m b l yd e s c r i p t o r ) 提供的信息分别创建s e r v e r a cl iv o r ,c o m p o n e n t s e r v e r ,c o n t a i n e r 和 c o m p o n e n t h o m e 对象,并在这些对象的协助下完成构件的配置。 哈尔滨:【科人学硕十论文 2 5c c m 构件技术与其它构件技术的比较 2 5 1s u n 公司的e j b 技术 为了推动基于j a v a 的服务器端应用开发,s u n 于是在1 9 9 9 年底推出了 j a v a 2 技术及相关的j 2 e e 规范, 2 e e 的目标是:提供平台无关的、可移植的、 支持并发访问和安全的、完全基于j a v a 的开发服务器端中间件的标准。 在j 2 e e 中,s u n 给出了完整的基于j a v a 语言开发面向企业分布应用规 范,其中,在分布式互操作协议卜,j 2 e e 同时支持r i 和i i o p ,而在服务器 端分布式应用的构造形式,则包括了j a v as e r v l e t 、i s p ( j a v as e r v e rp a g e ) 、 e j b 等多种形式,以支持不同业务需求,而且j a v a 应用程序具有“w r i t eo l j c e , r u na n y w h e r e ”的特性,使得1 2 e e 技术在发布计算领域得到了快速发展。 1 2 e e 简化了构件可伸缩的、基于构件服务器端应用的复杂度,虽然d n a 2 0 0 0 也一样,但最大的区别是d n a2 0 ( 1 0 是一个产品,j 2 e e 是个规范,不 同的厂家可以实现自己的符合j 2 e e 规范的产品j 2 e e 规范是众多厂家参与 制定的,它不为s u n 所独有,而且其支持跨平台的丌发,目前许多大的分布 计算平台厂商都公开支持与j 2 e e 兼容技术。 e j b 是s u n 推出的基于j a v a 的服务器端构件规范j 2 e e 的一部分,自从 j 2 e e 推出之后,得到了广泛的发展,已经成为应用服务器端的标准技术。s u n 的e j b 技术是在j a v ab e a n 本地构件基础上,发展的面向服务器端分布应用 构件技术。它基于j a v a 语言,提供了基于j a v a 二进制字节代码的重用方式。 e j b 给出了系统的服务器端分布构件规范,这包括了构件、构件容器的接口 规范以及构件打包、构件配置等的标准规范内容。e j b 技术的推出,使得用 j a v a 基于构件方法开发服务器端分布式应用成为可能。从企业应用多层结构 的角度,e j b 是业务逻辑层的中间件技术,与j a v a b e a n s 不同,它提供了事 务处理的能力,自从三层结构提出以后,中间层,也就是业务逻辑层,是处 理事务的核心,从数据存储层分离,取代了存储层的大部分地位。从分布式 计算的角度,e j b 像c o r b a样,提供了分布式技术的基础。提供了对象之 州的通讯手段。从t n t e r n e t 技术应用的角度,e j b 和s e r v l e t ,j s p 一起成 为新一代应用服务器的技术标准,f i b 中的b e a n 可以分为会话b e a n 和实体 b e a n ,前者维护会话,后者处理事务,现在s e r v l e t 负责与客户端通信,访 问e j b ,并把结果通过j s p 产生页面传叫客户端。 j 2 e e 的优点是:服务器市场的主流还是人型机和u n i x 平台,这意味着 以j a v a 丌发构件,能够做到“w r it eo n c e ,r u ba n y w h e r e ”,开发的应用可 以配置到包括w i n d o w s 平台住内的任何服务器端环境中去。 2 5 2m i c r o s o f t 的c o m d c o m 技术 m i c r o s o f td n a2 0 0 0 ( d i s t r i b u t e di n t e r n e t a p p ii c a t i o n s ) 是 m i c r o s o f t 在推出w i n d o w s 2 0 0 0 系列操作系统平台基础上,在扩展了分斫i 计 算模型,以及改造b a c ko f f ic e 系列服务器端分布计算产品后发布的新的分 布计算体系结构和规范。 在服务器端,d n a2 0 0 0 提供了a s p 、c o m 、c l u s t e r 等的应用支持。目i j , d n a 2 0 0 0 在技术结构上有着巨大的优越性。一方面,由于m i c r o s o f t 是操作 系统平台厂商,因此d n a2 0 0 0 技术得到了底层操作系统平台的强大支持;另 一方面,由于m i c r o s o f t 的操作系统平台应用广泛,支持该系统平台的应用 丌发厂商数目众多,因此在实际应用中,d n a2 0 0 0 得到了众多应用开发商的 采用和支持。 d m a2 0 0 0 融合了当今最先进的分向计算理论和思想,如事务处理、可伸 缩性、异步消息队列、集群等内容。d n a 使得开发可以基于m i c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代社交礼仪试题及答案
- 2025年职业技能鉴定考试(考评员)经典试题及答案汇
- 2025年医疗岗面试题库及答案
- 2025年麻醉药科镇痛药使用原则模拟考试答案及解析
- 护理无菌常识题库及答案
- 2025年解剖学组织学细胞学期末考试卷答案及解析
- 2025年外科手术操作规范检验考试答案及解析
- 政务服务技能大赛题库及答案
- 2025年中央遴选试题及答案
- 2025年物流公司安全制度造假整改报告
- 人教PEP版(2024)四年级上册英语-Unit 3 Places we live in 单元整体教学设计(共6课时)
- 贵阳市殡仪服务中心招聘考试真题2024
- 苗圃建设项目可行性研究报告
- 数据挖掘(第2版)PPT全套完整教学课件
- 四年级上册数学单元测试-8.垂线与平行线 苏教版 (含解析)
- 中药的煎煮方法课件
- 流动机械安全专项方案
- 医院患者有自杀倾向时应急预案及处理流程
- 汽车材料(第三版)整套课件汇总完整版电子教案(全)
- 古今滑稽诗话 稽山范范左青编
- 第二章纯金属的结晶
评论
0/150
提交评论