公用对象请求代理(调度)程序体系结构(CORBA)

简介: 公用对象请求代理(调度)程序体系结构(CORBA) CORBA 是什么 公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Management Group)对应当今快速增长的软硬件的协同工作能力的要求而提出的方案。

公用对象请求代理(调度)程序体系结构(CORBA)

CORBA 是什么

    公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Management Group)对应当今快速增长的软硬件的协同工作能力的要求而提出的方案。简而言之,CORBA 允许应用程序和其他的应用程序通讯,而不论他们在什么地方或者由谁来设计。CORBA 1.1 由对象管理组织在 1991 年发布。他定义了接口定义语言(IDL)和应用编程接口(API),从而通过实现对象请求代理(ORB)来激活客户/服务器的交互。CORBA 2.0 于 1994 年的 12 月发布。他定义了如何跨越不同的 ORB 提供者而进行通讯。

    ORB 是一个中间件,他在对象间建立客户-服务器的关系。通过 ORB,一个客户可以很简单地使用服务器对象的方法而不论服务器是在同一机器上还是通过一个网络访问。ORB 截获调用然后负责找到一个对象实现这个请求,传递参数和方法,最后返回结果。客户不用知道对象在哪里,是什么语言实现的,他的操作系统以及其他和对象接口无关的东西。

    在传统的客户/服务器程序中,开发者使用他们自己设计的或者公认的标准定义设备之间的协议。协议的定义依赖于实现的语言,网络的传输和其他许许多多因素。ORB 将这个过程简单化。使用 ORB,协议定义是通过应用接口,而该接口是接口定义语言(IDL)的一个实现,他和使用的编程语言无关的。并且 ORB 提供了很大的灵活性。他让程序员选择最适当的操作系统,运行环境和设计语言来建设系统中每个组件。更重要的是,他允许集成已经存在的组件。

    CORBA 是在面向对象标准化和互操作性道路上的一个信号。通过 CORBA,用户不必要知道软硬件的平台和他们处在企业网的什么地方就可以操作。

ORB 结构

    下面我来用些图形说明一下:

    通过 ORB 发送请求

    上面的图形说明的是客户端发送一个请求到对象的实现。客户端是希望对某对象执行操作的实体。对象的实现是一片代码和数据来实际实现对象。ORB 负责下面的必要的机制:对该请求找到对象的实现,让对象的实现准备好接受请求,和请求交换数据。客户端的接口完全独立于对象的位置,其实现的语言和其他不影响对象接口的东西。

    ORB 接口的结构

    上面的图形显示的是一个独立的对象请求代理(ORB)的结构。ORB 的接口是灰色的矩形。箭头说明 ORB 的调用关系。

    为了提出一个请求,客户端可以使用动态调用接口(Dynamic Invocation Interface)(和目标对象的接口独立)或者一个 OMG 的 IDL 占位程序(具体的占位程序依赖于目标对象的接口)。客户端也可以直接和 ORB 在某些地方交互。

    对象的实现通过 OMG 的 IDL 产生的骨架或者是一个动态骨架的调用来接受请求。对象的实现可能在处理请求或其他的时候调用 ORB。

    对象接口定义的定义可以有下面两种方式。接口可以通过接口定义语言静态的定义,这叫做 OMG 的 IDL。该语言按照可以进行的操作和该操作的参数定义对象类型。或者(也可以作为补充),接口可以加入到 Interface Repository service。该服务描述了该接口作为一个对象的组件,并允许运行时访问这些组件。在任何 ORB 实现中,IDL 和 Interface Repository 有相同的表达能力。

    客户端使用占位程序或者动态调用接口

    客户端通过访问对象的对象引用和了解对象的类型及要求执行的操作来发布一个请求。客户调用占位程序例程来请求或者动态构造请求。

    无论动态还是占位程序的接口都可以相同实现。接收方不可能知道请求是如何发布的。

    对象的实现接受请求

    ORB 向对象实现定位适当的代码,传递参数,传输控制。这一切都通过 IDL 骨架或者动态骨架。骨架对于不同的接口和对象适配器是不同的。在执行该请求的时候,对象的实现可能由 ORB 通过对象适配器来获得一定的服务。当请求完成,控制和输出值返回给客户。

    对象的实现可能会选择使用的对象适配器。该决定基于对象的实现要求的服务。

    接口和 Implementation Repositories

    上图说明的是接口和实现信息如何让客户和对象实现访问的。接口用 OMG 的 IDL 和/或 Interface Repository 定义。该定义用于产生客户占位程序和对象的实现的骨架。

    对象的实现的信息在安装时就提供好了,储存在 Implementation Repository 中以便请求发布的时候使用。

目录
相关文章
|
8月前
|
安全 Linux 网络虚拟化
Linux网络名称空间和Veth虚拟设备的关系
在讨论Linux网络名称空间和veth(虚拟以太网对)之间的关系时,我们必须从Linux网络虚拟化的核心概念开始。Linux网络名称空间和veth是Linux网络虚拟化和容器化技术的重要组成部分,它们之间的关系密不可分,对于构建隔离、高效的网络环境至关重要。😊
|
8月前
|
安全 Linux API
Linux网络名称空间的抽象设计以及借鉴意义
Linux作为一个强大的开源操作系统🐧,其网络虚拟化技术中的核心组件——网络名称空间(Network Namespace),是对网络资源的一种高度抽象。网络名称空间允许系统内部存在多个隔离的网络环境,每个环境都有自己的网络设备、IP地址、路由表等资源。这一机制不仅对于云计算☁️、容器化部署📦至关重要,也为应用开发提供了丰富的可能性。本文将全方位、系统性、多维度分析Linux是如何抽象网络名称空间的,以及为此所做的努力,并探讨其对应用开发人员的借鉴和学习意义。
Linux网络名称空间的抽象设计以及借鉴意义
|
8月前
|
网络协议 安全 Linux
Linux网络名称空间之独立网络资源管理
Linux网络名称空间是一种强大的虚拟化技术🛠️,它允许用户创建隔离的网络环境🌐,每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用📦和网络安全🔒等领域至关重要。本文将详细介绍在Linux网络名称空间中可以拥有的独立网络资源,并指出应用开发人员在使用时应注意的重点。
METSO PDP403 专门针对建立工作关系网应用程序域
METSO PDP403 专门针对建立工作关系网应用程序域
107 0
METSO  PDP403 专门针对建立工作关系网应用程序域
【C++之封装与信息隐蔽】类的公用接口与私有实现的分离
【C++之封装与信息隐蔽】类的公用接口与私有实现的分离
|
Java
多个JVM之间,能否共用同样的类?
多个JVM之间,能否共用同样的类?
92 0
|
资源调度 API 调度
Ray 源码解析二:资源抽象和调度策略
Ray 源码解析二:资源抽象和调度策略
387 0
C++公用数据的保护
1.有const修饰的成员,构造函只能以成员列表方式赋值,只能读取数据成员,不能改变数据成员;
136 0
C++公用数据的保护
|
存储 区块链
【超级账本】Fabric 层次结构以及核心模块的介绍(二)
目录 1. 结构介绍 2. 核心代码 3. 核心模块 3.1 peer 系统模块 3.2 order 系统模块 3.3 cryptogen 工具模块 3.4 configtxgen 工具模块 3.5 configtxlator 工具模块 最后
293 0
【超级账本】Fabric 层次结构以及核心模块的介绍(二)
|
Java 容器
JavaWeb中四大域对象的作用范围
JavaWeb中四大域对象的作用范围
286 0