




已阅读5页,还剩46页未读, 继续免费阅读
(计算机应用技术专业论文)corba+valuetype规范的研究和实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 c o r b a 系统中通常的对象传递方式是传递对象引用,通过传递对象引用,避免了传递复杂对象的系统 开销和通信开销,实现了客户端与服务端实现的分离。随着分布应用的发展,为了满足新的应用需求,c o r b a 规范2 3 版本中引入了对象传值( o b j e c tb yv a l u e ) 概念,在2 4 2 版本中,加入了v a l u e t y p e 关键字, 来实现对象传值。对象传值主要用于封装数据、业务逻辑简单的轻量对象,特别当接收方以只读方式访问 对象的应用,将大大提高客户端的本地执行效率,减轻服务端的压力及网络流量。此外有了对象传值机制, c o r b a 可以实现和j a v a 分布对象模型的自然互接、实现对象相互传递的互操作。本论文的工作旨在研究并 提出和实现一种切实可行的对象传值方案,并在o r b u s 的i d lc + + 编译器中扩充v a l u e t p e ,使i d lc + + 编译 器支持对象传值功能。 论文在深入研究c o r b av a l u e t y p e 规范 n o r b u s 系统及其i d lc + + 编译器原理、结构等相关技术的基础 上分析了对象传值的工作原理,提出了一个扩展c o r b ai d lc + t 编译器,以支持v a l u e t y p e 的交互过程方 案。在分析i d lc + + 编译器前端词法分析和语法分析的基础上,扩展了i d lc + + 编译器后端映射,根据 v a l u e t y p e 规范,实现了v a l u e t y p e 的状态数据成员、操作、v a l u e b o x 、继承、v a l u e t y p e 编码器解码器、 及接口传递v a l u e t y p e 对象等的映射。 其次,通过对v a l u e t y p e 特性及本地一致性协议的研究,在本地一致性基础上,提出了一种改进的基 于客户端t t l 方式的v a l u e t y p e 对象副本一致性算法。使用这种改进的l c + t t l 算法,不仅可以在有限的时间 内保证所有对象副本一致,而且使系统的可缩放性大大增强,以适用更大规模的应用系统。 最后,在遵从c o r b a 规范的o r b u s 系统的i d lc + + 编译器上,实现了v a l u e t y p e 关键字,使i d lc + + 编译 器支持对象传值功能,并经过系统测试,不仅证明了v a l u e t y p e 高效本地执行效率,而且验证了实现 v a l u e t y p e 交互过程方案的可行性和正确性。 关键字:v a l u e t y p e ; i d lc + + 编译器;对象传值il c + t t l 算法 东南大学硕士学位论文 a b s t r a c t t h eb a s i cm e t h o do fp a s s i n go b j e c t s ,i nt h ea r c h i t e c t u r eo fc o r b a ,i sb yp a s s i n go b j e c tr e f e r e n c e b y p a s s i n go b j e c tr e f e r e n c e ,i ta v o i d ss y s t e ma n dc o m m u n i c a t i o nc o s t s o fp a s s i n gc o m p l i c a t e do b j e c t sa n d i m p l e m e n t st h ed i s t r a c t i o no fc l i e n t sa n ds e r v e r s i nm o s ts i t u a t i o n s ,i ti s e f f e c t i v ea n dr e a s o n a b l e w i t ht h e d e v e l o p m e n to fd i s t r i b u t e da p p l i c a t i o na n dc o r b as p e c i f i c a t i o n s ,i nc o r b a 2 3o b j e c tb yv a l u ew a si n t r o d u c e d a n di nc o r b a2 4 2t h ek e y w o r d v a l u e t y p e w a sf o r m a l l ya d d e dt oi m p l e m e n to b j e c tb yv a l u e w i t ho b j e c tb y v a l u e ,t h o s el i g h t w e i g h to b j e c t sc o n c e n t r a t eo nd a t ae n c a p s u l a t i o na n ds i m p l el o g i c ,e s p e c i a l l yi n r e c e i v e r r e a d - o n l ya p p l i c a t i o n s ,c l i e n tr u n n i n ge f f i c i e n c yw i l lb eg r e a t l yi m p r o v e dw h i l es e r v e rr e s o u r c e sa n dn e t w o r k c o s t sr e d u c e dl a r g e l y i na d d i t i o n ,w i t ho b j e c tb yv a l u e ,c o r b aa n dj a v ad i s t r i b u t e dm o d e lc a nb ec o n n e c t e d s e a m l e s s l y , s od o e st h ec o o p e r a t i o no fo b j e c tp a s s i n g o u rw o r ki st or e s e a r c ha n dp r o p o s eap r a c t i c a lm e t h o do f o b j e c tb yv a l u e a n da u g m e n tk e y w o r d v a l u e t y p e i ni d lc + + c o m p i l e ro fo r b u st os u p p o r to b j e c tb yv a l u e o n t h eb a s eo f d e e ps t u d yo f c o r b a v a l u e t y p es p e c i f i c a t i o na n d o r b u s w i t h i t s i d lc o m p i l e r t h e o r ya n d s t r u c t u r e ,t h i sp a p e rp r o p o s e daw o r k f i o wo fi m p l e m e n t i n gv a l u e t y p ei nc o r b as y s t e ma n di t sw o r k i n g m e c h a n i s m 。i td e e p l ya n a l y z e dt h ea u g m e n t a t i o no fc o m p i l e rp e - v e r a la n ds y n t a xi ni m p l e m e n t a t i o na n db a c k c o m p i l e rm a p i nb a c kc o m p i l e rm a p p i n g ,t h ep a p e rr e s e a r c h e dd i f f e r e n tm a p p i n g s p e c i f i c a t i o ns i t u a t i o n si nd e t a i l r e s p e c t i v e l ya c c o r d i n gt ov a l u e t y p es p e c i f i c a t i o n c h a r a c t e r i s t i c s a c c o r d i n gt ot h ed a t am e m b e lo p e r a t i o n , v a l u e b o x ,i n h e r i t a n c e ,v a l u e t y p ec o d i n g d e c o d i n ga n di n t e r f a c ep a s s i n gv a l u e t y p e ,w ed e s i g n e dad i f f e r e n t i m p l e m e n tm e t h o da n dw o r k f l o w s e c o n d l y , a c c o r d i n gt ot h er e s e a r c ho ft h ec h a r a c t e r i s t i c so fv a l u e t y p ea n dl cl o c a lc o n s e n s u sp r o t o c o l ,t h i s p a p e rp r o p o s e dv a l u e t y p eo b j e c tr e p l i c ac o n s e n s u sa l g o r i t h mb a s e do ni m p r o v e dl ca n dc l i e n tt t l i tn o to n l y e x c e e d st h ev a l u e t y p es p e c i f i c a t i o n ,b u ta l s oa u g m e n t st h ea p p l i c a t i o ns c o p eo fv a l u e w p e w i t ho u ri m p r o v e d l c + t t la l g o r i t h m ,o nt h eo n eh a n d ,t h eo b j e c tr e p l i c ac o n s i s t e n c yc a nb ei n s u r e di nl i m i t e dt i m e ;o nt h eo t h e r h a n d s y s t e ms c a l a b i l i t yc a nb eg r e a t l yi m p r o v e dt oa d a p tt ol a r g e s c a l ea p p l i c a t i o n s f i n a l l y , o nt h eb a s eo fi d lc + + o fo r b u sp l a t f o r m w ea u g m e n t e dv a l u e t y p et os u p p o r to b j e c tb yv a l u e w i t hs y s t e mt e s t , w ei m p r o v e dt h ef e a s i b i l i t ya n dc o r r e c t n e s so f i m p l e m e n t i n gv a l u e t y p ei nc o r b a s y s t e m k e y w o r d s :v a l u e t y p e ;i d lc + + c o m p i l e r ;o b j e c tb yv a l u e ;l c + t t la l g o r i t h m i i 东南大学硕士学位论文 论文图表一览表 图2 1o r b u s 系统组成 图2 2o r b u s 系统中i d l 编译器的分层结构 图2 - 3 o r b u si d l 编译器前端的处理流程 图2 4i d l 例子 图2 - 5抽象语法树 图2 - 6l e x 示意图 图2 7y a c c 示意图 图2 - 8 l e x 和y a c c 配合使用情况 图3 1 v a l u e t y p e 映射类图 图4 1 v a l u e t y p e 交互过程 图5 1抽象语法树结构例子p u b li cl o n gx 图5 2 编译器后端有关v a l u e t y p e 的主要类图及继承关系 图5 - 3 状态数据成员映射流程图 图5 4 v a l u e t y p e 操作映射实现流程 图5 - 5v a l u e b o x ( v a l u e b o x ) 映射实现流程 图5 - 6抽象v a l u e t y p e 映射实现流程 图5 7 v a l u e t y p e 编解码状态数据模块实现流程 图5 - 8 v a l u e t y p e 编解码器模块实现流程 图6 - 1 v a l u e t y p e 对象副本不一致情况 图6 - 2 v a l u e t y p e 读扩充 图6 - 3 v a l u e t y p e 写扩充 图6 4客户端加入新副本时扩充 图7 - i测试网络环境 图7 - 2 v a l u e t y p e 和接口测试比较图 图7 - 3 v a l u e t y p e 和接口写操作测试图 表1l c 例子 表2 v a l u e t y p e 测试环境 表3 读操作测试结果 表4 写操作测试结果 v i 东南大学学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。 我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过 研究成果,也不包含为获得东南大学或其它教育机构的学位或证书而使用过的材料。与我 同工作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示了谢意。 研究生签名:盘选 日期:研究生签名:丝竖日期: 竺! ! 垒! 魁 东南大学学位论文使用授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印 和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质 文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布( 包括 登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权东南大学研究生院办理。 究生签名:塞出丕导师签名:盟日期:丝! 啦筮蛰 第一章绪论 1 1 背景研究及意义 1 1 1 背景研究 第一章绪论 随着i n t e r n e t 的广泛运用,将应用扩展到局域网、广域网甚至i n t e r n e t 上已成为用户的普遍需求, 这样,分布计算成了新的热点”1 。一个健壮的分布计算框架将为分布应用软件的开发带来极大的好处。目 前,o l g 组织制订的c o r b a ( c o m m o no b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e ,通用对象请求代理体系结构) 标准与m i c o r s o f t 的c o m d c o m 标准、s u n 公司的j a v ar m i 标准一起形成了分布对象讦算领域的主流“。 其中以c o r b a 最为成熟。 c o r b a 核心部分是o r b ( o h j e c tr e q u e s tb r o k e ,对象请求代理) 。o r b 允许数据类型( 如整型、结构和 数组等) 在网络上作为操作参数或返回结果进行传输。o r b 还提供了种传递对象引用机制,当客户请求 某个对象提供的服务时,允许将目标对象的引用传递给客户,客户根据该引用与目标对象建立连接,通过 传递对象引用的方式来进行远程调用“2 ”。通过这种机制,对象可以透明地发出请求和接收响应,用户可 以在不了解实现交互细节的情况下,建立共享资源的应用。 c o r b a 体系结构里,通常的对象传递方式是传递对象引用( o b j e c t b y r e f e r e n c e ) 。为了调用一个对象服 务,客户必须拥有该对象的对象引用【2 j 。通过传递对象引用,避免了传递复杂对象的系统开销和通信开销, 在大多数情况下是合理、高效的。 o 瞒组织于1 9 9 1 年颁布了c o r b a 规范1 i 版本,在c o r b a 2 3 版本中,提出了对象传值( o b j e c tb yv a l u e ) 的概念。当客户请求对象服务时。不象通常的传递对象引用,而把目标对象传到客户端,在客户端创建一 个对象副本”“”在c o r b a2 4 2 版本中,正式增加了v a l u e t y p e 关键字,以实现对象传值“。 1 1 2 意义 随着分布应用的发展,在某些情况下,传递对象引用和使用对象引用访问对象显得低效和不自然”1 。 由于使用对象引用访问对象时,每次方法调用都将导致一个远程过程调用,在交互频繁的应用中,这种方 法所带来的网络开销不可忽视。对象引用方法适合于描述大的、行为复杂的对象,对于那些主要用于封装 数据、业务逻辑简单的轻量对象,特别是当接收方以只读方式访问对象时,对象引用方法及其所导致的远 程调用显碍十分累赘。一个可能的优化途径是将对象实现移至调用机器,将远程过程调用转化为本地方法 调用,这时需要对象按值传递。此外某些应用需要显示地在不同主机间拷贝一个对象( 包括它的实现和状 态) ,这是原来的c o r b a 对象引用传递方式所不能胜任的。最后,也是相当重要的一点是,c o r b a 对象的对 象引用方法与j a v a 对象天然的值语义之间存在本质区别。为保证两种分布对象模型的自然互接、实现对象 传递互操作,需要提供c o r b a 对象按值传递机制”。 c o r b a2 3 规范之前没有标准的对象按值传递途径,常用的方法是使用i d l 结构( s t r u c t ) 来描述,即用 i d l 结构类型描述对象状态信息,通过传递结构来传递对象和状态。它存在明显的不足:结构不支持继承, 因而不具有可扩展性:应用需自己维护对象在传递前后复杂的对象引用关系,不是标准方法,不利于系统 集成。 用于实现对象传值的数据类型v a l u e t y p e ,是一种介于结构和接口之间的数据类型“”3 ,具有结构与接 口两者优点,支持复杂状态的描述( 例如带递归和循环的任意图形) ,操作执行的本地性,以及具有继承 和抽象等性质。 对象传值解决了如何为c o r b a 环境下具有值语义的对象建模、如何按值传递对象等问题,具有良好 的平台、语言无关性和互操作性。对象传值的提出为应用开发者在接口设计时提供了另一种选择,他们可 以将某些对象设计为v a l u e t y p e 值类型咧。特别是,当应用程序明显需要一个对象的“副本”、一个对象基 本目的是封装数据、一个应用程序需要可预测性的高性能本地方法调用、一个应用程序需要传递一棵任意 复杂或者递归的树、图形数据结构,通过传递这些对象的副本,能满足应用需要或提高性能目的“”5 。”。 o r b u s 系统是东南大学自主开发的、遵从c o r b a 规范的软件系统“1 。本论文的主要工作是扩张o r b u s 的i d l c + + 编译器,以支持v a l u e t y p e 关键字。 东南大学硕士学位论文 1 2 研究现状 国内外有很多组织和公司已经意识到在c o r b a 系统中实现对象传值的重要性以及它的现实意义。有 关对象传值在特定c o i m a 系统中的实现秘v a i u e t y p e 在特定的c o r b a 编潭器中的扩充,国内外的许多组织 和公司都各自进行了不同程度的研究和探索。在产品化方面,支持对象传值的产品有b o r l a n d f l n p r i s e 的 v i s i b r o k c r 、美国华盛顿大学分布对象计算研究小组开发的t a o 等。国内的组织如国防科大的s t a r b u s 系统 等,对对象传值进行了研究和探索。 1 3 论文研究的主要内容 本论文根据c o r b av a l u e t y p e 规范,深入理解i d lc + 十编译器原理基础上,首先,提出了一种在c o r b a 系统中支持对象传值的交互模型,其次,对v a l u e t y p e 服务对象及其副本对象的一致性问题进行研究和讨 论,提出了种基于本地一致性的解决方案;最后,在o r b u s 开发平台上,实现了对象传值,在o r b u s 平 台的i d lc + + 编译器中扩充了v a l u e t y p e ,并对扩充后的o r b u s 系统进行性能测试和分析, 1 4 论文研究的难点 难点1 :如何在服务端和客户端进行v a l u e t y p e 对象的传递 v a l u e t y p e 对象在c o r b h 的o r b 两端( 服务端和客户端) 进行正确的传递,既涉及到编译器,还需要与 o r b 核心交互因此,论文所要解决的首要问题是描述c 0 r b a 系统下支持v a i u e t y p e 的交互过程。 难点2 :如何把带有v a l u e t y p e 的i d l 文件转化为抽象语法树 把带有v a l u e t y p e 的i d l 文件转化为棵抽象语法树,既涉及到v a l u e t y p e 规范,又涉及到i d lc 什 编译器前端编译原理,还和抽象语法树结构有关,又对i d lc + + 编译器后端遍历时特定信息查找、后端遍 历输出的算法产生直接影响。只有深入地了解掌握三者的本质、原理和功能,才能完成抽象语法树构建。 所以i d l 文件转化为抽象语法树是本课题的主要问题。 难点3 :如何对v a l u e t y p e 进行编码与解码 编码过程是服务端如何识别出v a l u e t y p e 中的所有状态成员数据,及v a l u e t y p e 的特定标识等信息, 并把它们以定的格式,传递到o r b 。解码过程是客户端如何“还原”已经编码的数据。 v a l u e t y p e 中状态成员数据可以是c o r b h 规范中所有其它数据类型。而且具有继承、抽象、v a l u e b o x 等特性。由于v a l u e t y p e 映射规范繁杂,不同情况有不同的映射规则。这种情况下,增加了编码与解码的 难度。 难点4 :对象副本一致性问题 当v a l u e t y p e 对象副本被传递到客户端本地后,解决副本和服务端v a l u e t y p e 对象之间数据一致性问 题,将会使v a u e t y p e 在原来基础上,有更宽广的应用。但是由于v a l u e t y p e 特性,如何保证副本之间的 一致性,采用何种方式来维护一致性,是论文要解决的关键问题之一。 1 5 论文组织 本论文的组织如下: 第一章绪论。主要介绍了课题的研究背景及意义。 第二章相关技术简介。主要论述了和本论文有关的v a l u e t y p e 概念、本系统的开发平台o r b u s 系统、 以及i d lc + + 编译器原理和l e x 和y a c c 的简单介绍。 第三章v a l u e t y p e 映射规范。v a l u e t y p e 映射规范繁杂,所以对于v a l u e t y p e 规范单独进行介绍。 第四章v a l u e t y p e 在o r b u s 中的实现模型。本章对v a l u e t y p e 在服务端与客户端之间交互过程以及 v a l u e t y p e 对象传值工作原理进行了分析探讨。 第五章v a l u e t y p e 在i d lc + + 编译器中的系统实现。本章对v a l u e t y p e 在i d lc + 十编译器中的实现进 行了详细说明。 第六章服务端与客户端对象副本一致性。这一章首先对对象副本一致性问题进行分析,然后介绍了 l c 本地一致性协议算法,提出了一种可行的l c + t t l 算法,来保证对象副本一致性。 第七章系统测试。本章以o r b i s 为并发平台,以一个例子介绍了v a l u e t y p e 的用法,对v a l u e t y p e 对象的本地执行性能进行测试,验证v a l u e t y p e 交互过程的可行性和正确性。 第八章总结与展望。 2 第二章辐关技术简彳卜 第二章相关技术简介 本章介绍了与本论文工作密切相关的几种技术,其中包括v a l u e t y p e 、o r b u $ 开发系统、i d lc + + 编译 器原理、结构以及和i d lc + + 编译器有关的l e x 和y a c c ,为v a l u e t y p e 在i d lc + + 编译器中的研究与实现 作准备。 2 1v a u e t y p e 2 1 1v a l u e t y p e 简介 v a l u e t y p e 是一种介于结构和接口之间的数据结构,v a l u e t y p e 既可以有描述对象的状态数据成员, 也可以有对这些状态数据成员进行操作的方法,从一点上说,v a l u e t y p e 和一般的程序设计语言中类对象 的描述很相似“。和其它 d l 数据类型相比它具有如下的特点:用来描述复杂对象如任意复杂或者递 归的树、图形,这个特性是其它简单的i d l 数据类型( 如结构) 所不能描述和表达的;虽然i d l 中的接口 可以描述此类复杂对象,但是接口是远程调用的,不具有本地性,v a l u e t y p e 的操作是本地性的。在它们 所使用的本地上下文使用,就象程序设计语言中类对象实例的方法调用样,在本地进程地址空间执行, 这样可以有效地提高本地的执行效率;v a l u e t y p e 既支持p u b l i c 的数据成员又支持p r i v a t e 的数据成员, 也支持继承和抽象”“1 。 v a l u e t y p e 的本质特征是:v a l u e t y p e 的实现总是本地的”。v a l u e t y p e 总是与它的实现联系在一起, 这和接口所表现的对象引用与对象实现分离特性不同。当v a l u e t y p e 作为参数传递时,接收上下文将在本 地生成一个新的对象,任何对该对象的访问都将是一个本地过程,不需构造远程请求,也不需要o r b 的介 入和管理“”1 ”, 2 1 2v a l u e t y p e 对象的传递 由于v a l u e t y p e 对象操作的本地性,v a l u e t y p e 中的操作不可能在服务端和客户端传递v a l u e t y p e 对 象自身,在c o r b a 中,服务端和客户端之问的交互通过接口来实现。如果一个v a l u e t y p e 对象要在o r b 的 两端( 服务端和客户端) 之间被传递,v a l u e t y p e 可以作为接口的一个参数或者返回值进行传递”1 当一个v a l u e t y p e 对象作为参数在o r b 上传递时,发送方( 服务端) 把v a l u e t y p e 的类型信息和状态数 据成员按一定的格式,进行“编码”,通过o r b 发送给接收方( 客户端) 。接收方收到发送方的信息后,根 据类型信息实例化一个新的“空”对象副本,然后“解码”相应接受到的状态数据至生成的对象副本中”。 2 20 r b u s 开发系统简介 2 2 1o r b u s 系统简介 o r b u s 系统( 1 1 版本) 是由东南大学自行研制开发的、面向对象的分布系统开发和应用平台“,目前的 版本已完全支持c o r b a2 4 规范。o r b u $ 系统提供了一个开放的,面向对象的分布计算环境,其开放性特 点使得基于该系统构建的应用系统具有良好的可伸缩性和可扩展性,实现单点集成和软件组件的即插即 用;面向对象的特点使得应用系统具有良好的可重用性和可移植性;分布特点使得应用系统可以充分利用 系统中的所有资源,提高运行效率。 0 i l b u s 系统可以广泛应用于工厂企业银行,电信医疗,教育等领域的应用软件的开发和集成,一 方面可以提高其集成效率。方便完成开发集成过程,保护已有的投资:另一方面可以增强所构建系统的可 伸缩性、可移植性和可重用性“1 。 2 2 20 r b u s 系统的组成 2 2 2 i 系统组成 o r b u s 系统主要由o r b u s 系统的o r b 核心( o r b u s 的监控系统和o r b u s 系统类库组成) ,o m gi d l 编译 器和图形化的服务程序配置和管理工具三部分组成“”1 。 东南大学硕士学位论文 o r b u s 系统组成以及i d l 编译器在该系统中的位置见图2 - 1 。 i d l 文件 ii i o r b 守护服务进程 图2 1o r b u s 系统组成 i d l 编译器的主要功能是把一个符合规范的用户i d l 文件映射生成相应的头文件、桩文件和构架文件。 2 2 2 2i d l 桩 客户端程序在执行前需要事先得到目标服务对象的一个对象引用,然后它就能够通过该对象引用指定 它所希望调用的目标对象,并通过指定的希望调用的操作名称以及该操作所要求的参数而完成对目标对象 的调用u 一1 。显然,在客户端程序中,还需要一个中间部件把客户端程序在本地利用对象引用的调用形式转 化成为适合于o r b 核心的传输的格式,该中间部件的实现方式之一就是i d l 桩。 因为i d l 是独立于任何编程语言的描述性语言,客户不能在宿主编程语言环境中用i d l 语言去调用需 要的服务。如果用户能够在编制客户端程序时得到目标对象接口的i d l 语言描述,为了在所使用的宿主编 程语言中调用i d l 定义的操作,用户可以调用一个把目标对象i d l 语言描述转化并映射到特定的编程语言 形式的桩。i d l 桩在这里所起的主要作用就是把请求从特定编程语言的表示形式转换为适于传递到目标对 象的形式。个对象接口的i d l 描述可以生成多种桩。 i d l 桩由特定编程语言的一组函数组成,它们构成了由i d l 接口定义映射得到的对象接口定义的本地 表示。i d l 桩是由i d l 编译器编译目标对象的i d l 接口描述文件而自动产生的。i d l 桩通过与客户端程序 一起联编,把客户应用和o r b 连接起来,使得客户调用远程对象和本地函数一样。 典型的i d l 桩的工作过程大致如下:客户端程序根据i d l 文件中的接口描述向i d l 桩发出服务对象所 提供的操作请求;i d l 桩接受请求后,首先将该请求操作中需传递到服务对象的参数根据类型编码成一定 的数据表示格式,然后利用它与o r b 的私有交互接口把调用请求交o r b 核,f i , 处理:当调用请求返回时,i d l 桩就将利用它与o r b 的私有交互接口接收的一定的数据表示格式的数据,解码成客户编程语言对应的参数 值,并按照对象成员函数或者普通函数的返回值、输入参数和输出参数的形式交还给客户。如果调用请求 在对象实现处理时产生了错误,i d l 桩将接收到一个异常信息,经过解码,i d l 桩自行生成一个本地异常 返回给用户“1 。 2 2 2 3i d l 构架 与i d l 桩类似,i d l 构架也是根据目标对象接口的i d l 描述,由i d l 编译器自动生成调用对象实现部 件。通过它,可以使o r b 核心对象适配器调用对象实现中的操作方法。对象实现则根据i d l 描述的接口 给出具体的实现例程。类似的,i d l 构架的向上调用方式也属于静态方式,只有在编译时目标对象接口的 i d l 描述是已知的情况下才可行而且,i d l 构架方式一般而言对于特定的对象适配器都经过了优化,其 运行效率较动态调用方式高。典型的i d l 构架的工作过程大致如下:对象适配器将用户调用请求通过函数 调用的方式传递给i d l 构架;i d l 构架接收请求之后,首先根据调用请求的操作名字查找到目标对象的该 操作,进入对该操作的处理过程;然后对调用请求中的参数列表进行解码,并使用这些参数调用对象实现 中该操作的实际实现函数;当实际实现函数执行完毕后,i d l 构架将参数列表、返回值或者异常信息进行 解码形成响应报文;最后通过i d l 构架将结果返回至对象适配器中。 4 第二章相关技术简介 o r b u s 系统的i d l 桩建立了目标服务对象在客户端程序中的映射对象,该映射对象起到了代理的作用。 而o r b u s 系统的i d l 构架则主要是一个循环判别和分支处理过程,它首先根据所接受到的客户调用请求中 被请求对象标志查找到相应的对象实现,然后根据被请求操作名称寻找到该对象实现的相应方法,使用请 求中携带的实际参数调用并执行该方法。最后返回处理结果和异常信息。 i d l c + + 编译器生成桩和构架的处理过程,都需要调用o r b 运行系统中的c + + 类库中的类及其方法。所 以,i d lc + + 编译器产生的桩和构架与o r b 运行系统息息相关。客户端程序,i d l 桩和运行系统c + + 类库通 过编译连接生成客户可执行代码;而对象实现程序,i d l 构架和运行系统c + + 类库通过编译连接生成对象 实现可执行代码“。 2 2 3i d lc 什编译器的原理和功能 0 m gi d l 语言不同于所有已有的程序设计语言,它是一种描述性语言,它有完整的语法规则和语义解 释,但是用它所描述的结果不能直接被编译执行,所以需要出现i d lc + + 编译器对i d l 文件编译生成可以 编译执行的文件。 2 2 3 1i d lc + + 编译器的原理 i d lc + + 编译器把i d l 文件预处理后,在l e x 中进行词法分析,把词法分析后的内码返回到y a c c 语法 分析器中进行语法分析,创建作用域栈并生成抽象语法树,再根据所需生成目标代码的映射规则对抽象语 法树进行遍历,输出相应的目标代码“”。 2 2 3 2i d lc + + 编译器的主要功能 在接受用户提交的i d l 文件后,对该文件进行词法和语法的正确性检查。并在此基础上,根据c o r b a 2 0 规范中的i d l 语言到c + + 语言的映射规则,将用户的i d l 文件映射生成相应的头文件,桩和构架。在i d l c + + 编译器工作过程中,还将生成有关的类型编码。该子系统实现了c o r b a 2 0 规范中规定的内存管理规则, 自动产生各种数据类型的编码。解码和分派客户请求的c + + 代码,支持使用“p l u gi n ”方式嵌入到v i s u a l c + + 6 0 集成开发环境。实用“硬编码”方式,显著提高了表示层处理的速度,从而提高了系统的吞吐量 1 1 7 】 2 2 4 编译器结构 2 2 4 1i d l 编译器的三个层次 、 编译器设计分为输入处理、抽象语法表示和目标代码输出三个层次,如图2 2 i n 所示。 在输入处理层,主要对输入的i d l 文件进行词法和语法分析,它为抽象词语法表示层和目标代码输出 层屏蔽了输入文件的词法和语法规则的差别,因此,当输入的i d l 文件的词法和语法规则改变时,例如当 c o r b a 规范的制订新的版本或因某些特殊的要求需扩展1 d l 语言规则时,需在输入处理层中改变相应的 词法和语法的分析规则。 抽象语法表示层为输入处理层和目标代码输出层之间提供了通信的机制,利用该层中的抽象语法树, 就可以将符合i d l 语法的i d l 文件以a s t 语法树的方式表示。抽象语法树中的节点则对应于i d l 语法单 位的c 什节点类,而在目标代码输出层中,则通过定义这些节点类的子类来得到该语法树。 在目标代码输出层中,重载a s t 节点类的一些操作。在这些操作中,可以通过嵌套的遍历整个a s t 语法树来生成编译器所需的特定语义目标代码。 东南大学硕士学位论文 输入处理层 抽象语法表示层 目标代码 输出层 图2 - 2o r b u s 系统中i d l 编译器的分层结构 2 2 4 2i d lc + + 编译器前端工作过程 i d lc + + 编译器前端的处理流程如图2 0 所示f 1 7 】,i d lc + + 编译器前端根据i d l 描述文件生成抽象语法 树,它的具体功能包括: 1 分析命令行参数,以执行不同参数所对应的功能。 ( i ) 进行全局初始化,如全局变量的初始化和作用域栈的建立。 ( 2 ) 对i d l 输入文件进行预处理,该预处理符合a n s ic + + 语言的域处理规则。 ( 3 ) 对输入i d l 文件进行l e x 词法分析和y a c c 语法分析。如果输入文件的词法和语法规则错误,则显 示错误位置。否则根据分析结果生成一棵a s t 语法树来表示该i d l 文件 i d l 文件 经预处理的文件返回内码 当前作用域的a s t 节点 当前作用域的a s t 节点 当前分析结果新建a s t 节点原a s t 语法树 修改后的a s t 语法树 图2 - 3 i d lc + + 编译器前端的处理流程 2 2 4 3 抽象语法树 抽象语法树( a s t 、a b s t r a c ts y n t a xt r e e ) 中记录了指向各节点的指针,这些节点用足够多的手段记 录了它在i d l 文件中的定义信息。并且,这些节点提供了充分的成员函数,供i d lc + + 编译嚣后端遍历“。 6 第二章相关技术简介 例如,当一个i d l 文件如图2 - 4 所示,通过前端处理后,被“扫描”到抽象语法树上的情况如图2 - 5 所示。 图2 - 4 :i d l 例子 2 2 4 4i d lc + + 编译器后端工作过程 i d lc + + 编译器后端则通过遍历前端生成的抽象语法树,对语法树的每一个节点都生成一段相应的桩 构架的c + + 语言代码。后端所生成的c + + 语言代码的形式遵从c o r b a2 4 2 规范中i d l c + + 映射的规定。而 且,可以将各种数据类型的编码解码部分预先生成为桩构架的代码,而不通过c d r 类的解释过程来进行 编码和解码。其编码的效率比动态调用的情况有较大的提高“”3 。i d l c + + 编译器后端的具体工作过程介绍: ( 1 ) i d lc h 编译器后端( o c b e ) 根据所需完成的功能派生相应的a s t 语法树的节点类。 ( 2 ) 重载前端中创建a s t 节点类的操作,并使用该操作创建为建立后端而得到的派生的a s t 节点类。 这样,当使用y a c c 进行语法分析时,创建的a s t 的语法树就由后端派生的a s t 节点类的实例组成。 ( 3 ) 在这些派生节点类中定义或者重载一些操作来进行各个节点类所对应的i d l 语法结构到目标代码 的映射。i d lc + + 编译器前端在生成a s t 语法树之后,将会调用被派生节点类重载的操作,在该操作中, 通过嵌套调用其他节点类的操作来遍历整个a s t 语法树,并输出整个i d l 文件的编译结果。 2 3l e x 和y a c c 介绍 2 3 1l e x 概述 l e x 源程序是用一种面向问题的语言写成的。这个语言的核心是正规表达式用它描述输入串的词法结 构【1 5 1 9 j o 。在这个语言中用户还可以描述当某一个词形被识别出来时要完成的动作,例如在高级语言的词 法分析中,当识别出一个关键字时,它应该向语法分析器返回该关键字的内部编码。l e x 并不是一个完整 的语言,它只是某种高级语言的扩充,因此l e x 没有为描述动作设计新的语言,而是借助其宿主语言来 描述动作。 如图2 - 6 l e x 示意图【l q ,l e x 词法分析器自动的把表示输入串词法结构的正规式及相应的动作转换成 一个宿主语言的词法分析程序,名为y y l c x ,该程序将识别出输入串中的词形,并且在识别出某词形对完 成指定的动作1 l e x 源程序 - i l e x l 一,y y l e xi _ j 输入串广1 单词符号串 一:竺一卜一 图2 - 6l e x 示意图 2 3 2y a c c 概述 y a c c 语法分析是建立在词法分析的基础上的,y a c c 源程序是用户用y a c c 提供的一种类似b n f 语言写的要处理的语言的语法描述。y a c c 会自动的将这个源程序换成用l r 方法进行语法分析的语法分 析程序y y p a r s e ,用户通过调用该程序进行语法分析【1 8 t ”捌。在y a c c 源程序中除了语法规则外,还要包括 7 查塑查兰堡主兰垡堡苎 当这些语法规则被识别出来时,即用它们进行规约时要完成的语义动作,语义动作是用c 语言写的程序段。 这里语法分析的输出是一棵语法树【1 8 】。 图2 - 7 示意了y a c c 的语法分析过程【1 8 】。 单词符号串 厣丽吲! 竺竺, 陵竺 l 2 3 3l e x 和y a c c y a c c 源程序 图2 7y a c c 示意图 词法规则 语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 非接触式测量方法研究-洞察及研究
- 农产品期货套期保值创新创业项目商业计划书
- 园林植物特色康复中心创新创业项目商业计划书
- 智能农业灌溉创新创业项目商业计划书
- 智能家居浴室智能化方案创新创业项目商业计划书
- 2025年教育精准扶贫项目实施效果与农村教育质量提升研究报告
- K2教育中STEM课程实施效果评估:2025年教育变革视角报告
- 文化遗产数字化保护与数字博物馆建设的融合发展报告
- 2025年BIM在建筑工程项目施工进度优化中的应用报告
- 智慧交通系统交通流量预测在城市交通信号灯控制中的应用与2025年技术革新报告
- 2025新版企业员工劳动合同范本
- 2025年全国版图知识竞赛(中学组)历年参考题库含答案详解(5卷)
- 2025年富县辅警考试题库(附答案)
- 口才与演讲训练教程(第四版)课件2-2普通话训练
- 新教师三年职业成长规划
- 理化检测员考试题及答案
- 2026届张家港市达标名校中考语文模试卷含解析
- 应急疏散培训课件
- 广东省深圳市福田片区2025届数学七上期末质量检测试题含解析
- 柏拉图教育思想体系解析
- 灵芝孢子油培训
评论
0/150
提交评论