




已阅读5页,还剩53页未读, 继续免费阅读
(计算机科学与技术专业论文)支持高效orb的idl编译技术的研究及实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国防科学技术人学研究生院学位论文 【摘要】 当今,分布性、可扩展性和异构性已经成为现代企业计算环境的显著特征。 然而,利用传统操作系统中提供的网络传输服务来开发分布式应用会涉及很多繁 琐、复杂的网络编程任务,这大大地影响了分布式应用开发的效率。因此,o m g 组织提出了c o r b a 标准,它很好地解决了分布异构平台上对象的互操作和可移 植问题,其核心机制是对象请求代理,简称o r b 。目前c o r b a 产品成为分卸式 应用的主流选择。然而,随着新一代分布式应用的出现,象远程通讯系统、航空 控制系统和分布式多媒体系统,它们要求高效、灵活的服务。因此,c o r b a 产品 能否在新一代分布式应用中取得成功依赖于其能否提供高效、灵活的o r b 。因此, 对c o r b a 产品进行优化显得迫在眉睫。 在c o r b a 产品中,采用描述性语言一i d l 语言描述服务方提供的、客户方访 问的接口。1 d l 编译器负责将i d l 语言映射到c + + 等编程语言,生成负责完成一 些网络编程的s t u b s 和s k e l e t o n s ,构成了o r b 表示层。o r b 表示层中负责请求过 程中的编解码过程、操作适配过程,在目前的请求处理过程中造成了极大的开销。 因此,对i d l 编译器进行优化,使其产生高效、灵活的s t u b s 和s k e l e t o n s 是非常 必要的。 n 因此,l 本课题主要对目前c o r b a 产品的请求处理过程进行分析,得出瓶颈 之所在,并对相应的i d l 编译器部分提出相应的优化技术,最后在c o r b a 产品 s t a r b u s 上予以实现。最后对新旧版本进行了测试,并对结果进行了分析。测试结 果表明,优化后的s t a r b u s 的编码过程能比优化前的s t a r b u s 性能提高3 0 左右, 消息适配过程能提高2 0 左右,这说明我们提出的优化技术是非常有效的。 【关键字】 ,厂、 c o r b a 、对象请求代理、表示层、适配、激活、编码、解码、s t u b s ,、s k e l e t o n ; 第1 页 璺堕型堂垫查查堂堑壅兰堕兰垡鲨塞 a b s t r a c t n o w a d a y s ,d i s t r i b u t i o n 、f l e x i b i l i t ya n dh e t e r o g e n e i t yh a sb e c o m et h ep r o m i n e n t c h a r a c t e r so ft h em o d e m c o m p u t i n ge n v i r o n m e n t s h o w e v e r , i tw i l li n v o l v em a n yf u s s y n e t w o r k a ) r o g r a m m i n g t a s k st o d e v e l o p d i s t r i b u t e d a p p l i c a t i o n s w i t h n e t w o r k _ p r o g r a m m i n gs e r v i c e si nt r a d i t i o n a lo s s ,a n di tw i l ld e c r e a s et h ee f f i c i e n c yo f d e v e l o p m e n t t h e r e f o r e ,o m g i s s u e st h ec o r b a s p e c i f i c a t i o n ,w h i c he n a b l et h eo b j e c t s o nd i s t r i b u t e d 、h e t e r o g e n e o u s p l a t f o r m s t o o p e r a t e b e t w e e nt h e m s e l v e sa n dt ob e p o r t a b l e t h ec o r em e c h a n i s mo fc o r b a i s o b j e c tr e q u e s tb r o k e r ( o r b ) n o w , t h e p r o d u c t o fc o r b ah a sb e c o m et h em a i nc h o i c eo fd e v e l o p e r so ft h ed i s t r i b u t e d a p p l i c a t i o n s h o w e v e r , w i t h t h e a p p e a r a n c e o ft h en e wg e n e r a t i o no fd i s t r i b u t e d a p p l i c a t i o n s ,s u c h a st e l e c o m m u n i c a t i o n s y s t e m s 、a v i o n i c s c o n t r o l s y s t e m s ,t h e p e r f o r m a n c ed e m a n d e df o ro r bp r o d u c tb e c a m em o r ea n dm o r eh i g h e r , i t su r g e n tt o s u p p l ya ne f f i c i e n to r bp r o d u c t t h ep r o d u c to fc o r b au s e so m gi d lt od e s c r i b et h ei n t e r f a c e sw h i c hs e r v e r s u p p l i e sa n dc l i e n ta c c e s s e s i d lc o m p i l e ri sr e s p o n s i b l ef o rm a p p i n gi d lt oc + + i t w i l l g e n e r a t e s o m ec o d ew h i c hf i n i s h e dt h e n e t w o r k _ p r o g r a m m i n g t h e s e c o d e c o n s t i t u t e so r bp r e s e n t a t i o n l a y e r ,w h i c h d e a l sw i t h m a s h a l i n g d e m a r s h a l i n g a n d d i s p a t c h i n gi n t h e r e q u e s t o r bp r e s e n t a t i o n l a y e rp r o d u c e sm o s to v e r h e a d s i nt h e r e q u e s t ,s oi t i sn e c e s s a r yt oo p t i m i z et h e1 d l c o m p i l e ra n d m a k ei t g e n e r a t ee f f i e n ta n d f l e x i b l ec o d e i nm yt a s k ,f i r s ti a n a l y z et h ep r o c e s so ft h er e q u e s ta n dl e a r nt h es o u r c eo f t h e o v e r h e a d s ,t h e nia d v a n c et h eo p t i m i z i n gt e c h n o l o g i e sa c c o r d i n gt ot h ea n a l y s i s a tl a s t ,i r e a l i z et h et e c h n o l o g i e so nt h ep r o d u c to ft h ec o r b a - - s t a r b u s t h e n ,it e s tt h en e w v e r s i o na n do l dv e r s i o no f t h es t a r b u s t h er e s u l t so f t h et e s ta r e :t h ep e r f o r m a n c eo f t h e m a r s h a l i n gp r o c e s si nt h en e w v e r s i o ni sa b o u t3 0 b e t t e rt h a nt h a to ft h eo l dv e r s i o n ; t h ep e r f o r m a n c eo ft h ed i s p a t c h i n gp r o c e s si nt h en e wv e r s i o ni sa b o u t2 0 b e t t e rt h a n t h a to ft h eo l dv e r s i o n t h er e s u l t si n d i c a t et h a tt h eo p t i m i z i n gt e c h n o l o g i e sa r ev e r y e f f e c t i v e 【k e y w o r d s 】 c o r b a ,o b j e c tr e q u e s tb r o k e r ,p r e s e t a t i o nl a y e r ,d i s p a t c h ,a c t i v a t e ,m a r s h a l , d e m a r s h a l 、s t u b s 、s k e l e t o n s 第2 页 国防科学技术人学研究生院学位论文 第一章绪论 1 1 课题背景 9 0 年代,计算技术最引人注目的进展之一就是应用计算环境从集中走向分布。 发展至今,分布性、可扩展性和异构性已经成为现代企业计算环境的显著特征。 然而,利用传统操作系统中提供的网络传输服务来开发分布式应用会涉及很多繁 琐、复杂的网络编程任务,这大大地影响了分布式应用开发的效率,不利于企业 面临的市场竞争的严峻挑战。人们在分布式计算机系统的建立及其应用系统的开 发过程中,深刻认识到分布式应用开发的效率是决定此类系统开发和应用能否成 功的关键因素之一。为此,o m g 组织提出了c o r b a ( c o m m o n o b j e c t r e q u e s t b r o k e r a r c h i t e c t u r e ) 标准,它解决了异构平台上分布对象的互操作和可移植问题,其核 心机制是对象请求代理( o b j e c tr e q u e s tb r o k e r ) ,简称o r b 。相对于传统操作系 统提供的服务,利用c o r b a 产品开发分布式应用可以大大缩短产品的研制开发 周期,避免大量单调、重复的网络编程工作;而且利用c o r b a 产品开发出的应 用具有良好的可重用性,这些优势使得c o r b a 产品在分布式应用开发过程中能 极大的提高开发效率,减少人力和物力的开销。目前,c o r b a 产品已经成为分布 式应用开发者的主流选择。 然而,随着新一代分布式应用的出现,象远程通讯系统、航空控制系统和分 布式多媒体系统,目前的c o r b a 产品提供的服务已经不再满足它们的要求。它 们要求灵活、重用性强、健壮的服务;同时,它们需要提供可伸缩的、高性能的 服务。尤其对于一些对延迟敏感的应用,提供低延迟的服务保证是分布式应用在 市场竞争中成功的关键。既然c o r b a 产品已经为分布式应用的开发提供了方便 的手段,自然,新一代的分布式应用对c o r b a 产品的性能提出了更高的要求。 他们希望利用c o r b a 产品开发分布式应用不仅能够加快开发进度,而且能够开 发出高效、灵活的分布式应用。c o r b a 产品能否在新一代分布式应用中能否取得 成功很大程度上依赖于c o r b a 产品能否提供一个高效,灵活的o r b 。因此,对 c o r b a 产品进行优化,使其能提供一个高效、灵活的o r b 显得刻不容缓。 基于c o r b a 的分布式应用的最大特点是接口和实现相分离,c o r b a 将客户 方和服务器方需要彼此之间相互通讯的基本信息封装在接口( i n t e r f a c e ) 对象中, 接口对象定义了对象实体的属性和行为,包括服务方对外提供、客户方将要请求 的各种方法的定义。为描述接口对象,c o r b a 使用了中性语言接口定义语言 ( i n t e r f a c e d e f i n i t i o n l a n g u a g e ,简记为i d l ) 。但是,i d l 语言只是一种中性语言, 第3 页 国防科学技术人学研究生院学位论文 应 与c + + 等实现语言不同不能用于编程。因此,需要提供一种i d l 语言向c + + 等实 现语言的映射。在c o r b a 模型中,i d l 编译器用于完成这种映射,它主要处理 用户提供的用i d l 语言编写的接口定义,生成客户方的s t u b s 接口程序和实现方 的s k e l e t o n s 程序,从而使c s 的应用开发者在基于s t u b s 和s k e l e t o n s 开发应用时 可以不去关心网络编程的具体内容及细节,c l i e n t 方只需按1 d l 文件提供的接口来 调用s e r v e r 方,而s e r v e r 方只需按i d l 文件提供的接口编写接口实现,双方都可 以象开发本地应用一样开发异种平台和异种语言之间的分布式应用。因此,c o r b a 模型不仅能解决异种平台的应用集成问题,而且也能解决异种语占应用的集成问 题。i d l 语言编译程序功能如下: 生成o r b 的s t u b 接口程序 生成o r b 的s k e l e t o n 程序; 将接口描述语言的信息放入接口池中。 不同的平台环境和应用开发语言将对应不同的i d l 语言编译程序,因此i d l 编译器的开发成为分布计算模型、分布应用开发的一个重点。在c o r b a 模型中, i d l 编译器的作用如图1 1 所示。 图1 11 d l 编译器在c o r b a 模型中的作用 i d l 编译器使c s 的应用开发者可以不去关一i i , 网络传输协议的具体内容及细 节,而象开发本地应用一样开发异种平台和异种语言之间的分布式应用。所以说, i d l 及其编译工具是基于c o r b a 标准的分布计算环境中最基本的开发工具。 i d l 编译器编译生成的s t u b s 和s k e l e t o n s 构成了c o r b a 分布式集成框架中的 o r b 表示层,o r b 表示层封装了对i i o p 引擎和底层服务机制的调用,提供了与 应用相关的基本设施,如自定义数据类型的t y p e c o d e 码、编解码机制;其中s t u b s 主要定义了对象请求代理,s k e l e t o n s 则定义了相关服务的骨架类,负责组织管理 方法的适配与激活。o r b 表示层的基本功能是:当应用访问远程服务时,通过s t u b s 第4 页 国防科学技术大学研究生院学位论文 调用i i o p 引擎,将调用信息编码为f l o p 字节流消息包,然后使用底层传输机制 将该消息包发往服务方,并且对可能的返回值( 或异常) 解码;s k e l e t o n s 则在服 务方正确将c o r b a 对象具体化为相应的服务后,使用方法适配机制查找出相应 的方法,并解码调用参数、激活方法、编码返回值( 或异常) 。因此,o r b 表示 层的工作占了o r b 整个工作量的很大比重,尤其是参数的编码和方法的适配及其 组织形式对o r b 的效率和灵活性有极其重要的影响。可以说,为实现高效、灵活 的o r b ,对i d l 编译器进行相应的优化是至关重要的。 在这种需求背景下,我们开展了以支持高效、灵活的o r b 为目标的i d l 编译 技术的研究。 本课题来源于国家8 6 3 计划重大项目( 8 6 3 3 0 6 一z d 0 4 ) 基于网络的大型 分布计算软件平台及应用框架的子课题。课题的研究重点是为实现高效、灵活的 o r b 而对i d l 编译器进行研究,使其能生成高效的、满足用户需求的s t u b s 和 s k e l e t o n s ,支持应用开发者灵活的建立分布式应用系统,提高分布式应用的效率。 1 3 课题目标 课题的目标是对分布式应用开发平台s t a r b u s 进行优化,使s t a r b u s 的用户可 以灵活地建立自己的分布式应用系统,适应高效率分布式应用的需要。课题工作 主要分为以下几个部分: 分析目前c o r b a 产品中请求处理过程的开销来源 针对分析情况,提出相应的优化技术 在分布式应用开发平台s t a r b u s 上实现优化技术 对优化前后的s t a r b u s 版本进行对比测试 1 4 基本术语 下面介绍与本论文相关的基本术语 1 ) 分布对象计算( d i s t r i b u t e do b j e c tc o m p u t i n g ) 分布在异构网络平台之上的多个对象以统一方式进行互操作的计算领域。 2 ) 动态请求( d y n a m i ci n v o c a t i o n ) : 第5 页 国防科学技术大学研究生院学位论文 相对于静态请求而占,直到运行时刻才进行请求的构造和申请服务器服务 的一种请求方式。 3 ) 实现( i m p l e m e n t a t i o n ) 关于对象生成对象服务的各种定义,一般它包括对象核心状态的描述和访 问这些状态的方法定义所组成。 4 ) 接( i n t e r f a c e ) 对象对外提供的描述客户方和服务器方需要彼此之间相互通讯的基本信 息,主要描述访问其各种数据结构的各种方法。 5 ) 接1 3 定义语言( 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 简记i d l ) 对客户方和服务器方需要彼此之间相互通讯的接口进行描述说明的一种中 性语言。 6 ) 语言映射( m a p p i n g ) 在分布计算领域中是指i d l 语言向一种具体实现语言象c + + 转换的方法 和原则。 7 ) 对象适配器( o b j e c ta d a p t e r ) o r b 的一个组成部分,它提供产生和解释对象引用、激活对象实现和访 问对象状态相关的各种服务。 8 ) 对象引用( o b j e c tr e f e r e n c e ) : 一个对象具体实例的标识。 9 ) 对象请求代n ( o b j e c tr e q u e s tb r o k e r 简记为o r b ) 对象请求与接受响应的机制,它作为分布对象计算的中介,为定位对象、 激活对象提供方法。 1o 、s k e l e t o n s i d l 编译器生成的帮助对象适配器将一个请求传递到指定对象实现的o r b 的专用对象接口。 1 1 1s t u b s 第6 页 国防科学技术大学研究生院学位论文 i d l 编译器生成的服务方在客户方的代理,是负责将本地请求转换为网络 请求的o r b 专用对象接口。 1 5 文章组织 本文组织如下: 1 第一章介绍了课题的背景、课题来源及目标等基本内容 2 第二章分析了c o r b a 模型中的开销分配,指出低效的原因,并针对此提 出了相应的优化技术; 3 第三章介绍了s t a r b u s 中i d l 编译器的设计及其实现; 4 第四章介绍了第二章提出的优化技术在s t a r b u s 上的实现,并对优化结果 进行分析; 5 第五章对比b o a 介绍p o a 的改进; 6 第六章对毕业设计工作进行了总结,并对以后工作进行了展望。 第7 页 国防科学技术大学研究生院学位论文 第二章c o r b a 模型开销分析 2 1c o r b a 模型概述 c o r b a 全称通用对象请求代理体系结构( c o m m o n o b j e c tr e q u e s t b r o k e r a r c h i t e c t u r e ) ,这是一个通过对象请求代理( o r b ) 定位和激活其它对象的规范。 c o r b a 对象模型基于这样一个思想: 1 对象是个被封装的实体,他们提供一个或多个服务。 2 客户用一种独立于语言的请求方式( 中性请求方式) 请求服务器服务。那 些封装后实现的对象都是服务器能够动态加载的实体( 对象实现) 。 3 对象也被表示成对象引用( o b j e e tr e f e r e n c e ) ,一个对象可以被表示成多 个不同的对象引用。对象引用通过“字符串化”后可以转换成字符串;反 之,字符串形式的对象引用客户也可以将它还原到原始的对象引用,并且 可以向该对象引用发请求。对象引用有复制和释放操作,它们可以用来对 对象实现计数:对象引用的i sa 操作可以在需要的时候维护类型安全:除 此之外,还有一个i se q u i v a l e m 操作可以用来确定两个对象引用是否指向 同一个对象实现。 4 客户发出请求,获得服务。请求由目标对象的信息( 对象引用) ,操作名 字,操作需要的实际参数,必要的时候还要加上操作语境( c o n t e x t ) 等 组成。请求可以由i d l 编译器生成( s t u b s ) ,也可以由动态启动机制( d i i ) 来产生。一个请求将完成一个服务,如果有一个非正常的条件发生,请求 将返回一个异常情况。客户使用的对象所发出的请求经过对象请求代理 ( 0 r b ) 传递给相应的对象实现。 5 客户对对象实现可能发出的操作请求是由对象实现的接口定义的。接口由 0 m g 的接口定义语言( 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 ) 定义。i d l 允许说明模块、接口、异常、常量和异常定义。模块规定了变量作用域。 接口除定义类型、常量和异常以外还包含属性及操作的说明。接口可以是 单重或多重继承。o i m 对操作的i d l 定义并不是必须的。在实际使用中, 类型信息可以通过i d l 接口获得,也可以通过存根程序或接口池来获得。 6 语言映射规定如何通过o r b 使用某种程序设计语言。映射包括将i d l 说 第8 页 国防科学技术人学研究生院学位论文 明定义表达成映射语言的数据类型和过程,存根与框架,动态启动接口, 对象适配器,o r b 的接口。语言映射还要定义对象启动与客户或实现中 的线程控制间的交互。 7 o r b 通过一个或多个对象适配器提供它的服务。每个对象适配器将提供 对象引用生成与解释的方法,对象实现的激活与休眠手段,对象实现的注 册等等。不同的对象适配器针对不同的实现组,比如数据库适配器,高安 全性适配器等等。 8 c o r b a 规定接口池作为在运行时类型表示的方法,实现池为o r b 定位 与激活对象实现指明了方向。 2 2 c o r b a 模型的组成部分 c o r b a 模型中的构件组成如图2 1 示 2 2 1s e r v a n t 图2 1c o r b a 模型 s e r v a n t 构件实现了i d l 文件中定义的操作,它是程序语言意义上的对象或实 体,它可以为一个或多个对象实现请求。在诸如c + + 、j a v a 这样的支持面向对象 编程的语言中,s e r v a n t s 通常是用一个或多个对象来表示的。s e r v a n t s 一般存在于 一个s e r v e r 进程的上下文中,在一个s e r v e r 进程中,一个s e r v a n t 中的对象使用一 个独一无二的对象引用来表示。 第9 页 国防科学技术大学研究生院学位论文 一个c l i e n t 是通过对象引用向相应对象发出请求的程序实体。服务提供对象对 于c l i e n t 来说既可以是远程的,也可以与c l i e n t 驻留在同一台机器上。按理来说, 访问一个远程对象应该和访问一个本地对象一样简单,仅仅通过o b j e c t o p e r a t i o n ( a r g s ) 就可以完成。在图2 1 中就显示出了o r b 用于透明的传输客户请求 的构件。 2 2 3 0 r b 核心 o r b 的主要功能在于将请求传给对象,再将对象处理的结果返回用户。如果 将被用户请求的对象称之为目标对象,那么o r b 则实现了用户和目标对象之间通 讯的透明性。 c o r b a 标准中,o r b 通过隐蔽具体的对象信息来使得应用程序开发者能将 更多的注意力集中在领域问题的解决上而不被烦琐的分布系统底层程序设计所困 扰。 当构造服务请求时,用户使用目标对象的对象引用( o b j e c tr e f e r e n c e ) 来表 示目标对象。这就要求创建一个c o r b a 对象时,o r b 也同时生成相应的对象引 用。只要目标对象存在,用户就可以使用它的对象引用来访问这个对象。这就意 味着c o r b a 标准中对象引用有标准的格式并且是唯一的。用户不能随意地修改 与目标对象对应的对象引用的值,而只能通过对象引用来对相应的目标对象进行 访问,o r b 利用这个对象标识来具体定位对象,将用户的请求提交给目标对象。 如果该对象不处于执行状态,o r b 还负责激活这个对象。目标对象执行相应的请 求服务并将结果通过o r b 返回给用户。 2 2 4 0 r b 接口 o r b 是一个可以用多种方式实现的实体,比如可以使用一个或多个进程来实 现,也可以使用一套库来实现。为了将应用和实现细节相分离,c o r b a 标准为o r b 定义了一个抽象的接口。该接口为将对象引用转换成字符串以及其逆过程提供了 标准的操作。o r b 接口也可以为通过d l l 发出的请求创建参数表。 2 2 5 存根进程s t u b s 和框架进程s k e l e t o n s i d l 编译器对i d l 文件进行编译可以产生存根进程s t u b s 和框架进程s k e l e t o n s 。 用户能够利用客户方的存根机制有效地建立和提交服务请求,而服务方的框架机 制则负责将用户的服务请求转发到相应的c o r b a 服务对象的实现。因为存根进 程和框架进程都是直接根据o m gi d l 说明转化而来,所以它们通常都是接口相 关的。 第1 0 页 国防科学技术人学研究生院学位论文 通过存根机制和框架机制的用户服务请求的转发被称之为静态引发。o m g 组 织的i d l 规范将存根和框架机制直接嵌入到用户的应用程序和服务对象的实现之 中。因此,应用程序和服务对象都必须了解与将要被激活的c o r b a 对象的i d l 接口有关的内容。 2 2 6 接口池 基于c o r b a 开发的应用程序在执行时刻必须明确与所请求的服务对象支持 的接口的类型、被传递的请求参数值的类型有关的信息。在大多数情况下,应用 程序仅仅要求静态地获得这些o m gi d l 类型信息。但在一些特定的情况下,还 必须提供动态地发现和使用所需的类型信息的途径。 在c o r b a 规范中,接口池为应用程序提供了在运行时动态地访问和修改o m g 1 d l 类型信息的能力。接口池本身也是一个c o r b a 对象,为o m gi d l 接口声明 提供了永久的保存场所。通过接口池提供的访问接口可以浏览对象继承的层次关 系,以及详细提供对象所支持的全部操作信息。 c o r b a 标准中,接口池的主要用途体现在以下几个方面 接口浏览器( i n t e r f a c eb r o w s e r s ) 通过查询接口池信息,帮助程序设计者 确定具有潜在的可重用性的软构件。 o r b 通过接口池在运行时动态地对操作参数的类型进行检查。 在使用动态引发接口( d y n a m i ci n v o c a t i o ni n t e r f a c e ) 提交用户请求时提供 详细的类型信息。 2 2 7 对象适配器 在c o r b a 标准中,对象适配器的作用在于将c o r b a 的对象实现和o r b 连 接为一个整体。对象适配器可以将某个对象的接口表现为调用者所期望的形式。 这就意味着即使不知道对象实际的接口形式,调用者也可以激活相应的服务请求, 从而从另一个侧面简化了o r b 所承担的工作。对象适配器提供的主要服务有: 注册对象实现 产生与解释对象引用 服务器的激活与休眠 服务器中服务对象的激活与休眠 启动对象实现 第页 国防科学技术大学研究生院学位论文 对象引用和对象实现之间的映射 2 2 8 接口定义语言 在c o r b a 标准中定义了o m gi 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 m gi d l 的特点在于它的语言透明性。因为o m gi d l 是一种描述 性的语言,而不是可执行的程序设计语言,所以它的作用是使接1 2 1 的定义与对象 实现相分离。这就使得用不同的程序设计语言来创建对象的同时仍然能保持对象 之间的交互。因为不是所有的程序设计语言都可以在任意一个平台上运行,所以 和语言相独立的接口对异构系统是非常重要的。 2 2 9 动态引发和转发 通过使用i d l 编译器对i d l 接口定义进行编译所产生的存根进程和框架进程, 使得应用程序可以启动已知对象的相关操作。但在另一些情况下,应用程序经常 需要访问一些在编译时刻不知道接1 :3 信息的对象,这种情形被称之为动态引发。 为此,c o r b a 标准提供了两个接口来支持动态引发的实现。 d i i ( d y n a m i c i n v o c a t i o ni n t e r f a c e ) 支持用户动态地创建请求 d s i ( d y n a m i cs k e l e t o ni n t e r f a c e ) 提供动态地将用户请求转发给对 象的机制。 从一般意义上而言,我们可以把d i i 和d s i 看成是通用的存根进程和框架进 程。d i i 和d s i 接口都由o r b 直接提供,而与将要被激活的对象的i d l 接口定义 无直接关系。 d i i 利用d l l ,客户端应用程序可以在编译时刻不知道对象的具体接口信息的情况 下而在运行时刻动态地构造和提交所需要的任意合法服务请求。如果使用静态引 发时的存根进程机制,那么每当创建一个新的c o r b a 对象时,都必须对应用程 序进行重新编译,加入新创建的c o r b a 对象的存根进程。为了简化这些重复的 操作,可以在应用程序中使用d i i 来动态地构造c o r b a 对象的服务请求。在运 行时刻,d i i 通过对请求的操作和参数进行动态地解释来构造和提交用户请求。同 时,d i i 还被用来构造一些与用户进行交互用的接口信息,如从接口池中获得对象 操作信息的接口池浏览器等。 d s i 在服务方与d 1 1 相对应的是d s i 。与d i i 允许用户激活请求,但不访问静态的 存根进程相类似;d s i 机制允许服务方不加入被静态地编译在程序中的被激活对 象的框架进程。在c o r b a2 0 中加入d s i 机制,主要用来实现支持使用不同通讯 第1 2 页 国防科学技术火学研究生院学位论文 协议的o r b 之间通讯的g a t e w a y 。一个双向的g a t e w a y 必须同时扮演c l i e n t 和 s e r v e r 两种角色:首先,它必须能够完成外部对象系统的请求与c o r b a 对象的 服务请求之间的相互转换,此时,g a t e w a y 使用d i i 来完成c l i e n t 的工作:作为 s e r v e r ,g a t e w a y 要求在无须知道每个已编译好的对象接口类型的静态框架信息的 情况下接受用户请求,这就要求在s e r v e r 方能提供一种与d i i 等价的机制,即动 态框架接口d s i 。虽然在c o r b a2 0 中也同时提出了i i o p 协议,但是g a t e w a y 仍然是实现o r b 之间互操作的一种手段。对于某些应用而言,特别是对于实现o r b 之间的通讯以及实现基于c o r b a 的系统和非c o r b a 系统之间通讯的应用程序, d s i 是一种非常有效的机制。 2 2 1 0 实现池 实现池包含允许o r b 定位和激活对象实现的信息。虽然实现池中大多数信息 都是特定于某一o r b 和操作系统,实现池是记录这些信息的习惯位置。常规的, 实现安装与对象实现激活和执行有关控制策略都是通过对实现池操作来完成的。 除了为o r b 发挥功能起作用,实现池通常是存储额外的o r b 对象实现信息 的位置。例如,调试信息,管理控制,资源分配,安全等,都可与实现池相关联。 2 3 请求处理过程中的开销分析 在c o r b a 模型中,c o r b a 模型中的各种构件屏蔽了请求的具体传输细节, 使用户对请求对象的位置不敏感,用户请求异地对象服务就好比向本地对象请求 服务一样。那么,一个请求究竟是怎么传递到服务方,服务方又怎样将结果返回 给用户的呢? 一个完整的请求处理过程具体过程如图2 2 所示: 图2 2 请求处理过程 1 c l i e n t 发出请求,调用i d l 编译器为客户方生成的对象代理s t u b s :在这个过 程中,c l i e n t 只需发出一个标准的语言调用,与调用本地的对象没有什么区别, 第1 3 页 国防科学技术大学研究生院学位论文 用户不能感觉出是调用本地对象还是异地对象。 2 对象代理对请求进行编码,使其转换为便于网络传输的字节流:编码是代理调 用o r b 内核中f l o p 引擎所提供的服务将请求转换成网络可识别的信息。在编 码过程中,i l o p 协议引擎对数据进行两次扫描,第一次扫描计算数据的编码 空间,第二次扫描才依据一定的规则对数据进行编码,这种两次扫描机制对于 复杂类型是很低效的。c o r b a 标准中的c d r ( c o m m o nd a t ar e p r e s e n t a t i o n ) 定义了将o m gi d l 中所定义合法数据类型转化为字节流消息表示的映射,它 要求所有的数据类型最终都将以组成该数据类型的原始数据类型按顺序编入字 节流消息,并且原始数据类型应按照其自然长度进行字对齐。c o r b a 标准中 的数据类型分为固定长度和可变长度两种类型。固定长度数据类型所包含原始 数据类型的数据成员长度在定义时就可确定,但是按照字对齐原则,在不同的 地址值下,其所需的编码长度可能不同。 3 经过编码后的数据通过网络进行传送。 4 到达s e r v e r 方后,o r b 分发请求,分发过程如图2 3 。分发意味着定位c l i e n t 请求服务的对象,该定位的主要依据是请求包中的对象弓i 用和操作名。严格的 讲,分发的过程开始于操作系统的网络层。首先,操作系统的协议栈通过数据 链路层、网络层、传输层直到o r b 核心多次分发前来的客户请求;其次,o r b 核心通过在客户请求中o b j e c tk e y 中的信息来定位相应的对象适配器和 s e r v a n t ;最后,由i d l 编译器生成的s k e l e t o n s 定位到具体操作的骨架。 图2 3 请求适配过程 5 解码请求包:如名字所示,解码是编码的逆过程。具体操作的骨架将c d r 流 第1 4 页 国防科学技术大学研究生院学位论文 还原成相应的操作名和调用参数,变成相应的对象实现可以明白的形式。在很 多方面,解码与编码很类似,最重要的不同是:存储空间的分配和对象引用的 解码; 6 调用具体的对象实现。具体操作的骨架依据操作名以一定的参数调用对象实现 7 具体操作的骨架编码请求结果或异常,结果或异常按原路返回到c l i e n t 方的 s t u b s ,s t u b s 对其进行解码,获得请求结果或异常。 通过上述请求处理过程的分析,可以看出,目前的c o r b a 模型提供了 “b e s t e f f o r t ”的质量保障,它非常适合于传统的r p c 风格的应用。但是,目前的 c o r b a 实现不适合于高性能的实时应用,主要原因是:传统的o r b 端系统缺少 性能优化,引发了大量的吞吐率和延迟开销,这些开销主要来源于: 非优化的表示层,低效的编解码机制 对于不同的消息大小,内部缓冲机制产生不一致的行为 低效的适配算法: 过长的o r b 虚方法链: 缺少与底层操作系统和网络服务保证机制的集成。 经过测试,在请求处理过程中,i d l 编译器生成的s t u b s 和s k e l e t o n s 负责的编 解码过程和操作适配过程的开销占了整个开销的很大一部分,是优化的重点之一。 因此,本课题主要分析i d l 编译器生成的s t u b s 和s k e l e t o n s 在请求处理过程中的 开销来源,也就是主要就编解码过程和操作适配过程而言,提出相应的优化技术, 并予于实现。 2 3 1 编,解码过程开锖分析 在目前的c o r b a 产品中,s t u b s s k e l e t o n s 中对操作参数结果的编码空间计算 过程是一个完全动态的过程。例如,有如下操作: v o i do p ( i ns h o r tp l ,i nl o n gp 2 ,i nd o u b l ep 3 ,i nb o o l e a np 4 ,i no c t e tp 5 ,i ns t r i n gp 6 ) ; i d l 编译器生成的s t u b s 中的编码过程是这样的: c o r b a u l o n g o b o f f = 一o b c o n 一- o f f s e t ( t h i s ,”o p ”) ;计算请求头的空间 c o r b a _ u l o n g o b c n t 2 一o b o f f ; y b m a r s h a l c o u n t ( o k a 0 ,_ o b _ c n t ) ;计算参数1 所需的空间 第1 5 页 国防科学技术大学研究生院学位论文 一 y b m a r s h a l c o u n t ( _ o ba l ,o bc n t ) ;i i 计算参数2 所需的空间 y b m a r s h a l c o u n t ( o b _ a 2 ,一o b _ e n t ) ;计算参数3 所需的空间 y b m a r s h a l c o u n t ( _ o b _ a 3 ,_ o b _ c n t ) ;计算参数4 所需的空间 y b m a r s h a l c o u n t ( _ o b _ a 4 ,一o b _ c n t ) ;计算参数5 所需的空间 y b m a r s h a l c o u n t ( _ o b - a 5 ,_ 0 b _ c n t ) ;计算参数6 所需的空间 y b f i x s e q _ o b _ s e q ( _ o bc n t ) ;分配空间 j b _ s e q 1 e n g t h c o be n t ) ; # i f d e f y b _ c l e a rm e m m e m s e t ( _ o b s e q d a t a ( ) ,0 ,一o b s e q 1 e n g t h ( ) ) ; # e n d i f c o r b a _ o c t e t + 一o b o2 一o b _ s e q d a t a ( ) + - o h _ 0 i f ; y b m a r s h a l ( _ o b - a 0 ,_ o b _ o ) ;编码参数i y b m a r s h a l ( _ o b _ a l ,_ 0 b _ o ) ,编码参数2 y b m a r s h a l ( _ o b _ a 2 ,- 0 b _ o ) ;编码参数3 y b m a r s h a l ( _ o ba 3 ,_ o b _ o ) ;,编码参数4 y b m a r s h a l ( _ o k a 4 ,- 0 b _ o ) ;编码参数5 y b m a r s h a l ( _ o ba 5 ,_ o b _ o ) ;编码参数6 可以看出,在s t u b s 对请求的编码过程中,对于所有的参数类型,s t u b s 调用i i o p 协议引擎中的接1 2 1y b m a r s h a l c o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 各类精英面试实战技巧文档:深度解析面试题目及答案
- 大学生个人年终总结
- 小儿脑炎课件
- 大一学生暑假社会实践报告
- 小儿结核病的护理
- 小儿用品安全培训课件
- 小儿机械通气参数课件
- 小儿支气管哮喘课件
- 南充市五星小学(将军学校校区)2025年公开考核招聘教师的(10人)考前自测高频考点模拟试题及参考答案详解
- 外聘人员合同协议模板模板
- 职业健康管理流程图
- 《系统架构-架构与设计》
- 农作物耕作栽培(甘蔗)-新植蔗栽培技术
- 大方县猫场镇硫磺矿渣综合治理工程环评报告
- Sony MD随身听的历史
- Foxconn连接器设计手册
- 学习解读《医疗保障基金使用监督管理条例》PPT课件(带内容)
- GB/T 13384-2008机电产品包装通用技术条件
- GB 11121-2006汽油机油
- 沙尔夫柴油机齿轨卡轨车课件
- 房产无抵押情况说明及承诺书
评论
0/150
提交评论