对象请求代理(ORB)
对象请求代理(Object Request Broker , ORB)是对象总线,它可以让对象透明的向本地或远程的其他对象发送请求或从那里接受响应。ORB使对象可以在运行时相互发现和调用对方的服务。
ORB是对象间建立客户/服务器关系的中间件。通过使用ORB,一个客户对象可以透明的调用服务器对象的方法。客户/服务器的角色仅仅是用于协调两个对象之间的交互。ORB的对象根据场合的不同既可以充当客户,也可以充当服务器。
CORBA ORB 的客户端和服务器端工作
客户端:
客户端IDL存根(Client IDL Stubs)
为对象服务器提供静态的接口。这些预编译的存根定义了客户如何调用服务器上的相应服务。从客户的角度来看,存根像是一个本地调用,它是一个远程服务器对象的本地代理。服务由IDL定义,而客户和服务器的存根都由IDL编译器生成。对于它所使用的服务器上的每一个接口,客户都必须有一个IDL存根。
动态调用接口(DLL)让你可以在运行时找到调用的方法。
接口池API允许获得和修改所有有关已注册的组件接口以及它们支持的方法和它们所需的参数的描述。CORBA称这些描述为方法标记。我们可以把接口池看作是一个动态的ORB元数据池。
ORB接口由一些API组成,这些API用于定位可能与应用程序有关的本地服务。
全局池ID是ORB提供的全局标志符,称为池ID(Repository ID)用来在多个销售商ORB和池的环境下唯一且全局的标志一个组件和它的接口。池ID是系统生成的、唯一的字符串,以便维护对多个池的命名规则的一致性,它不允许有任何名称冲突。池ID是在IDL中通过指令 pragmas 生成的。池ID自身是个字符串,由三级名称层次结构组成。
服务器端:
服务器IDL存根(OMG称其为框架)为每一个服务区输出的服务提供静态接口。由IDL编译器创建。
动态框架接口(DSI)为那些需要处理收到的对某些组件的方法调用的服务器提供了一种运行时动态绑定机制,这些被调用的组件不具备给予IDL编译的框架(或存根)。
对象适配器位于ORB核心通信服务的顶层,为代表服务器对象的服务接受请求。它提供运行时环境来初始化服务器对象、将请求传给它们并且分配它们的对象ID —— CORBA 称这种ID为对象引用。对象适配器也用实现池纪录它支持的类和它们运行时的实例(如对象)。
实现池(Implementation Repository)提供了运行时信息池,里面存放了关于服务器支持的类、被实例化的对象以及它们的ID信息。它还提供了一个公共场所,用于存储与ORB实现相关的附加信息。
ORB接口由一些API组成,用于定位本地服务。
同时支持动态和静态客户/服务器调用以及接口池的特性提高了CORBA的性能。静态调用更易于编程、更快,且可以自己生成文档。动态调用提供了最大的灵活性,但编程起来比较困难。动态调用对于那些在运行时寻找服务的工具非常有用。服务器端无法区别动态和静态调用,这两种调用都含有相同的消息语义。这两种情况下,ORB都是通过服务器IDL存根找到服务器对象适配器、传递参数、将控制转交给对象实现。
分享到:
相关推荐
### 实时CORBA中ORB核心的优化 #### 一、实时CORBA技术概述 实时CORBA(Common Object Request Broker Architecture)是一种专为实时系统设计的分布式计算中间件标准。随着分布式实时嵌入式系统的发展,CORBA作为...
ORBit-Ada是一个针对GNOME桌面环境的CORBA对象请求代理(ORB)的Ada语言绑定。这个项目的主要目的是为了让Ada开发者能够充分利用CORBA标准来构建跨平台、分布式应用程序。ORB,全称为Object Request Broker,是CORBA...
《GlassFish CORBA ORB:历史与理解》 GlassFish CORBA ORB,全称是“GlassFish Common Object Request Broker Architecture Object Request Broker”,是Oracle公司旗下GlassFish服务器的一部分,它提供了一个...
2. **CORBA ORB for Java**:CORBA ORB 是实现 CORBA 规范的关键组件,它提供了对象请求代理的功能。对于 Java,存在专门的 CORBA ORB 实现,如 Orbacus、Orbix 等,它们提供了 Java 程序与 CORBA 环境交互的能力。 ...
4. **jacorb-library-2.3.1-installer.zip**:JacORB是Java实现的CORBA ORB,它是一个开源项目,提供了一整套CORBA基础设施。这个安装程序可能包含JacORB的库文件和其他必要的组件,这些组件可能被jbi4corba用来实现...
1. **ORB集成**:EJB可以集成ORB来实现与CORBA系统的互操作性。通过这种方式,EJB可以作为CORBA对象的实现,使得EJB服务可以被CORBA客户端调用。这通常需要EJB容器支持CORBA集成,例如通过JavaIDL(Java Interface ...
通过Eclipse CORBA插件集成OpenORB,开发者可以在IDE内方便地创建、配置和管理ORB实例,以及进行ORB相关的调试工作。 其次,ORBStudio是另一款与CORBA相关的工具,它是一个可视化的CORBA开发环境,帮助开发者设计、...
开发者需要安装适当的CORBA ORB实现,如OMG提供的OpenORB或TaoORB,以及对应的VS插件,以便编译和运行CORBA应用。 **六、学习价值** 对于初学者,这个实例提供了以下学习点: 1. 理解CORBA的基本原理和工作流程。...
CORBA的核心组成部分包括ORB(对象请求代理)、IDL(接口定义语言)等,这些组件使得开发者能够在不同的环境中构建可互操作的应用程序。 #### 平面三连杆系统的动力学分析 在工程实践中,许多机械系统由多个刚体...
2. **对象请求代理(Object Request Broker,ORB):** ORB是CORBA架构中的核心组件,负责处理客户端和服务端之间的对象请求。ORB隐藏了网络通信细节,使得客户端和服务端的对象交互变得简单透明。 3. **IIOP...
Python通过omniORBpy库实现了对CORBA的接口,它是一个开源的CORBA ORB(Object Request Broker,对象请求代理)实现,使得Python程序员可以方便地访问和操作CORBA系统。omniORBpy提供了完整的CORBA接口,包括IDL...
OmniORBpy的ORB实现了CORBA标准的IIOP(Internet Inter-ORB Protocol),使得Python对象可以与其他语言(如C++、Java)实现的CORBA对象进行通信。 3. 客户端和服务端支持:OmniORBpy提供了客户端和服务端的API,使得...
ORB作为实时CORBA中的核心组件,负责管理对象之间的通信,并确保通信的实时性与可靠性。在实时CORBA中,ORB需要具备快速响应请求的能力,同时支持优先级感知的调度策略,以便根据请求的实时属性进行调度。 POA则...
`from omniORB import CORBA, orb_init`,然后调用`orb = orb_init()`初始化ORB。 4. **解析IDL模块**: 加载由`omniidl`生成的Python模块,这样就可以访问接口和类型定义。 5. **激活ORB**: 调用`orb.resolve_...
JacORB(Java Object Request Broker)是基于CORBA(Common Object Request Broker Architecture)的开放源代码ORB(Object Request Broker)产品,专为Java开发者设计。ORB是CORBA架构的核心组件,它负责在分布式...
OmniORB是一个开源的对象请求代理(ORB,Object Request Broker)实现,它支持CORBA(Common Object Request Broker Architecture)标准。这个“omniORB-4.1.0-x86_win32_vc6.zip”文件是专为在Windows 32位环境下...
TAO是基于C++的一个实时通信核心对象请求代理架构(Real-Time CORBA ORB)框架。该文档详细介绍了使用ACE C++框架和TAO进行CORBA编程的各个方面,包括实时CORBA编程、安全性、性能优化等。 文档首先介绍了ACE框架的...
ORB实现了CORBA的接口定义语言IDL(Interface Definition Language),用于定义接口和数据类型,并将其转换为不同编程语言可以理解的形式。 在C++中开发CORBA应用,你需要以下步骤: 1. **定义接口**:使用IDL编写...