(计算机科学与技术专业论文)支持容错的corba事件服务的设计与实现.pdf_第1页
(计算机科学与技术专业论文)支持容错的corba事件服务的设计与实现.pdf_第2页
(计算机科学与技术专业论文)支持容错的corba事件服务的设计与实现.pdf_第3页
(计算机科学与技术专业论文)支持容错的corba事件服务的设计与实现.pdf_第4页
(计算机科学与技术专业论文)支持容错的corba事件服务的设计与实现.pdf_第5页
已阅读5页,还剩56页未读 继续免费阅读

(计算机科学与技术专业论文)支持容错的corba事件服务的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西北工业大学硕士学位论文摘要 摘要 过去十年中,分布式对象技术得到了迅速发展并在制造、金融电信、保险和 交通运输领域得到了广泛的应用。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 的高可用性和高可靠性 的要求越来越迫切。容错是提供高可靠性的关键机制。虽然0 m g 组织早在2 0 0 1 年就推出了容错c o r b a 规范,国内外很多单位也在进行容错c o r b a 的研究,然而 到目前支持容错c o r b a 的中间件产品还很少。所以,现在在基于c o r b a 的中间件 平台开发可靠的应用,很大程度上还需要应用开发者在应用级别进行容错的开 t l 及。 本文结合作者在分布式电力监控系统中的研究与开发,介绍了一个支持容错 的c o r b a 事件服务的设计与实现。由于电力监控系统的需求,该事件服务采用了 p u s h p u s h 的数据传递方式,还提供了事件订阅、事件退订和事件过滤等功能。 事件服务的容错采用了对象冗余的方式,在不同主机上运行多个事件服务副本, 这些副本的身份是平等的,它们随时准备响应客户请求。但每个客户请求只能由 其中一个副本去执行。各副本之间的状态同步采用一种改进的主动复制方式:一 个事件服务副本执行客户请求之后,将自身状态的变化通过c o r b a 接口调用通知 给其它副本。除了这种同步措施,还提供了周期性同步,每隔一段时间由当前网 络中启动时间最晚的事件服务对其它副本进行同步。目前,该事件服务已通过测 试并在电力监控系统中投入使用,实践表明其符合容错应用的要求。 由于该事件服务与电力监控系统的应用结合比较紧密,故通用性较差。参考 a c et a o 的容错c o r b a 模型,本文又给出了一个完全符合c o r b a 规范的容错事件 服务的设计方案,该方案给出了容错事件服务的总体结构,并讨论了状态同步、 复制方式和复制管理器配置方面的设计。 关键词:分布式对象,o m g ,c o r b a ,容错,事件服务 a b s t r a c t d u r i n gm ep a s t10y e a r s ,d i s t r i b u t e do b j e c tt e c l m 0 1 0 9 yh a sd e v e l o p e dv e 巧缸t a j l dh a sb e e nw i d e l ya p p l i e di nm a n yd o m a i n ss u c h 嬲m a n u f a c n i r e 、 f i n a n c e 、 t e l e c o 舢n u l l i c a t i o n 、i n s u r a l l c ea n dt r a m c c o i 出ai sas p e c i f i c a t i o no fd i s t r i b u t e d o b j e c tt e c h n o l o g y a si t s i n d e p e n d e n c eo f n e t w o r kp r o t o c o l s 、 p r o 斟a i r 吼1 n g l a n g u a g e sa n ds o r w a r ep l a t f o m ,i th a sb e c o m em o r ea n dm o r ei m p o r t a n ti nb u i l d i n g 1 a r g eh e t e r o g e n e o u sd i s t r i b u t e ds y s t e m c o r b as p e c i f i c a t i o np r o v i d e sb a s i co b j e c t s e i c e st 1 1 a tc a nb er e u s e d t h e s eo b je c ts e r v i c e se e c t i v e l y r e d u c et l l ec o s to f s o r w a r ed e v e l o p m e n t 、c o n f i g u r a t i o na i l dm a n a g e m e n t c o r b ae v e n ts e n ,i c ei so n e o fc o i 出ac o r es e r v i c e s c o r b ae v e n ts e n ,i c ep r o v i d e sd e c o u p l e d 、a s y n c l l r o n o u s c o m m u n i c a t i o nm e c h a n i s m ,w h i c hb u i l d sau 1 1 i v e r s a l d i s t r i b u t e dc o m m u n i c a t i o n m o d e l w i t ht h ee v e ri n c r e a s i n g 锄o u n to fc o r b aa p p l i e di nm a n yc r i t i c a ld o m a i n s , t h er e q u i r e m e n to f1 1 i g hr e l i a b i l i t ya i l dh i g ha v a i la _ b i l i t yo fc o r b a b e c o m em o r ea r l d m o r eu r g e n t f a u l t t o l e r a n ti sa 1 1e 舵c t i v ew a yt op r o v i d eh i 曲r e l i a b i l i 够a l t h o u 曲 o m gs p e c i f i e df t - c o r b as p e c i f i c a t i o ni ne a r l y2 0 01 ,a 1 1 dm a n y i n s t i t u t e sa r ed o i n g r e s e a r c hi nf t - c o i m a ,c o r b ap r o d u c t ss u p p o r t i n gf i a u l t t o l e r a n ta r es t i l lv e r yf e w t h e r e f o r e ,w h e nd e v e l o p i n gr e l i d b l ea p p l i c a t i o nb a s e do nc o r b a m i d d l e w a r e ,t h e d e v e l o p e rs t i l ln e e dd oa 1 0 t 、o r ko nf a u l t - t o l e r a l l “a 唱e l yi nt h e 印p l i c a t i o nl a y e r t h i sa n i c l ed e s c r i b e st h ed e s i g na n di m p l e m e n t a t i o no faf a u l t - t 0 1 e r a n te v e n t s e i c e ,r e f e r r i n gt ot h ea u t h o r sr e s e a r c ha j l dd e v e l o p m e n ti nap o w e rm o n i t o r i n g s y s t e m d u et ot h er e q u i r e m e n to fp o w e rm o n i t o r i n gs y s t e m ,t h i se v e n ts e l c eu s m g p u s h p u s hm o d e lt ot r a j l s m i td a t a np r o v i d e s 如n “o n ss u c ha se v e n ts u b s c r i p t i o n 、 e v e n ts u b s c r i p t i o n 、c a j l c e l i n ga n de v e n tf l l t e r i n g t h ee v e n ts e r v i c ea d o p t sa no b j e c t r e d u l l d a n c ym 甜m e rt oa c h i e v ef a u l t t o l e r a n tp 眦p o s e t h e r ea r es e v e r a lr e p l i c a s o f e v e n ts e r v i c ea 1 1 dt h e yi 1 1 1 1 a b i td i 疵r e n th o s t s t h e s er e p l i c a sa r ep e e r so n ea n o t h e r b u tw h e nac l i e n tr e q u e s t st h ee v e n ts e r v i c e ,o n l yo n eo ft h er e p l i c a se x e c u t e st h e r e q u e s t a r e rar e p l i c ae x e c u t e sar e q u e s to ft h ec l i e n t ,i tm u s tc o n s i s tt h eo t h e r r e p l i c a sw i t hi t sc h a n g eo fs t a t eu s i n gc o r b a m e t h o di n v o c a t i o n s b e s i d e s ,t h e r e p l i c aw i t ht h el a t e s ts t a 呻t i m ei sr e s p o n s i b l e f o rm a i n t a i n i n ga ur e p l i c a s c o n s i s t e n c yf r o mt i m et ot i m e c u r r e n t l y ,t h ee v e n ts e r v i c eh a sb e e nt e s t e da n dp u t i n t ou s ei np o w e rm o n i t o r i n gs y s t e m s i n c et h i se v e n ts e r v i c er e l a t e sc l o s et op o w e rm o n i t o r i n gs y s t e m ,i ti sd i m c u l tt o b ea p p l i e dt oo t h e rs y s t e m b yr e f e r r i n gt ot h ef t - c o i m am o d e lo fa c et a o ,t h i s l l i 西北工业大学硕士学位论文a b s 仃a c t a r t i c l ea l s og i v e sad e s i g no ff i a u l t t o l e r a n te v e n ts e r v i c et l l a tc o m p l e t e l yc o n f o m st o c o i m a s p e c i f i c a t i o n t l l i sd e s i g ni n t l 0 d u c e st 1 1 ea r c l l i t e c t u r eo ff j a l l l t - t o l e r a n te v e n t s e r v i c ea 1 1 df o c u so nt h ed e s i g i lo fs t a t ec o n s i s t e n c ya 1 1 dr 印l i c a t i o ns t y l e s k e y w o r d s :d i s t r i b u t e do b j e c t ,o m gc o r b a ,f a u l t t 0 1 e r a n t ,e v e n ts e i c e l v 西北工业大学 学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读学位期间论文工作 的知识产权单位属于西北工业大学。学校有权保留并向国家有关部门或机构送交论文的复 印件和电子版。本人允许论文被查阅和借阅。学校可以将本学位论文的全部或部分内容编 入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 同时本人保证,毕业后结合学位论文研究课题再撰写的文章一律注明作者单位为西北工业 大学。 保密论文待解密后适用本声明。 学位论文作者签名:嬗 湖年牛月z 日 指导教师签名: 夕矽7 年牛妙日 西北工业大学 学位论文原创性声明 秉承学校严谨的学风和优良的科学道德,本人郑重声明:所呈交的学位论文,是本 人在导师的指导下进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容 和致谢的地方外,本论文不包含任何其他个人或集体已经公开发表或撰写过的研究成 果,不包含本人或其他己申请学位或其他用途使用过的成果。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式表明。 本人学位论文与资料若有不实,愿意承担一切相关的法律责任。 学位论文作者签名:蕴竺 ? p d 7年毕月二日 西北工业大学硕士学位论文第一章绪论 1 1 选题背景及意义 第一章绪论 近十年来,随着c l i e n t s e r v e r 计算技术和面向对象的软件开发技术的迅速 发展和相互融合,分布式对象技术脱颖而出并逐渐成为分布异构环境下应用集成 和系统开发的主流技术和计算范型。它使得在多层结构的分布式环境中,应用程 序不再以整体的形式提供给用户,而是成为运行在网络上的服务对象。分布式对 象技术利用对象的特性大大简化了分布计算的复杂性,具有以下优点:接口定义 与功能实现分离,可为特定应用提供优良服务,实现透明操作,便于已有异构系 统的集成,基于构件开发,良好的可重用性等。因此,在制造、金融电信、保险 以及交通运输领域,分布式对象技术得到了广泛的应用。 c 0 r b a 技术作为解决分布式异构环境下应用系统互联和互操作的标准目前已 经被众多的厂家和用户所接受。由于c o r b a 独立于网络协议、独立于编程语言、 独立于软硬件平台,极大简化了分布式应用的开发,为越来越多的分布式系统所 采纳,特别是在大型分布式异构软件系统的领域( 电信、金融和监控系统中) , c o r b a 正得到越来越广泛的重视和应用。特别是o m g 组织1 9 9 8 年公布了c o r b a 2 3 版之后,c o r b a 技术日臻完善。但是,随着e o r b a 在关键技术领域应用程度的加 深,c o r 队缺乏容错能力难以满足许多分布式应用对高可靠的要求。 c o r 队实现了对象的位置透明性、实现透明性、执行状态透明性和通信机制 透明性,只要按照o m g 组织制定的i d l 语言对c o r b a 对象所提供的服务进行描述, 客户和服务对象之间就可以透明的交互运行。c o r b a 的这种特性被称为“软总线”。 但是,仅依靠o r b 系统还不能够有效地减轻应用软件开发、配置和管理的代价。 0 m g 组织提出的为c o r b a 体系结构提供的基本对象服务,正是希望将分布式应用 软件的开发、配置和管理中的基本服务功能规格化,从而实现了这些服务功能的 可重用性,以降低开发、管理的开销。 c 0 r b a 事件服务就是0 m g 组织提出的c o r b a 核心服务之一。在一个典型的 c o r b a 程序中,c o r 队对象之问的调用是对象之间的通信的最常用方式。但是, 这种通信方式具有同步与单目的特点:同步通信要求通信的双方必须同时就绪才 能进行通信,经典的同步通信方式还导致客户程序必须阻塞以等待服务对象的回 复;单目通信是指客户程序只能与某一特定服务对象进行一对一通信。但在某种 西北工业大学硕士学位论文 第一章绪论 应用场合,例如股票交易或者实时监控、网络管理系统中,更适合采用异步的、 一对多的通信方式。而c o r b a 事件服务就提供了这样一种松散的、异步的通信方 式。c o r b a 事件服务具有以下几个特征:事件的发送者和接受者之间不需要直接 打交道;事件发送和接受是异步的;事件在传递中途是否经过缓冲或分发,对双 方是透明的。 随着c 0 r b a 技术向关键领域应用的不断拓展,对c o r b a 技术及产品的高可靠 性和高可用性的需求越来越迫切。o m g 组织也在2 0 0 1 年制定了容错c o r b a 规范。 虽然容错c o r b a 规范早已推出,国内外很多单位也在进行容错c o r 队的研究,然 而到目前支持容错c o r 队的中间件产品还很少。所以,现在在基于c o r b a 的中间 件平台开发可靠的应用,很大程度上还需要应用开发者在应用级别进行容错性的 开发。 根据作者在综合电力自动化系统中遇到的一些问题及解决方案,本文给出了 一个在应用级别容错的c o r b a 事件服务的设计与实现方案。采用对象冗余的方式 进行容错,即事件服务对象拥有多个副本,这些副本运行在不同的主机上。文章 详细介绍了容错事件服务的接口设计、容错策略和副本状态一致性的维护。由于 该事件服务与电力监控系统联系紧密,接口设计与c o r 队规范不一致。所以文章 最后给出一个完全符合c o r b a 规范的容错事件服务的设计方案。 1 2 课题内容及本文工作 全文组织为六章,第一章为绪论,概述了选题背景及意义,第二到五章为论 文的主体部分,第六章为结束语,总结全文,并展望进一步研究的方向。 第一章绪论 介绍了选题背景及意义,全文组织结构。 第二章容错c o r b a 基础 介绍了c o r b a 模型的原理和体系结构,以及容错c o r b a 的基本原理 及常用模型。 第三章事件服务 介绍了c o r b a 事件服务的原理和规范。 第四章一个电力监控系统容错事件服务的实现 首先简要介绍了y s z 2 0 0 2 电力监控系统。介绍了电力监控系统中支 持容错的事件服务开发的过程,包括设计和实现中所遇到的问题及 解决方案。并对其性能进行了定性分析。 第五章容错事件服务的一种设计 2 西北工业大学硕士学位论文第一章绪论 参考著名的开源c o r b a 实现a c e t a o 的容错c o r b a 结构,提出了容 错事件服务的一个设计方案。 第六章结束语 对论文全文进行总结,并指出需要改善的地方,为今后进一步的研 究提出方向。 西北工业大学硕士学位论文第二章容错c o r b a 技术 第二章容错c 0 r b a 技术 本章主要介绍容错c 0 a 及事件服务的相关技术。第一部分主要对分布式 对象结构及c o 认技术作简要介绍;第二部分介绍容错c o r b a 的技术基础; 第三部分主要阐述c o i m a 事件服务。 2 1 分布式对象结构 在硬件设备高速发展的今天,越来越复杂的软件系统运行于不同的硬件平台 之上,同时提供越来越方便的服务。但随之而来的问题也变得越来越复杂。 多种方案被提出来解决上述问题。2 0 世纪8 0 年代,面向对象技术逐渐兴起。 面向对象技术以其封装、继承和多态的特性顺应了软件发展的新的需求,良好的 重用性使得软件开发在理论上像搭积木一样简单。到目前为止,支持面向对象的 语言很多,最具代表性的是c + + 和j a v a 常规的面向对象技术可以直接应用于分布式系统的分析和设计,然而传统的 面向对象设计环境,如c + + ,在直接用于分布式系统的程序设计时遇到了问题。 传统的对象与访问该对象的程序只能存在于同一进程中,并且只有相关程序设计 语言的编译器才能创建这些对象并感知这些对象的存在,而外部进程无法了解和 访问这些对象。这意味着在常规的分布式客户端服务器应用中,客户进程不可 能直接访问异地服务进程中的常规对象。为了解决这个问题,人们提出了分布式 对象的概念o 】【。 分布式对象技术采用面向对象的多层客户端服务器计算模型,该模型将分 布在网络上的全部资源都按照对象的概念来组织,每个对象都有定义明晰的访问 接口。创建和维护分布对象实体的应用称为服务器,按照接口访问该对象的应用 称为客户。服务器中的分布对象不仅能够被访问,而且自身也可能作为其他对象 的客户。因此,在分布式对象技术中,客户与服务器的角色划分是相对的或多层 次的。支持客户访问异地分布对象的核心机制称为对象请求代理( 0 b j e c t r e q u e s tb r o k e r 0 r b ) 。o r b 处于分布对象技术的核心位置。 我们把独立于特定的程序设计语言和应用系统、可重用和自包含的软件称为 软构件。分布式对象是一种典型的软构件。基于分布对象技术的分布式应用开发 就是分布式对象的开发和组装。通过重用已有的构件,使用构件对象模型的软件 西北工业大学硕士学位论文第二章容错c o r b a 技术 开发者可以像搭积木一样快速构造应用程序。这样不仅可以节省时间和经费,提 高工作效率,而且可以产生更加规范、可靠的应用软件“”。 2 2c o r b a 技术分析 目前,分布式对象技术已经成为建立服务应用框架和软件构件的核心技术, 在开发大型分布式应用系统中表现出强大的生命力。c o r 队( t h ec o 嗍o no b j e c t r e q u e s tb r o k e ra r c h i t e c t u r e :通用对象请求代理结构) 是一个分布式的面向 对象的应用架构规范,它是由0 组织在上世纪8 0 年代末提出,在9 0 年代逐步 完善,现在已形成软件行业普遍认可的标准c 0 r 队规范2 3 。 与c 0 m d c o m 技术在扩展性方面的局限,和r m i e j b 在实现语言方面的不足 相比,c o r b a 是一种异构平台下的语言无关的对象互操作模型嘲。也就是说,c o r b a 的设计是独立于平台和语言的,因此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 ) 映 射的语言。 2 2 1c 0 r 队的基本构件 c o r b a 对象管理体系结构由应用程序对象、公共设施、对象请求代理和对象 服务组成,如图2 1 所示。其中公共设施又分成两类,横向设施( h o r i z o n t a l f a c i l i t i e s ) 和纵向设施( v e r t i c a lf a c i l i t i e s ) 。 应用对象 ( a p p l i c a t i o n 0 b j e c t s ) 公共设施 ( c o 唧o n f a c i l i t i e s ) 对象请求代理( o r b ) 对象服务 ( o b j e c ts e r v i c e s ) 图2 一lc o r b a 体系结构 ( 1 ) 应用程序对象是由各个应用者自行开发的实体,它们并不是o m g 组织制 定的标准。应用程序对象可以使用c o r b a 提供的各种对象服务。 ( 2 ) 横向公共设施( h o r i z o n t a lf a c i l i t i e s ) 是指在通用领域内定义的对 6 西北工业大学硕士学位论文第二章容错c o r b a 技术 象。信息管理、网络管理、系统管理、任务管理和用户接口等都属于通 用领域。 ( 3 ) 纵向公共设施( v e r t i c a lf a c i l i t i e s ) 是指在专用领域内定义的对象。 电信、电力、财政、商务、卫生等都属于专用领域。 ( 4 ) 对象请求代理是公共对象请求代理结构的基础。基本职责是解决对象应 用的请求和建立对象引用之间联结,通过标准接口,使这种联结独立于 所使用的硬件和软件的平台,从而保证了对平台的透明性以及对操作系 统、网络协议和编程语言的透明性。 ( 5 ) 对象服务是为公共设施和各种应用对象提供的基本服务,如命名服务、 时间服务、事务处理服务、通知服务和对象交易服务等等。 2 2 2c o r 队的基本组成 最新的c o r 队规范主要包含以下内容: ( 1 ) 0 r b 核心( o r bc o r e ) ; ( 2 ) o m g 接口定义语言( o m gi n t e r f a c ed e f i n i t i o nl a n g u a g e ) ; ( 3 ) 语言映射( l a n g u a g em a p p i n g ) ; ( 4 ) 码根和框架( s t u ba n ds k e l e t o n ) ; ( 5 ) 动态调用和分发( d y n 硼i ci n v o c a t i o na n dd i s p a t c h ) ; ( 6 ) 对象适配器( 0 b j e c ta d a p t e r ) ; ( 7 ) 接口库和实现库( i n t e r f a c er e p o s i t o r ya n di m p l e m e n t a t i o n r e p o s i t o r y ) ; ( 8 ) o r b 之间的互操作( i n t e r o p e r a b i l i t yb e t w e e no r b ) 。 图2 2 描述了c o r b a 的主要组成部分和他们之间的关系。下面对各个组件进 行详细的论述。 1 0 阻核心 0 r b 的职责就是解决对象引用的请求和建立应用对象的联结,通过标准接口 使这种联结独立于软硬件平台。简单的说,o r b 的任务就是把客户发出的请求传 递给目标对象,并把目标对象的执行结果返回给发出请求的客户。由此可以看出, o r b 的最重要特征是,提供了客户和目标对象之间的交互透明性。具体的说,它 主要屏蔽了以下内容: ( 1 ) 对象位置:客户不必知道目标对象的物理位置。它可能与客户一起驻留 在同一个进程中或同一机器的不同进程中,也可能驻留在网络上的远程 机器中。 ( 2 ) 对象实现:客户不必知道有关对象实现的具体细节。例如,设计对象所 7 西北工业大学硕士学位论文 第二章容错c o r b a 技术 用的编程语言,对象所在节点的操作系统和硬件平台等。 对所有o r b 实现都相同的接口 对每种对象类型都有单独的码根和框架 可能有多个对象适配器 与0 r b 相关的接口 图2 - 2c o r b a 对象请求接口结构 ( 3 ) 对象执行状态:当客户向目标对象发出请求时,它不必知道当时目标对 象是否处于活动状态。此时,如果目标对象不是活动的,在把请求传给 它之际,o r b 会透明的将它激活。 ( 4 ) 对象通信机制:客户不必知道o r b 所用的下层通信机制,如,t c p i p 、 管道、共享内存等。 客户程序用对象引用来说明目标对象。当客户端程序得到对象引用之后,就 可以调用该对象引用的操作了。这是,客户端的0 r b 会根据对象引用中的信息来 定位对象的实现,并确保该对象实现可以接受请求。 由于o r b 可以根据对象引用来定位服务器,因此客户端程序不必关心对象是 在哪里实现的。客户端对远端对象发起调用,就好像调用本地对象一样,从而实 现了c o r 队位置的位置透明特性。 8 用 用 调 调 行 行 e f 丌u n儿v 一一一一 西北工业大学硕士学位论文第二章容错c o r b a 技术 在客户端发起调用的时候,输入参数格式与特定平台和特定语言都有关,客 户端的o r b 负责将它们编码成可以在网络上传送的格式,或称在线格式( o n l i r e f o r 眦t ) ,这一过程称为编组( m r s h a l l i n g ) 。这种“0 1 0 l ”的格式在网络上传 送后到达服务端的o r b ,服务器端的0 r b 负责将这些在线格式“还原”成本地所 使用的特定平台和语言的格式,这一过程称为“解组”。 与此相反,当服务器端调用结束之后,服务器端0 r b 负责将输出参数和返回 参数编码成在线格式,并经网络传送给客户端o r b ,客户端o r b 再将这些在线格 式还原成本地所使用的特定平台和语言的格式,作为输出参数和返回参数送给客 户端程序。 正是由于编组和解组的引入,使得客户端和服务器端的平台和语言可以不 同,带来了c o r b a 的平台独立和语言独立的特性。 2 接口定义语言( i d l ) 和语言映射 伽gi d l 用来定义c o r 队对象和应用组件之间的接口。它不是过程语言,它 只能定义接口,而不是去实现某个接口这就很自然得将接口和对象实现分离, 使得可以用不同的语言来实现对象,而他们之问却又可以进行互操作。 o m gi d l 的语法与c + + 类似( 包括c + + 的预处理语句) ,另外增加了一些支持 分布式处理的关键字( i n 、o u t 、和i n o u t 等) 。0 m gi d l 的框架主要包括模块 ( m o d u l e ) 、接口( i n t e r f a c e ) 、操作( o p e r a t i o n ) 和数据类型四种元素。模块 ( d u l e ) 含有许多按功能进行分组的接口,形成附加的分层结构,因此,模块 定义了一个命名空间;接口( i n t e r f a c e ) 定义了数据和操作( 或称为方法) 供 客户调用,接口中可以包括类型、常量、属性和异常的声明,实际上,i d l 接口 定义了c o r b a 中的类;操作( o p e r a t i o n ) 表示客户可以调用的处于对象中的服 务,操作特性指的是操作的参数和返回的结构类型,这样操作就定义了c o r b a 中 的方法;i d l 中的数据类型与高级语言中的数据类型相似,有基本类型、模板类 型、构造类型、复杂类型以及本地类型。 0 m gi d l 独立于任何编程语言,用i d l 编译器可以将它映射为其他常用的语 言。到目前为止,o m g 已经为c 、c + + 、s m a l l t a l k 、a d a 9 5 、c o b o l 和j a v a 的语 言映射制定了标准。对其它某些语言( 如p e r l 、m o d u l a3 ) ,感兴趣的组织已经 编写了相应的映射说明,目前尚未提交给o m g 。 3 码根和框架 码根是“s t u b ”一词的中文翻译,码根可以看作是客户程序代码在c o r 队一 侧的“存根”,它的作用是代表客户创建并发送请求。码根实际上是一段程序代 码,为接口中的每一个操作提供一种虚实现。从客户端的角度来看,码根仿佛提 供了对象的本地实现一客户端调用码根中的对象,并在调用结束后获得想要的结 9 西北工业大学硕士学位论文第二章容错c o r b a 技术 果。然而,码根实际上并不负责对象的实现,它只是远端对象在本地的一个“代 理”,这个“代理”接受来自本地客户的请求,将它编组( m a r s h a l l i n g ) 后,交 给0 r b 核心;远端操作返回后,这个“代理”又将返回参数和结果进行解组 ( u n r i l a r s h a l l i n g ) 后,以客户可以接受的方式返回给客户,使客户看起来操作 好像是由处于本地的码根实现的。码根的实际工作包括接受客户端程序的请求, 返回操作结果,以及前面提到的编组和解组。因此,码根一方面同客户端程序打 交道,另一方面又同o r b 核心打交道。 框架一词是“s k e l e t o n ”的中文翻译,框架也是一段程序代码,可以看作是 对象实现代码在c o r b a 一侧的“编程提纲”。框架的作用是把请求交给c o r b a 对 象实现,并把对象执行的结果封装,返回给客户端。框架一方面同对象实现打交 道,另一方面又同对象适配器打交道。 码根和框架都是自动生成的,不需要程序员手工书写,i d l 编译器会根据i d l 的接口定义自动生成相应的客户端码根和服务器端框架,每个i d l 中定义的接口 都会有自己的码根和框架。码根和框架都是静态的,一经生成便不再改变,除非 修改相应的i d l 并重新生成。 4 动态调用 除了可以通过码根和框架进行静态调用外,c o r b a 还支持两种动态调用方式: ( 1 ) 动态调用接口( 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 ) 一支持客户方 动态请求调用。 ( 2 ) 动态框架接口( d s i :d y n a j n i cs k e l e t o ni n t e r f a c e ) 一支持服务器方 动态对象调用。 可以把d i i 和d s l 分别视为通用的码根和通用的框架,它们由o r b 直接提供, 不依赖于所要调用的对象的接口。 客户端程序如果在编译时无法得知对象的详细信息,也没有i d l 编译后的码 根,就可以通过动态调用接口向远端对象发起调用。我们可以把d i i 看作一组标 准的a p i ,客户程序使用这些a p i 动态地发起一个c o r b a 调用,而不需要码根的 帮助,这时d i i 就动态地确定调用哪个对象、对象的操作以及操作的参数。所以 使用d i i 时,用户必须手工构造请求信息,包括相应的操作及有关参数等。 与客户端类似,服务器端有动态框架接口( d s i ) 与客户端客户可以通过 d i i 在没有码根的条件下调用请求类似,d s i 允许用户在没有静态框架信息的条 件下来获得对象的实现。 需要指出的是,虽然动态调用有更高的灵活性和对不同调用环境的适应性, 但这是由复杂的实现机制和执行效率的降低换来的。在实际中动态调用的耗时远 比静态调用多,两者有数十倍之差。 1 0 西北工业大学硕士学位论文第二章容错c o r b a 技术 5 对象适配器 对象适配器( o a ) 处于o r b 核心与框架、d s i 之间,它提供了服务器端对象 与o r b 核心之间的适配层,它为对象实现提供了大部分所需的0 r b 功能。它的引 入大大减轻了o r b 的任务,从而简化了o r b 的设计根据c o r b a 规范的定义,对 象适配器主要有以下作用: ( 1 ) 对象引用的生成与解释; ( 2 ) 根据对象引用找到它对应的对象实现; ( 3 ) 方法调用; ( 4 ) 交互的安全性; ( 5 ) 对象实现的激活( a c t i v a t i o n ) 与终止激活( d e a c t i v a t i o n ) ; ( 6 ) 对象实现的注册。 对象适配器需要同5 个组件打交道:0 r b 核心、动态框架接口、框架、实现 库以及对象实现。对不同的对象实现需求,如有关粒度、生命周期、策略等的不 同,会有不同的对象适配器。c o r 队2 2 以前的规范规定,所有的o r b 都应支持 一种标准的对象适配器一基本对象适配器b o a ( b a s i co b j e c ta d a p t e r ) 后来 在实践中发现,b o a 的规定过于宽泛,造成了不同的对象实现很难移植到不同的 对象适配器上。为解决这一问题,c o r b a 2 3 规范定义了一种新的对象适配器, 被称为可移植对象适配器p o a ( p o r t a b l eo b j e c ta d a p t e r ) 上,它能够提供对 象实现所需的一些核心服务。 6 接口库和实现库 0 r b 提供了两个用于存储有关对象信息的服务:接口库和实现库。接口库提 供了有关i d l 定义方面的信息,而实现库提供服务器端程序运行的有关信息。这 些信息包括如何定位对象实现,如何激活对象实现,还有一些其他的与o r b 和操 作系统相关的信息。 7 0 舳之间的互操作 在发布c o r b a 2 o 之前,o r b 产品的最大缺点是:不同厂商所提供的o r b 产品 之间并不能互操作。为了达到异构o r b 系统之间互操作的目的,c o r b a 2 0 规范 中定义了标准通信协议g i o p ( g e n e r a li n t e r o r bp r o t o c 0 1 ) 。g i o p 是互操作体 系结构的基础,它为0 r b 之间的通信定义了一种标准的传输语法和一组消息格式 【妇 g i o p 协议只是一种抽象协议,独立于任何特定的网络协议,在实现时必须 映射到具体的传输层协议或者特定的传输机制上。c o r b a 2 o 规范规定了如何以 t c p i p 协议为基础实现g 1 0 p 协议,这一更具体的协议标准称为因特网0 r b 间协 议i i o p ( i n t e r n e ti n t e r 一0 r bp r o t o c 0 1 ) 。由于t c p i p 是独立于供应商的最流 西北工业大学硕士学位论文 第二章容错c o r b a 技术 行传输协议,也是因特网的标准通信协议,因而i i o p 为o r b 提供了高度可操作 性。 除了对o r b 之间的互操作协议进行了标准化以外,c o r 队2 0 还规定了用于 支持互操作的对象引用的格式。对象引用对用户并不透明,0 r b 使用它来确定目 标对象的位置。c o r b a 2 o 给出了一个标准的对象引用格式i o r ( i n t e r o p e r a b i l i t y0 b j e c tr e f e r e n c e ) 。对象的i o r 提供的信息可用于在多个 不同的0 r b 上确定对象的位置。 2 2 2c o r b a 服务1 1 嘲 对象服务是为公共设施和各种应用对象提供的基本服务,包括命名服务 ( n 锄i n gs e r v i c e ) 、事件服务( e v e n ts e r v i c e ) 、事务处理服务( t r a n s a c t i o n s e r v i c e ) 、通知服务( n o t i f i c a t i o ns e r v i c e ) 、交易服务( t r a d e rs e r v i c e ) 、 生命周期服务( 1 i f e c y c l es e r v i c e ) 、安全服务( s e c u r i t ys e r v i c e ) 、持久性 服务( p e r s i s t e n c es e r v i c e ) 、关系服务( r e l a t i o n s h i ps e r v i c e ) 、外表化服 务( e x t e r n a l i z a t i o ns e r v i c e ) 、查询服务( q u e r ys e r v i c e ) 、特许服务( l i c e n s i n g s e r v i c e ) 、属性服务( p r o p e r t ys e r v i c e ) 、时间服务( t i m es e r v i c e ) 和对象 类集服务( o b j e c tc o l l e c t i o ns e r v i c e ) 等等。 ( 1 ) 命名服务:c o r b a 对象登记在命名服务中,它可根据对象的名字找出对 应的服务器中的对象引用。 ( 2 ) 事件服务:事件服务由一个或多个供应者( s u p p l i e r ) 、消费者 ( c o n s u m e r ) 、以及事件通道( e v e n tc h a n n e l ) 组成。事件通道是供应者和消费 者传递事件的媒介。供应者把要送给消费者的消息放到事件通道中,根据事件通 道的工作方式雅模式( p u s h ) 和拉模式( p u l l ) ,这些消息或者被推至消费者, 或者由消费者主动将他们从通道拉出。 ( 3 ) 事务处理服务:它确保一个事务所包含的操作,要么全部成功执行,要 么在失败的情况下一个也不执行并恢复到初始状态,以维持执行事务前后数据的 一致性。 ( 4 ) 交易服务:交易服务由出口者( e x p o r t e r ) 、进口者( i m p o r t e r ) 和交 易者( t r a d e r ) 组成。出口者向交易者给出服务的描述和通告,进口者向交易者 查询符合有关条件的服务信息,然后从出口者获得所需要的服务。 ( 5 ) 生命周期服务:通过直接面向对象的服务,如对象的建立、删除、转移 和复制等来控制对象的生存期。 ( 6 ) 安全服务:c o r b a 一级安全服务提供鉴权、限权、授权、审计、加密以 及登记注册等服务,全面解决分布系统中的安全性问题。 1 2 西北工业大学硕士学位论文第二章容错c m a 技术 ( 6 ) 通知服务:它是事件服务功能上的扩充,增加了结构化事件,事件的过 滤机制以及服务质量控制等功能。 ( 7 ) 持久性服务:提供在各种存储服务器( 包括对象数据库、关系数据库和 简单文件) 上永久性存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论