好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

对象请求代理陈柏年.docx

19页
  • 卖家[上传人]:博****1
  • 文档编号:448333983
  • 上传时间:2023-05-21
  • 文档格式:DOCX
  • 文档大小:603.18KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 对象请求代理(ORB )(陈柏年)公用对象请求代理(调度)程序体系结构CORBA (Common Object Request Broker Architecture),是对象管理组织OMG( Object Management Group )对应当今快速增长的软 硬件的协同工作能力的要求而提出的方案简而言之,CORBA允许应用程序和其他的应用 程序通讯,而不论他们在什么地方或者由谁来设计CORBA1.1由对象管理组织在1991年 发布他定义了接口定义语言(IDL)和应用编程接口(API),从而通过实现对象请求代 理(ORB )来激活客户/月服务器的交互CORBA 2.0于1994年的12月发布他定义了如 何跨越不同的ORB提供者而进行通讯ORB是一个中间件,他在对象间建立客户-服务器的关系通过ORB, —个客户可以很 简单地使用服务器对象的方法而不论服务器是在同一机器上还是通过一个网络访问ORB 截获调用然后负责找到一个对象实现这个请求,传递参数和方法,最后返回结果客户不用 知道对象在哪里,是什么语言实现的,他的操作系统以及其他和对象接口无关的东西在传统的客户/月服务器程序中,开发者使用他们自己设计的或者公认的标准定义设备之 间的协议。

      协议的定义依赖于实现的语言,网络的传输和其他许许多多因素ORB将这个 过程简单化使用ORB,协议定义是通过应用接口,而该接口是接口定义语言(DL)的一 个实现,他和使用的编程语言无关的并且ORB提供了很大的灵活性他让程序员选择最 适当的操作系统,运行环境和设计语言来建设系统中每个组件更重要的是,他允许集成已 经存在的组件CORBA是在面向对象标准化和互操作性道路上的一个信号通过CORBA,用户不必 要知道软硬件的平台和他们处在企业网的什么地方就可以操作ORB结构上面的图形说明的是客户端发送一个请求到对象的实现客户端是希望对某对象执行操 作的实体对象的实现是一片代码和数据来实际实现对象ORB负责下面的必要的机制: 对该请求找到对象的实现,让对象的实现准备好接受请求,和请求交换数据客户端的接口 完全独立于对象的位置,其实现的语言和其他不影响对象接口的东西ORB接口的结构ClientIDLStubsORB InlerfHceSTbUg IDLSkelelnnDynani le SkeletonOb|ect AdapterDynamiclr vocstionORB Coref Uphill InterfHce* Norm al call InterfaceInterface IdenlicBl for all OR B Im plem enlallcnBThere m ay be n\ ulUple nb|ect BdapteroThere are Btube and ■ Bkelelon far each cb|ect Type ORB-dependenT Interface上面的图形显示的是一个独立的对象请求代理(ORB )的结构。

      ORB的接口是灰色的 矩形箭头说明ORB的调用关系为了提出一个请求,客户端可以使用动态调用接口 DII( Dynamic Invocation Interface) (和目标对象的接口独立)或者一个OMG的IDL占位程序(具体的占位程序依赖于目标 对象的接口)客户端也可以直接和ORB在某些地方交互对象的实现通过OMG的IDL产生的骨架或者是一个动态骨架的调用来接受请求对 象的实现可能在处理请求或其他的时候调用ORB对象接口定义的定义可以有下面两种方式接口可以通过接口定义语言静态的定义,这 叫做OMG的IDL该语言按照可以进行的操作和该操作的参数定义对象类型或者(也 可以作为补充),接口可以加入到Interface Repository service该服务描述了该接口作为一 个对象的组件,并允许运行时访问这些组件在任何ORB实现中,IDL和Interface Repository有相同的表达能力客户端使用占位程序或者动态调用接口Client]Interfflce Identical far all OR 日 Im plem entaTlonBThere are BtubB and ■ skeleton far each ob|ecT type]OR B-dependent Interface客户端通过访问对象的对象引用和了解对象的类型及要求执行的操作来发布一个请求。

      客户调用占位程序例程来请求或者动态构造请求无论动态还是占位程序的接口都可以相同实现接收方不可能知道请求是如何发布的对象的实现接受请求ORB向对象实现定位适当的代码,传递参数,传输控制这一切都通过IDL骨架或 者动态骨架骨架对于不同的接口和对象适配器是不同的在执行该请求的时候,对象的实 现可能由ORB通过对象适配器来获得一定的服务当请求完成,控制和输出值返回给客 户对象的实现可能会选择使用的对象适配器该决定基于对象的实现要求的服务接口和 Implementation Repositories上图说明的是接口和实现信息如何让客户和对象实现访问的接口用OMG的IDL和/ 或InterfaceRepository定义该定义用于产生客户占位程序和对象的实现的骨架对象的实 现的信息在安装时就提供好了,储存在Implementation Repository中以便请求发布的时候使 用对象请求代理(ORB)详细说明ORB是一个中间件(middleware),它可以建立对象之间的client/server关系通过ORB, 一个client可以透明的引用同一台机器上或网络上的一个server对象的方法ORB解释该调 用并负责查找一个实现该请求的对象,找到后,把参数传给该对象,调用它的方法,最后返 回结果。

      client并不清楚该对象的位置,它的编程语言,它的操作系统以及其它不是对象接 口的系统信息ORB能实现分布环境中位于不同机器上的应用之间的互操作以及多对象系 统之间的无缝连接在传统的client/server)应用中,开发者使用自己设计的标准或通用标准来定义设备之间 的协议协议定义与实现的语言、网络传输及其它因素有关ORB简化了这一过程,它使 用IDL来定义应用接口之间的协议ORB允许程序员选择通用操作系统,运行环境和编程语 言更重要的是,它能集成现存元素ORB结构MolhodsDynamicObject Adapter Inters ceObject ImplementationORB Coretnlerface 日 SkeletonInleHac^ A. Sheleton图 1 通过 ORB 传递请求图1显示了一个client向对象实现发送一个请求Client是一个想对对象进行操作的一 个实体,对象实体是实现对象的代码和数据ORB负责根据一个请求来定位一个对象,安 排对象实现准备接受请求,与请求的数据通讯Client的接口与对象的位置完全,实现对象 的语言及其它不在对象接口反映出来的方面等无关。

      图2显示了单个ORB的结构用斜条文的矩形框表示ORB的接口,箭头表示调用ORB 或 ORB 使用接口把信息向上传递图 2 ORB 接口结构Clinet使用Dynamic Invocation interface (与目标对象的接口无关)或OMG IDL stub (与目标对 象接口有关的stub)来发出请求由于某种原因,Client也可以直接与ORB联系对象实现 使用OMG IDL生成的skeleton或动态skeleton以向上传送(up-call)的方式接受请求对 象实现也可以调用Object Adapter和ORB可以用两种方式来定义对象接口: 一是用OMG Interface Definition Language (OMG IDL)来定义接口该语言根据可能对对象进行的操作和 这些操作使用的参数来定义对象类型第二种方法是,把接口(interface)放入Interface Repository service中;该服务把接口中的元素描述成一个对象任何能实现ORB的软件中,Interface Definition Language (可能根据文档的内容而改变)和 Interface Repository 具有相同的 作用。

      一个 client 要使用 Object Reference 完成请求,它必须知道对象的类型的及具体的操 作Client初始化请求有两种方法,一是通过调用目标对象的stub routines,二是动态的创 造请求(如图 3 所示)GLOPnihm (HOP』FKJfJ0叹人…CORBA IDLESIOPs图 3 Client 使用 Stub 或 Dynamic Invocation Interface不论使用 Stub 还是 Dynamic Invocation Interface 来发出请求具有相同的语义,信息的接收者 不能分辨出该请求是使用哪种方法来传递的 ORB 确定适当的实现代码,传递参数,通过IDL skeleton 或 dynamic skeleton (如图 Figure 4 所示)把控制传给 Object Implementation每 一个接口和 object adapter 使用不同的 Skeletonso 为 了完成请求,object implementation 可能 通过 Object Adapter 使用来自 ORB 的服务当完成请求后,控制和输出结果返回给 client。

      图 4 Object Implementation 接受请求Object Implementation 选择使用何种 Object Adapter它是根据 Object Implementation 需要服 务的种类来确定的图 5 显示了 clients 和 object implementations 如何使用接口和实现信息 用 OMG IDL 或 Interface Repository 来定义接口;该定义用于产生 client Stubs 和 object implementation SkeletonsInfernpInieropImmediate BridgingMediated BridgingDomain DomainDomainDomain图 5 Interface 和 Implementation Repositories在安装时把object implementation信息放入Implementation Repository中,以备请求使用 ORB结构中的主要构件图 6.1 CORBA ORB 结构1) Object Implementation(对象实现):它定义了实现一个CORBA IDL接口的操作。

      它可以用 各种语言来写,如 C, C++, Java, Smalltalk 和 Ada图 6.2 典型的 Object Implementation 结构2) Client(客户):这是一个程序实体,它调用了某一个对象实现中操作对调用这来讲,访问 远程对象server应该是透明的它应该和调用对象中的方法一样简单,如,obj->op(args)Client只能根据对象的接口 了解对象的逻辑结构,虽然,我们一般都把client看作是一个程 序或一个进程,但是,知道一个client都是某一个对象有关的。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.