




已阅读5页,还剩63页未读, 继续免费阅读
(计算机应用技术专业论文)corba与dcom桥接模块的分析与设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 中间件通过提供简单、一致、集成的分布式开发环境,简化了分布式应用 的开发和管理。中间件使得应用程序能够跨平台和异构网络运行。其中,主流 的中间件有c o r b a 和d c o m 。c o r b a 具有先进、完整的模型,它独立于具 体的系统平台和开发语言,其规范是绝大多数分布计算平台厂商支持和遵循的 系统规范。d c o m 是运行在w i n d o w s 系统上的中间件,因w i n d o w s 系统的普 及而得到广泛使用。 c o r b a 和d c o m 是两个独立的分布式对象系统,它们的客户端不能够直 接地调用对方系统提供的服务。如何实现c o r b a 与d c o m 之间对象的互操作, 是本文的研究目标。本文采用桥接的方式,实现了c o r b a 与d c o m 的互操作。 首先,本文对实现c o r b a 和d c o m 之间的互操作进行了可行性分析。在 c o r b a 、d c o m 对象模型的基础上,本文对这两者的异同点做了分析比较, 并给出了实现c o r b a 与d c o m 互操作对象模型。 为了实现c o r b a 与d c o m 的互操作,本文给出了实现c o r b a 对象与 d c o m 对象之间相互映射的解决方案。本文详细地给出了实现c o r b a 对象到 c o m 对象、c o m 对象到c o r b a 对象、c o r b a 对象到自动化对象、自动化 对象到c o r b a 对象的具体映射方法。随后,本文给出了d c o m 对象与c o r b a 对象的绑定和生命周期的管理办法。 在互操作结构的基础上,本文对c o r b a 与d c o m 的桥接模块进行了设计 实现。首先,引入了桥的概念,并给出了单向桥和双向桥的结构模型。然后, 本文提出了实现c o r b a 与d c o m 互操作的所有可行的桥接模型。在对所有这 些桥接模型进行了分析之后,本文提出了一种改进型的支持双向通信的桥接结 构。随后,给出了桥接结构中使用的双向桥的结构模型,并对该双向桥的工作 模式进行了分析。最后,本文给出了桥的具体设计,并用一个测试实例,证明 了本文提出的桥接设计是可行的。 关键字:c o r b a ,d c o m ,桥,中间件,接口定义语言 a b s t r a c t m i d d l e w a r es i m p l i f i e st h e d e v e l o p m e n ta n dm a n a g e m e n to f d i s t r i b u t e d a p p l i c a t i o nb yp r o v i d i n g a s i m p l e ,c o n s i s t e n ta n di n t e g r a t e dd i s t r i b u t e dd e v e l o p m e n t e n v i r o n m e n t i tm a k e sa p p l i c a t i o n sr u no nd i f f e r e n tp l a t f o r m sa c r o s sh e t e r o g e n e o u s n e t w o r k s t h ep r e v a i l i n gm i d d l e w a r et e c h n o l o g i e sa r ec o r b aa n dd c o m c o r b a , w h i c hh a sa l la d v a n c e da n di n t e g r a t e dm o d e l ,i si n d e p e n d e n to fo p e r a t i n g s y s t e m sa n dp r o g r a m m i n gl a n g u a g e s c o r b a ss t a n d a r d sa r ct h es y s t e ms t a n d a r d s , w h i c ha r es u p p o r t e da n df o l l o w e db ym o s td i s t r i b u t e dc o m p u t i n gp l a t f o r mv e n d e r s d c o mi sam i d d l e w a r e ,w h i c hi sb a s e do nw i n d o wo p e r a t i n gs y s t e m s ,h a sb e e n w i d e l yu s e df o rt h ep o p u l a r i z a t i o no fw i n d o wo p e r a t i n gs y s t e m s c o r b aa n dd c o ma r et w oi n d e p e n d e n td i s t r i b u t e do b j e c ts y s t e m s ;c l i e n t sc a n n o tc a l ls e r v i c e si m p l e m e n t e db yt h eo t h e rs y s t e md i r e c t l y t h eg o a lo ft h i st h e s i si s t oa c h i e v et h ei n t e r o p e r a b i l i t yb e t w e e nc o r b aa n dd c o mo b j e c t s t h i st h e s i s a c h i e v e st h ei n t e r o p e r a b i l i t yo fc o r b aa n dd c o mu s i n gt h eb r i d g i n gm e t h o d f i r s t l y , i tc a r r i e so u ts o m ef e a s i b i l i t ya n a l y s i so na c h i e v i n gt h ei n t e r o p e r a b i l i t y b e t w e e nc o r b aa n dd c o m t h et h e s i sc o m p a r e sa n da n a l y z e st h es i m i l a r i t i e sa n d d i f f e r e n c e sb e t w e e nt h e mo nt h eb a s i so fc o r b aa n dd c o m o b j e c tm o d e l s ,a n d p r o p o s e sa ni n t e r o p e r a b i l i t ym o d e lb e t w e e nc o r b a a n dd c o m f o rt h ep u r p o s eo fi n t e r o p e r a b i l i t yb e t w e e nc o r b aa n dd c o m ,t h et h e s i s i n t r o d u c e sa no b j e c tm a p p i n gs o l u t i o n i ts p e c i f i e sc o n c r e t em e t h o d st om a p p i n g c o r b a o b j e c t st oc o mo b j e c t s ,c o r b ao b j e c t st oa u t o m a t i o no b j e c t sa n dr e v e r s e m a p p i n g s s u b s e q u e n t l y , t h et h e s i sp r e s e n t s m e t h o d so fo b j e c tb a n d i n g , a n d l i f e - c y c l em a n a g e m e n t t h i st h e s i sa c h i e v e st h ed e s i g no ft h eb r i d g i n gm o d u l eb e t w e e nc o r b aa n d d c o mo nt h eb a s i so fi n t e r o p e r a b i l i t ya r c h i t e c t u r e f i r s t l y , t h i st h e s i si n t r o d u c e st h e c o n c e p to fb r i d g e ,a n ds t r u c t u r em o d e l so fo n e - w a ya n dt w o w a yb r i d g e s t h e n ,t h i s t h e s i sp r o p o s e sa l lp o s s i b l eb r i d g i n gm o d e l st oa c h i e v et h ei n t e r o p e r a b i l i t yb e t w e e n c o r b aa n dd c o m a f t e ra n a l y z i n ga l lo ft h o s ep o s s i b l eb r i d g i n gm o d e l s ,t h e t h e s i s p r o p o s e s a l l i m p r o v e db r i d g i n ga r c h i t e c t u r e ,w h i c hs u p p o r t st w o - w a y c o m m u n i c a t i o nb e t w e e nc o r b aa n dd c o m t h e n ,t h et h e s i sp r e s e n t st h es t r u c t u r e o ft h et w o w a yb r i d g eu s e di nt h ep r o p o s e db r i d g i n gm o d e l ,a n da n a l y z e st h e w o r k i n gm o d eo ft h et w o - w a yb r i d g e i nt h ee n d ,t h et h e s i sp r e s e n t st h ed e s i g n i n g p r o c e s so ft h ep r o p o s e db r i d g e ,a n dd e m o n s t r a t e st h ef e a s i b i l i t yo ft h eb r i d g ew i t ha t e s t i n gi n s t a n c e k e y w o r d s :c o r b ad c o m ,b r i d g e ,m i d d l e w a r e ,i n t e r f a c ed e f i n i t i o nl a n g u a g e m 此页若属实,请研究生及导师签名并装订在掌位论文的摘要前。 独创性声明 本人声明,所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成 果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得武汉理工大学或其它教育机构的学位或证书而使 用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说 。 明并表示了谢意。 研究生( 签名) :辑啦日期旦塑丝哆 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即:学校有权保留送 交论文的复印件,允许论文被查阅和借阅:学校可以公布论文的全部内容,可以采用影 印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 研究生( 签名) ;豳叁签 导师( 签名) : 日期2 矿9 护笑哕 武汉理工大学硕士学位论文 1 1 课题背景和意义 第1 章绪论 近十几年来,计算机应用技术得到迅猛的发展。从当初单机版的桌面式应 用,发展到多机的集群式应用;分布式计算技术出现后,计算机应用又朝着跨 平台、异构网络的分布式应用方向发展i 。与传统的计算方式相比,分布式计 算有极大的优势:首先,分布式并行处理可以提高整个系统的性能。其次,复 制技术可以提高系统的可用性。再次,模块化技术和动态分配,使得系统具有 较高的可伸缩性。最后,通过资源共享,使系统具有很高性的价比。由于分布 式技术的巨大优势,分布式计算技术成为当今最为流行的计算机技术1 2 l f 3 l 。 分布式技术的中间件( m i d d l e w a r e ) 是一种可复用软件,它是处于用户的 应用软件与操作系统软件之间的一种独立的服务程序软件。具体地说,中间件 是处于分布式应用软件之下,而位于客户机和服务器的操作系统、网络和数据 库之上。它的主要作用就是管理计算机资源和网络通信,为处于自己上层的应 用软件提供开发与运行环境,帮助开发人员方便、灵活、快捷、高效地开发和 集成复杂的应用软件。分布式应用软件借助这种软件就可以在不同的技术之间 实现资源共享1 4 j 。 目前比较流行的分布式对象技术主要有,m i c r o s o f t 的分布式对象组件 d c o m 和对象管理组织( o m g ) 的公共对象请求代理结构c o r b a ,以及s u n 公司的j a v a 远程方法调用r m i 。它们已广泛地应用与电信、金融等领域。 虽然,中间件是为了屏蔽不同平台、网络之间的差异,为分布式软件开发 及应用提供一个形式上“统一”的平台,使得软件应用开发能够不用考虑系统底 层、网络底层、传输协议等因素,直接使用中间件的a p i 进行开发。但是,中 间件也不是“万能”的。主要的原因有以下几点:第一,中间件应遵循的一些原 则离实际情况还有很大距离。第二,不同的中间件使用的a p i 不同、传输协议 不同。第三,有些中间件只提供了某些平台上的实现,从而限制了应用在异构 系统之间的移植。例如d c o m 和c o r b a ,这两种不同的中间件的a p i 就不相 同;d c o m 使用的协议为o r p c ,而c o r b a 使用的协议为g i o p 与i i o p ;d c o m 武汉理工大学硕士学位论文 仅限于w i n d o w 系列平台。 随着分布式应用的推广,实现不同中间件的协作已经成为一个无法避免的 事实。由于以上问题的存在,建立于单一厂家产品的应用很难与来自不同厂家 的产品实现的应用之间实现互操作,对系统的集成应用开发形成了挑战。如何 实现不同中间件在应用中实现互操作是本课题的出发点,本文主要研究如何实 现d c o m 与c o r b a 之间的互操作。 1 2 国内外研究现状 目前,c o r b a 规范已经成为众多厂商遵循的系统规范,它的标准已经成 为分布式计算的通用标准。并且由c o r b a 开发的分布式应用程序已经成功地 运行与各种操作平台之上。微软推出的d c o m ,也因其桌面式操作系统在用户 使用的操作系统中占有的霸主地位,以及在该系列系统上运行的许多重要产品 作为其强大的后台而得到广泛应用。正是由于c o r b a 与d c o m 广泛的应用前 景,实现c o r b a 与d c o m 之间的互操作,必定会为分布式应用系统的开发与 应用带来极大的便利和发展空间。如何实现c o r b a 与d c o m 之间对象的互操 作,就成了一个必须解决的问题。 c o r b a 与d c o m 互操作的解决方案有多种,目前在国内外比较流行的做 法就是桥接法。在这一领域里,核心的开发技术都掌握在少数国外大的企业手 中。在国外,在这一领域技术比较成熟的公司主要有v i s u a le d g e 、i o n a 、 p e e r l o g i c 等;国内的公司或研究机构相对比较少,主要有国防科技大学、东南 大学、中科院软件所、金蝶a p u s i c 等。 现行的桥接产品可以根据不同的标准划分为不同的类型,比如根据桥接器 工作时请求的传递方向可以把桥划分为单向通信桥和双向通信桥。根据桥获取 信息的方式可以把桥划分为静态桥和动态桥。根据桥对具体的o r b 的依赖,把 桥划分为o r b 依赖的桥和o r b 中立桥。根据桥的设置位置,桥可以是客户端 或服务器端,或者第三端的中间端机器。还可以把桥划分为商业化桥和用户自 定义桥。 o m g 对c o r b a 与d c o m 桥有专门的互易规定,桥的位置也与通信协议 有关,如d c o m 客户对c o r b a 服务器,放在客户端,采用i i o p 协议,c o r b a 客户对d c o m 服务器,也放客户端,但采用o b j e c tr p c 通信,样品产品有: 2 武汉理工大学硕士学位论文 v i s u a le d g e 的o b j e c t b r i d g e 和i o n a 的o r b i x c o m e t ,两者都是双向动态的, i o n a 还开发了一个运行在c o r b a 服务器端的c o m d c o m 适配器,允许 c o m d c o m 客户应用存取服务器。i n p r i s ea p p l i c a t i o ns e r v e r t m ( t a s ) 也提供 了c o m 存取c o r b a 对象和e j b 的能力。 o b j e c t b r i d g e 。o b j e c t b r i d g e 是v i s u a le d g e 公司的c o b r a d c o m 桥接产品, 是双向动态桥,它的o r b 是中立的,并且不完全遵循o m g 制定的i n t e r - w o r k i n g 规范。o b j e c t b r i d g e 是基于j a v a 的分布式架构,开发人员可以在它之上部署他们 的s e r v i c e 组件,它也有两部分组成:s e r v e r 端与c l i e n t 端。它提供的属性都符 合c o r b a 2 4 的标准,但是它对该标准的支持不是很完善;而且桥接时用d c o m 组件做服务器c o r b a 为客户,性能不好。 o r b i x c o m e t 。o r b i x c o m e t 是i o n a 公司推出的一款c o r b a 与d c o m 桥 接产品,跟o b j e c t b r i d g e 一样,也是双向动态桥,但是,它只能在i o n a 的o r b i x 3 平台工作,它完全遵循o m g 对c o r b a 与d c o m 互操作规范。o r b i x c o m e t 支持d c o m 和c o r b a 程序之间的双向集成;完全支持a u t o m a t i o n c o r b a 、 d c o m c o r b a 、c o r b a - a u t o m a t i o n 和c o r b a - d c o m 的映射。通过支持回 调,实现了d c o m a u m m a t i o n 与c o r b a 之间的透明化交互。o r b i x c o m e t 是 通过动态链接库( d l l ) 的形式来提供c o r b a 与d c o m 之间的协作的。 奥贝软总线( o r b u s ) 。奥贝软总线o r b u s l 0 版本是由东南大学计算机 系网络与通信研究室于1 9 9 7 年底自行研制,遵从c o r b a 2 0 规范的面向分布 对象计算的网络应用和开发平台。它很好的支持了多种操作系统平台( s o l a r i s 2 5 1 和w i n d o w sn t 9 5 ) ,并提供方便、灵活、友好的管理界面。更新版本 o r b u s l 1 ,增加了o r b u sc o m c o r b ab r i d g e 。它提供c o m ,c o r b a 之 间互操作具有一下几个特性:第一规范。完全遵循o m g 组织发布的 c o m c o r b a 互操作规范。第二双向互操作。c o m 客户可以访问c o r b a 对 象,c o r b a 客户也可以访问c o m 对象;第三完全透明。开发人员可以独立 开发c o m 、c o r b a 的客户器和服务器,c o m 、c o r b a 之间的转换完全由c o m c o r b a b r i d g e 完成。第四灵活。c o m 开发人员基于o d t m i d l 开发客户器 和服务器,c o r b a 开发人员基于m i d l 开发客户器和服务器,不受编程语言 和操作系统的限制。奥贝软总线( o r b u s ) 系统是集成框架的核心支撑技术之 一 5 1 1 6 o 其他的同类产品在这里就不再作一一介绍。由以上产品我们可以看到,不 3 武汉理工大学硕士学位论文 同公司研发的桥接器产品,都是以本公司的技术研发方向和产品发展战略为导 向的,这些产品在对编程实现语言的支持、操作系统平台的支持和所提供性能 的上有很大的差别。如何实现一个相对独立通用的c o r b a 与d c o m 桥,是本 课题的研究方向。 1 3 本人的主要工作 本文首先对本课题的研究背景做了介绍,并对国内外的研究现进行了调查 分析。然后,对c o r b a 与d c o m 之间的互操作做了可行性分析。在这一部分, 本文分别介绍了c o r b a 对象模型和d c o m 对象模型。在此基础上,对这两种 模型进行了深层次地分析比较,并给出了c o r b a 与d c o m 的互操作对象模型。 随后,本文又给出了实现c o r b a 对象和d c o m 对象的映射方法。对从c o r b a 对象到c o m 和自动化对象的映射,以及反向的映射,给出了具体的映射规则 和映射方法。通过引入桥的概念,本文在结构上提出了实现c o r b a 和d c o m 互操作的通用性桥接模型。在此模型的基础上,本文对c o r b a 与d c o m 的桥 接模型作了改进。然后,本文给出了桥接模型中使用的双向桥的基本结构,并 对桥的工作模式做了分析。最后,给出了桥的具体设计实现。本文提出的桥结 构,是从底层上映射实现的,理论上可以应用到任何c o r b a 和d c o m 互操作 情况。 4 武汉理: 大学硕士学位论文 第2 章c o r b a 与d c o m 桥接可行性分析 c o r b a 与d c o m 作为两种不同的中间件,它们都具有中间件的跨平台、 网络的特性,其客户端都能够实现对远端服务器的透明性调用。但是这些都只 是局限于c o r b a 对象系统或d c o m 对象系统内部。那么,c o r b a 系统与 d c o m 系统的对象模型的结构和运作机制,能不能支持c o r b a 与d c o m 的 互操作,实现c o r b a 系统的客户端调用d c o m 服务器的服务,d c o m 系统 的客户端调用c o r b a 服务器的服务。在本章我们将给出具体的分析。 2 1c o r b a 对象模型 谈到c o r b a ,我们首先要介绍一下o m g ( o b j e c tm a n a g e m e n tg r o u p ) 的 o m a ( o b j e c tm a n a g e m e n ta r c h i t e c t u r e ) 。o m a 实现了为开发面向对象的应用 程序,提供一个基于接口规范的通用框架。o m a 的引用模型有五个部分,它们 分别是对象服务( 即c o r b a 服务) 、域接口、公共设备( 即c o r b a 设备) 、 对象请求代理( o r b ) 和应用程序接口川。 图2 - 1o m a 引用模型【8 l o m a 的引用模型是应用程序可以使用的基础性组件和服务,它是标准化接 口的结构性框架。如今面向对象的编程技术,非常重视在开发应用程序的过程 中,使用一些能够实现特定的功能,并且具有可重用性的组件。o m a 可以使得 开发人员清楚地知道,他们可以从哪些o r b s 或第三方组件,在哪些范围内获 5 武汉理工人学硕士学位论文 得什么样的服务。 c o r b a 自1 9 9 0 年推出后,o m g 不断发布了一系列的更新版本。目前, c o r b a 已经升级到3 0 版。c o r b a 在这一过程中,不断的得到完善,先后引 入了i d l ( i n t e r f a c ed e f i n i t i o nl a n g u a g e ) 、o r b 的公共a p i 、i i o p ( i n t e m e t i n t e r - o r bp r o t o c 0 1 ) 和c c m ( c o r b ac o m p o n e n t ) 。 与o r b 相关的接口 卫标准接口 匝墨圆每个对象类型都有桩和骨架 图2 - 2o r b 接口【9 】 在c o r b a 对象系统中,c o r b a 客户端要发起一个调用请求的时候,须 保证客户端能够获取被调对象的接口引用,并且客户端应该知道该对象和该对 象上将要执行的操作。客户端发起请求的方式有两种:第一,通过动态调用接 口( d i i :d y n a m i ci n v o c a t i o ni n t e r f a c e 。与目标对象接1 3 相同,但独立于目标对 象接口的接口) 。这一方式是在请求发起时动态构建的。第二,通过调用桩( s t u b ) ( 桩:由o m g 的接口定义语言i d l 定义的文件,经过特定的i d l 编译器编译 生成的客户端程序,这种具体的桩依赖于目标对象的接口) 。在这一方式中,客 户端调用桩的某个具体的对象来初始化请求。当然,客户端也可以直接与o r b 交互,通过调用o r b 的某些功能接口实现请求。无论是通过动态调用接口,还 是通过桩接口来实现请求的发起,对同一个请求来说在语义上是一样的,消息 的接收方是分辨不出来请求到底是通过动态调用接口还是桩接口来实现的。 请求的实现方( 即对象实现) 接收一个请求作为上行调用的方式也很灵活。 对象实现既可以通过由o m gi d l 定义文件生成的骨架( s k e l e t o n ) ,又可以通 6 武汉理工大学硕士学位论文 过动态骨架接口( d s hd y n a m i cs k e l e t o ni n t e r f a c e ) 。当然,对象实现还可以通 过对象适配器来接收一个请求作为上行调用。此外,对象实现还可以在处理一 个请求时或在其它情况下调用对象适配器和o r b 。对象实现具体调用哪些对象 适配器,完全取决于对象实现需要的服务类型。o r b 在请求到来时,会根据请 求的内容定位合适的代码,传递请求参数,并通过i d l 骨架或者动态骨架接口 把控制权转交给对象实现。这里的骨架是具体的接口和对象适配器。在处理请 求的过程中,对象实现有可能通过对象适配器调用o r b 提供的某些服务。当请 求完成后,o r b 会把程序的控制权和结果的输出值转交给客户端。 对象接口的定义可以用两种方式实现。第一种方式,用o m gi d l 定义。 通过o m g 的接口定义语言来定义接口文件。我们根据对象要实现的功能、实 现这些功能所需的参数和属性,用o m gi d l 来定义对象的类型,用这种方式 实现的接口定义是一种静态的定义。第二种方式,动态接口。在这种方式下,我 们通过动态地把接口添加到接口库( l r :i n t e r f a c er e p o s i t o r y ) 中,来实现我们需 要的服务。接口库将构成接口的元素表示为对象,并允许这些组成元素可以在运 行时被动态的获取。客户端和对象实现获取接口和实现信息过程如图2 - 3 。 图2 - 3 接口和对象实现库【1 0 l 这里的接口是用o m gi d l 定义的接口或者是接口库中定义的接口,接口 定义用来生成客户端桩和对象实现骨架。对象实现信息是在装配的时候提供的, 并存放于实现库中,在请求递交时使用。在任何o r b 实现当中,接口定义语言 与接口库在接口表示方上,表达能力是等同的。 2 1 1 对象请求代理( o r b ) 在c o r b a 中,o r b 是通过接口来定义的。对于任意的o r b 实现形式, 7 武汉理工大学硕士学位论文 只要o r b 能够提供恰当的接口就是可行的。但总的来说,o r b 实现形式可以 归结为三类: 1 ) 对所有o r b 实现都相同的操作。 2 ) 特定类型对象的特殊操作。 3 ) 特定样式的对象实现的特定操作。 不同的o r b 产品可以选择完全不同的实现方式,加之不同的i d l 编译器、库 和各种各样的对象适配器,这就使得o r b 可以为客户端和对象实现提供一组不 同特性、不同质量的服务。 在c o r b a 中,可以存在多个o r b s ,这些o r b s 拥有不同的对象引用表示 和调用。客户端可以同时获取多个由不同的o r b s 实现管理的对象引用,并由 o r b s 来完成对对象引用的识别工作。 在o r b 中,o r b 核心主要负责基本的对象表示和调用请求的传递。c o r b a 在o r b 核心之上把o r b 与组件进行构建,并提供了对外的应用接口,o r b 就 是利用这些接口来屏蔽不同o r b 核心之间的差异,实现c o r b a 对不同对象机 制的支持。 作为c o r b a 的核心,o r b 在c o r b a 应用中起了重要的作用,o r b 核心 的作用主要有以下几个方面: 1 ) 对象定位。当客户端得到某个对象的对象引用后,在调用该对象上的操作 时,客户端的o r b 会根据对象引用提供的信息来定位对象实现,并且确保 该对象实现可以接收请求。o r b 将根据对象引用来定位所需要的服务器, 因此客户端不用知道对象是在那里实现的。 2 ) 消息的编组与解组。客户端发起一个调用请求时输入的引用参数,其格式 是与特定平台和语言相关的。客户端的o r b 负责把这些数据编码成为可以 在网络上传输的格式在线格式( o n w i r ef o r m a t ) ,这个过程被称作“编 组”( m a r s h a l l i n g ) 。服务器端的o r b 接收到经过网络传来的在线格式数据 后,服务器端o r b 就会将这些数据还原为本地平台和语言的格式,这一过 程被称作“解组”( u n m a r s h a l l i n g ) 。当服务器处理完请求的操作后,服务器 端的o r b 则把将要输出的参数和返回参数编码成在线格式,经过网络传送 到客户端o r b ,客户端o r b 再将这些在线格式“解组”成本地平台语言格式, 作为结果的输出参数和返回参数。 3 ) 启动初始服务。应用在程序启动的时候,需要得到一些通用的对象引用, 8 武汉理工大学硕士学位论文 如对象适配器、命名服务接口库的对象引用等。由于程序处于启动的特殊 阶段,这些对象引用很难用常规的方法得到。o r b 可以通过“伪对象”接口 c o r b a :o r b 提供的两个操作来完成这项功能:l i s ti n i t i a l 和services0 r e s o l v e _ _ i n i t i a l _ r e f e r e n c e s 0 。 4 ) 屏蔽底层网络协议。o r b 负责处理底层网络通信的细节,它可以使用不同 的底层网络协议( 如t c p i p 等) ,从而把对客户端和服务器的开发从繁杂 的网络变成中脱离出来,简化应用程序的开发。 5 ) 提供接口库和其他的a p i 。接口库存储的是用o m gi d l 定义的接口信息, 它还支持一些标准的a p i ,用来查询或者遍历系统中的接口信息,每个o r b 都有一个接口库,是c o r b a 动态调用( d i i ) 的组成部分。 另外,o r b 还通过“伪对象”接口c o r b a :o r b 提供其它的通用a p i ,可以 供客户端和服务器程序调用。 综上所述,o r b 核心的作用归纳如下( 图2 - 4 ) : 第 第 第 图2 - 4o r b 核心作用示意刚1 1 i 9 武汉理工大学硕士学位论文 第一步,客户端激活一个调用操作时,操作中指定的目标对象的对象引用 经客户端“桩”传递到o r b 核心,o r b 核心代替客户端自动寻找对应的服务器, 即目标对象的对象实现。找到服务器后,o r b 为服务器做好调用请求的接收准 备。 第二步,客户端o r b 接收被调用方法的参数,然后将其编组为网络可识别 的数据格式,然后由网络发送到服务器端o r b 。服务器端o r b 将网络传来的 参数进行解组,然后递交给服务器,并启动服务器执行相关方法。 第三步,调用方法执行完成,如有返回参数,服务器端o r b 将其编组,经由网 络发送到客户端o r b ,客户端o r b 对接收到的返回数据进行解组,并将操作 结果返回给客户端。 2 1 2 对象适配器( o a :o b j e c ta d a p t o r ) 对象适配器处于o r b 核心、骨架和d s i 之间,提供了服务器对象与o r b 核心之间的适配器层。对象适配器提供两种形式的接口:面向对象实现的公共 接口和面向骨架的私有接口。 对象适配器是建立在私有o r b 接口依赖基础之上的,定义了对象实现依赖 的来自o r b 的大多数服务。不同的操作系统环境可以为对象适配器提供某些隐 式和必须的属性,使得不同的o r b 可以提供不同级别的服务。例如,对象实现 在对象引用中存储某些值,以便于在对象调用时用来识别对象。如果对象适配 器允许对象实现在创建一个新的对象的时候指定这些值,对象适配器就可以在 对象引用中为o r b 存储这些值。如果o r b 核心不提供这一特性,对象适配器 则不得不把这些值存储在它自己的存储库,在被调用的时候传给实现部分。有 了对象适配器,对象实现可以获取一个服务,而不必管这个服务是不是在o r b 核心里实现的;如果该服务是o r b 核心提供的,那么适配器只需简单的提供一 个到它的接口即可;如果不是,那么适配器就必须在o r b 核心之上实现它。 在c o r b a 当中,开发人员应根据对象实现要求( 生命周期、策略等) ,来 创建所需的对象适配器。不过,对象适配器接口是对象实现所依赖的,因此对 象适配器并不是越多越好。多数的对象适配器被设计为可以覆盖一定范围的对 象实现,因此,只有当对象实现请求调用完全不同的服务或接口的时候,才会 创建一个新的适配器。 1 0 武汉理工大学硕士学位论文 在c o r b a 2 0 规范中,引入了基本对象适配器( b o a :b a s i c0 b i e c t a d a p t o r ) 。但是在实践当中,b o a 暴露出了一些局限性,例如可移植性、对象 标志符的永久性、对象实现粒度等;因此c o r b a 规范又引入可移植对象适配 器( p o a :p o n a b l eo b j e c ta d a p t o r ) 。c o r b a 规范定义了p o a 具有以下功能: 1 ) 允许编程人员创建在不同o r b 之间移植的对象实现。 2 ) 提供对带有持久性标志符的对象的支持。 3 ) 提供对象透明激活服务的支持。 4 ) 允许单个仆从对同时具有多个对象标志的对象支持。 5 ) 允许同一个p o a 的多个不同实例在一个服务中并存。 6 ) 提供对临时对象的简化编程支持。 7 ) 允许对象实现最大化地响应对象行为。特别地,一个对象实现可以通过建 立定义了对象标志的数据来控制对象的行为,决定对象标志与对象状态之 间的关系,管理存储库与恢复对象状态,判定一个对象在任意时刻是否存 在。 8 ) 避免请求o r b 来维护描述具体对象的回归状态、对象标志和对象是否停止 存在等。 9 ) 为在p o a 中实现联合策略信息与对象提供可扩展机制。 1 0 ) 允许编程人员构建继承自静态骨架的对象实现,或者是动态骨架接口实现。 p o a 支持的抽象模型是o m a 对象模型的特殊形式。因此,多数c o r b a 对象模型中的元素都会在p o a 抽象模型中出现,只是定义的更为详细。根据 c o r b a 3 0 3 规定,p o a 支持的抽象模型包括的主要组件: 1 ) 客户:客户是一个计算环境,通过对象引用对指定对象中的操作发起请求。 2 ) 服务器:服务器是一个包含对象实现的计算环境。 3 ) 仆从:它是实现一个或多个对象请求的编程语言对象或实体,通常存在于 服务器进程当中。 4 ) p o a :它是在服务器环境中的一个可识别实体。每一个p o a 都为对象标志 以及其它嵌套的或子p o a 提供名字空间。 5 ) p o a 管理器:它是一个封装了一个或多个p o a 处理状态的对象。开发人员 可以通过p o a 管理器的操作对p o a 请求队列进行排队或丢弃,也可以终 止一个p o a 。 6 ) p o a 管理器工厂:它提供直接创建p o a 管理器和查询已经存在的p o a 管 武汉理工大学硕士学位论文 理器的功能。 7 ) 仆从管理器:它是应用程序开发者可以用来与p o a 想联系的对象。o r b 利 用仆从管理器的操作来激活或终止一个仆从。仆从管理器用来管理以对象 标志为特征的对象与特定仆从之间的联系,并负责确定一个对象存在与否。 在c o r b a 中有两种类型的仆从管理器:仆从激活器和仆从定位器。具体 使用哪一种仆从管理器,由p o a 中的策略决定。 8 ) 适配器激活器:它是应用开发人员用来与p o a 联系的对象。当o r b 收到 一个请求当前不存在的子p o a 时,就可以调用适配器激活器中的操作,创 建所需的p o a 。 在p o a 抽象模型中( 2 5 ) ,o r b 对客户端和服务器都是抽象可见的;p o a 对 服务器是对象可见的。用户提供实现向p o a 注册。客户端控制它可以请求的引 用。o r b 、p o a 和实现共同合作决定调用哪个仆从中的操作,来执行调用。 2 2d c o m 对象模型 图2 - 5p o a 抽象模型【1 0 l 微软的分布式组件对象模型d c o m ( d i s t r i b u t e dc o m p o n e n to b j e c tm o d e l ) , 是组建对象模型c o m 由单机应用到多机的分布式应用的扩展。d c o m 具有 c o m 的一切属性。c o m d c o m 提供了构建分布式应用的基础软件结构。从总 体上来看,c o m d c o m 可以体现为两个方面:编程模型和相关联的系统服务 【1 2 】【1 5 l o c o m d o c m 的编程模型是一个客户机朋艮务器模型。在这种模型中,c o m 客户端可以连接到一个或多个c o m 服务器的对象上。在这里,客户端可以是 需要调用服务器上服务的任何软件。c o m 对象通过一个或多个接口来表示自 武汉理工大学硕士学位论文 己。编译后的c o m 对象实现存放于一个c o m 服务器的二进制模块中( e x e 或d l l 形式) ,一个单独的c o m 服务器可以包含多个不同的c o m 对象实现。 这种面向对象的编程模型设计,提高了软件的互用性。 c o m 的主要目标就是提供客户端访问服务器对象的机制,而不用考虑客户 端和服务器的开发语言、开发者和开发时间。为了实现这种互用性,c o m 提供 了定义了二进制标准,该标准指定了在运行时,对象在内存中的配置形式。通 过定义对象在内存中的配置形式,c o m 允许任何能够重新构造必须的内存配置 的编程语言来创建一个c o m 对象。c o m 除了提供客户端和服务器之间基本的 二进制级别的互用性,还提供了其它的目标:第一,提供了翻译和演化的解决 方案。第二,提供了对象的系统视图。第三,提供了单一编程模型。第四,提 供了对分布式的支持1 1 3 l 【1 7 1 羽。 在c o m 中,提供了多种类型的服务器来实现组件。它们分别是1 1 】【1 4 】: 1 ) 进程内服务器( 1 1 1 p r o c e s ss e r v e 0 ,即a c t i v e x 控件。进程内服务器是以动态 链接库( d y n a m i cl i n k e dl i b r a r y ) 形式实现的,与客户程序在相同的进程空间 内运行。 2 ) 本地服务器( l o c a ls e r v e r ) 。本地服务器是运行在同一台计算机的不同进程 空间。应用程序与本地服务器之间的通信由c o m 运行库采用高速进程间通 信协议实现。 3 ) 远程服务器( r e m o t es e r v e r ) 。远程服务器运行在远程计算机上。d c o m 通 过提供基于r p c 的基础设施扩展了c o m 的功能,可用于管理应用程序与 远程服务器通信。 对于客户端来说,d c o m 组件的位置是透明的,开发者无需编写任何处理 远程调用的代码,因为d c o m 是对c o m 技术的无缝扩展。开发者可以充分利 用已有的基于c o m 的组件、应用开发技巧和工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年地勤机务考试题及答案
- 2025年下半年无人机装调检修工考试试题及答案
- 2025年机务勤务试题及答案
- 2025年东航飞行测试题及答案
- 2025年航空服务员技能认定考试试题及答案解析
- 高校合同模板(3篇)
- 安全用药护理考试题及答案
- 高速公路挡墙施工合同(3篇)
- 电子商务合同法律风险防控与合同签订流程优化
- 专业人士个人房贷转按揭服务合同
- 《中兽药生产技术》课件-14.中药炮制方法-火制
- 人力资源招聘与甄选工作标准化手册
- 民俗学课件山大
- 2025-2026秋季学年第一学期学生国旗下演讲稿(20周):第五周 76载荣光里我们茁壮成长-喜迎国庆
- 办公楼供电线路改造方案
- 《无人机操控技术》高职无人机全套教学课件
- 12YJ11 卫生、洗涤设施设计图集
- 心内科STEMI再灌注治疗率提升
- 装载机司机安全考试模拟试题(含答案)
- 安全生产法2025全文
- 中储粮薪酬管理办法
评论
0/150
提交评论