对象请求代理(ORB)(陈柏年)
- 格式:doc
- 大小:316.00 KB
- 文档页数:17
CORBA是由OMG组织制订的一种标准的面向对象应用程序体系规范,使用IDL(接口定义语言)刻画出对象将呈现出来的接口,并且规定了从IDL到特定程序语言如C++或Java实现的映射。
其使用一种接口定义语言来刻画物件将呈现出来的接口,又规定了从IDL到特定程序语言如C++或Java实现的映射。
CORBA体系结构的中心部分是对象请求代理程序(Object Request Broker, ORB),它作为一个“软件总线”来连接网络上的不同对象。
在客户端,ORB提供一个发送操作调用的接口;而在服务器端,ORB提供一个将操作调用传输到服务器的API。
ORB的任务是定位一个合适的服务器,并且通过一个对象适配器(Object Adapter, OA)将操作调用传送给服务器。
OA的目的是:给框架发送方法,调用并且支持服务器对象的生命周期(例如,对象的建立和删除)。
在CORBA体系结构中,处理分布式处理环境(DCE)中硬件和软件系统的互连问题,实现整个系统上端到端的可预测性。
处理器资源管理是将网络任务的优先级映射到实时操作系统的优先级队列中,有两种映射方法:一种是将网络ORB请求映射到整个实时操作系统的优先级范围;另一种是映射到本地实时操作系统优先级的一个子集上。
优先级继承与传播:在运行过程中,进程会创建子进程,不同的进程之间相互调用,如果不支持优先级继承和传播,则无法保证正确的优
先级关系。
被调用进程的优先级必须大于或等于调用进程的优先级。
因此在调用时,必须动态改变被调用进程的优先级。
存储管理是通过进程池来实现的。
建议咨询专业人士获取具体详细信息。
java corba 编译Java CORBA是一种基于Java语言的分布式对象技术。
CORBA (Common Object Request Broker Architecture)是一种面向对象的中间件,通过它可以实现不同平台、不同语言的对象之间的通信和交互。
本文将对Java CORBA进行详细介绍,包括其基本概念、使用方法以及优缺点等方面。
一、CORBA基本概念CORBA是一种分布式对象技术,它建立在面向对象的基础上,通过定义标准接口和协议,使得不同平台、不同语言的对象能够相互通信和交互。
CORBA的核心是对象请求代理(Object Request Broker,ORB),它充当了分布式对象之间的中间人角色,负责对象的寻址、消息传递和通信协议的实现等功能。
二、Java CORBA的使用方法1. 定义IDL接口:IDL(Interface Definition Language)是CORBA的接口定义语言,用于定义接口的操作和数据结构。
首先需要在IDL文件中定义接口的方法和参数等信息。
2. 编译IDL文件:使用IDL编译器将IDL文件编译成Java代码,生成对应的Java接口文件。
3. 实现接口:根据生成的Java接口文件,编写具体的实现类,实现接口中定义的方法。
4. 编译和打包:将实现类的源代码编译成Java字节码文件,然后将字节码文件打包成Java Archive(JAR)文件。
5. 启动ORB:在应用程序中启动ORB,创建ORB实例,并通过ORB连接到CORBA服务。
6. 注册对象:将实现类的对象注册到ORB中,使得其他对象能够通过ORB访问该对象。
7. 远程调用:通过ORB提供的接口,远程调用其他对象的方法,实现分布式对象之间的通信和交互。
三、Java CORBA的优缺点1. 优点- 跨平台、跨语言:CORBA使用IDL作为接口定义语言,使得不同平台、不同语言的对象能够相互通信和交互。
对象请求代理(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,协议定义是通过应用接口,而该接口是接口定义语言(IDL)的一个实现,他和使用的编程语言无关的。
并且ORB提供了很大的灵活性。
他让程序员选择最适当的操作系统,运行环境和设计语言来建设系统中每个组件。
更重要的是,他允许集成已经存在的组件。
CORBA是在面向对象标准化和互操作性道路上的一个信号。
通过CORBA,用户不必要知道软硬件的平台和他们处在企业网的什么地方就可以操作。
ORB 结构通过ORB 发送请求上面的图形说明的是客户端发送一个请求到对象的实现。
客户端是希望对某对象执行操作的实体。
改进RPC 的功能,现在我们介绍以下两种方法:1.分布式对象,也称为对象请求代理(Object Request Broker,ORB):此方法侧重于代码重用和语言独立性。
2.异步消息传递:此方法解决了应用程序之间的紧密耦合问题。
让我们首先了解一下分布式对象这一方法,因为它与RPC 的关系更密切一些。
目前,大多数应用服务器都基于ORB 技术。
分布式对象:对象请求代理分布式对象技术的实现有三个主要类型。
其中之一就是语言独立性和平台独立性,即所谓的公共对象请求代理体系结构(Common Object Request Broker Architecture,CORBA)。
其他技术则依赖于语言或者依赖于平台和语言。
Java 远程方法调用(RMI) 是依赖于语言技术的示例,而Microsoft 分布式对象组件模型(DCOM) 和IBM® 系统对象模型(SOM) 是依赖于平台技术的示例。
现在我们将详细介绍CORBA,因为它是最常见(独立于语言和平台)的技术,并且来自不同供应商且基于此技术的产品可以一起使用。
例如,基于ORB 的IBM WebSphere® Application Server 可以与许多其他供应商的应用服务器通信。
除引入面向对象的优点(如继承、多态性和封装)外,CORBA 还引入了大量的新功能。
最重要的可能要数ORB这一概念,ORB 提取了用于封送输入和输出参数的代码和用于从客户端和服务器应用程序到独立软件组件通信的代码。
另外,ORB 还提供了用于获取远程对象引用的设备,以便调用该远程对象上的方法。
此分离允许多个应用程序重用同一代码,并通过从点到点的集成中移去应用程序,使这些应用程序之间能够进行一定程度的分离。
从点到点的集成中移去应用程序可能是ESB 概念发展的第一步。
图1 演示了这一情况,该图显示了同一台计算机上的多个应用程序可以使用同一ORB 相互通信,并可以与不同计算机上的应用程序进行通信。
corba协议-概述说明以及解释1.引言1.1 概述Corba(Common Object Request Broker Architecture)是一种面向对象的分布式计算的标准化协议。
它定义了一套标准化的通信协议,使得不同的对象能够在网络上进行通信和交互。
Corba协议通过对象请求代理(ORB)实现对象之间的通信,使得对象在不同的计算机上可以相互调用,实现分布式计算。
该协议被广泛应用于企业级软件系统中,能够提高系统的可扩展性、可维护性和灵活性,为分布式系统的开发提供了良好的支持。
在本文中,我们将介绍Corba协议的基本原理、特点和应用领域,以便更好地理解和使用这一重要的分布式计算协议。
1.2文章结构1.2 文章结构本文将首先介绍Corba协议的概念和背景,包括其起源、发展历程和基本原理。
接着将详细探讨Corba协议的特点,包括其跨平台、语言中立和分布式的优势。
然后将深入分析Corba协议在各个应用领域的具体应用,包括企业级系统、网络通信和物联网等方面。
最后对Corba协议的发展前景进行展望,探讨其在未来的发展趋势和潜在挑战。
通过本文的阐述,读者将能够全面了解Corba协议的重要性和应用领域,以及对其发展方向有更深入的认识。
1.3 目的本文的主要目的是介绍和探讨Corba(通用对象请求代理结构)协议,旨在帮助读者了解该协议的基本概念、特点和应用领域。
通过对Corba协议的介绍,读者可以深入了解面向对象技术在分布式系统中的应用,以及Corba协议在不同领域中的实际应用情况。
同时,本文也将分析Corba 协议的优势和局限性,以及未来在分布式计算领域的发展趋势。
通过本文的阐述,读者将能够更好地理解和应用Corba协议,为其在实际项目中的应用提供参考和指导。
2.正文2.1 Corba协议介绍CORBA(Common Object Request Broker Architecture)是一种用于分布式系统中对象通信的协议。
公共对象请求代理体系结构CORBA简介CORBA(Common Object Request Broker Architecture, 公共对象请求代理体系结构)是由OMG(对象管理组织,Object Management Group)提出的应用软件体系结构和对象技术规范,其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及独立于平台和编程语言的对象重用。
CORBA经过近十年的发展,已逐步走向成熟,并成功地应用在我国许多大型的软件系统中,由此产生了对掌握CORBA技术的软件开发人员的大量需求。
在此,我们应广大读者的要求组织了本次讲座。
本系列讲座分别介绍了CORBA的基本思想、体系结构以及CORBA应用程序的设计与开发,希望借此能帮助广大软件开发、设计人员,开阔思路,加深对CORBA的理解,进而真正掌握这门技术,并能在实际工作中加以灵活运用,更高效、迅速地开发出更强壮的软件系统,最终促进我国软件事业的蓬勃发展。
CORBA产生的背景近年来,随着互联网技术的日益成熟,公众及商业企业正享受着高速、低价网络信息传输所带来的高品质数字生活。
但是,由于网络规模的不断扩大以及计算机软硬件技术水平的飞速提高,给传统的应用软件系统的实现方式带来了巨大挑战。
首先,在企业级应用中,硬件系统集成商基于性能、价格、服务等方面的考虑,通常在同一系统中集成来自不同厂商的硬件设备、操作系统、数据库平台和网络协议等,由此带来的异构性给应用软件的互操作性、兼容性以及平滑升级能力带来了严重问题。
另外,随着基于网络的业务不断增多,传统的客户/服务器(C/S)模式的分布式应用方式越来越显示出在运行效率、系统网络安全性和系统升级能力等方面的局限性。
为了解决分布式计算环境(DCE,Distributed Computing Environment)中不同硬件设备和软件系统的互联,增强网络间软件的互操作性,解决传统分布式计算模式中的不足等问题,对象管理组织(OMG)提出了公共对象请求代理体系结构(CORBA),以增强软件系统间的互操作能力,使构造灵活的分布式应用系统成为可能。
系统架构师学习笔记第十章构建平台与典型架构10.1 OMG 方式对象管理组OMG,通过规范化对象开放市场的所有层次上的互操作性。
10.1.1 对象请求代理CORBA 的主要目标就是使用不同语言、不同实现、不同平台能进行交互。
CORBA 三个基本部分:一套调用接口、对象请求代理ORB、一套对象适配器。
10.1.2 公共对象服务规范两类服务:一类服务应用于企业计算系统。
一类服务应用于细粒度的对象操作,但目前这些服务的实用价值较差。
1、支持企业分布式计算的服务1.命名服务、交易器服务命名服务允许任意地给对象赋予一个名字,这个名字在其所属的命名语境中是唯一的。
命名语境所形成的层次结构,使得所有的名字形成名字树。
交易器服务允许给对象赋予一个复杂的描述,从而允许客户基于该描述来定位所需的对象。
搜寻结果往往是满足查询条件的一组对象列表。
2.事件服务、通告服务事件服务允许定义那些从时间生产者被发送到时间消费者的事件对象。
信息只能从生产者流向消费者,事件必须通过事件通道传播,事件可以具有类型,而通道可以根据类型过滤事件。
事件通道支持“推”“拉”两种方式的事件通告模型。
通告服务为事件服务增加了几个重要的特征——服务质量QoS 规范和管理。
3.对象事务服务对象事务服务OTS,是建立分布式应用最重要的服务之一。
OTS 实现必须支持平坦事务,而嵌套事务是可选的。
在基于构件的系统中,嵌套事务似乎不可避免。
平坦事务在构件系统中的价值有限,实际上,现有的主流事务中间件也不支持嵌套事务。
6.并发控制服务支持对象资源进行加锁、解锁。
锁必须依赖于事务的语境或其他语境才能获得。
读锁、写锁、升级锁。
读锁允许多个客户同时执行读操作,写锁允许一个客户写操作,升级锁是可以升级为写锁的读锁支持互斥读。
每个受保护的资源都拥有一个锁集合。
锁集合不是事务型就是非事务型,并可与其他锁集合建立关联。
8.生命周期服务支持创建、复制、移动、删除CORBA对象,及其相关的对象组。
对象请求代理(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,协议定义是通过应用接口,而该接口是接口定义语言(IDL)的一个实现,他和使用的编程语言无关的。
并且ORB提供了很大的灵活性。
他让程序员选择最适当的操作系统,运行环境和设计语言来建设系统中每个组件。
更重要的是,他允许集成已经存在的组件。
CORBA是在面向对象标准化和互操作性道路上的一个信号。
通过CORBA,用户不必要知道软硬件的平台和他们处在企业网的什么地方就可以操作。
ORB 结构通过ORB 发送请求上面的图形说明的是客户端发送一个请求到对象的实现。
客户端是希望对某对象执行操作的实体。
对象的实现是一片代码和数据来实际实现对象。
ORB负责下面的必要的机制:对该请求找到对象的实现,让对象的实现准备好接受请求,和请求交换数据。
客户端的接口完全独立于对象的位置,其实现的语言和其他不影响对象接口的东西。
ORB 接口的结构上面的图形显示的是一个独立的对象请求代理(ORB)的结构。
ORB 的接口是灰色的矩形。
箭头说明ORB 的调用关系。
为了提出一个请求,客户端可以使用动态调用接口DII(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和/或InterfaceRepository定义。
该定义用于产生客户占位程序和对象的实现的骨架。
对象的实现的信息在安装时就提供好了,储存在Implementation Repository 中以便请求发布的时候使用。
对象请求代理(ORB)详细说明ORB是一个中间件(middleware),它可以建立对象之间的client/server关系。
通过ORB,一个client可以透明的引用同一台机器上或网络上的一个server对象的方法。
ORB解释该调用并负责查找一个实现该请求的对象,找到后,把参数传给该对象,调用它的方法,最后返回结果。
client并不清楚该对象的位置,它的编程语言,它的操作系统以及其它不是对象接口的系统信息。
ORB能实现分布环境中位于不同机器上的应用之间的互操作以及多对象系统之间的无缝连接。
在传统的client/server)应用中,开发者使用自己设计的标准或通用标准来定义设备之间的协议。
协议定义与实现的语言、网络传输及其它因素有关。
ORB简化了这一过程,它使用IDL来定义应用接口之间的协议。
ORB允许程序员选择通用操作系统,运行环境和编程语言。
更重要的是,它能集成现存元素。
ORB结构图 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所示)。
图 3 Client使用Stub 或Dynamic Invocation Interface不论使用Stub还是Dynamic Invocation Interface来发出请求具有相同的语义,信息的接收者不能分辨出该请求是使用哪种方法来传递的。
ORB确定适当的实现代码,传递参数,通过IDL skeleton或dynamic skeleton (如图Figure 4 所示)把控制传给Object Implementation。
每一个接口和object adapter 使用不同的Skeletons。
为了完成请求,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 Skeletons。
图 5 Interface 和Implementation Repositories在安装时把object implementation 信息放入Implementation Repository中,以备请求使用。
ORB结构中的主要构件图6.1CORBA ORB结构1) Object Implementation(对象实现): 它定义了实现一个CORBA IDL接口的操作。
它可以用各种语言来写,如C, C++, Java, Smalltalk和Ada。
图6.2 典型的Object Implementation 结构2) Client(客户): 这是一个程序实体,它调用了某一个对象实现中操作。
对调用这来讲,访问远程对象server应该是透明的。
它应该和调用对象中的方法一样简单,如,obj->op(args)。
Client只能根据对象的接口了解对象的逻辑结构,虽然,我们一般都把client看作是一个程序或一个进程,但是,知道一个client都是某一个对象有关的。
例如,一个对象的实现可能是其他对象的client。
图7 典型的Client结构Client通过语言映射(language mapping)来使用对象和ORB 接口。
当这种映射关系改变时,不需要改变Client。
Client不需要了解对象的实现方式,对象适配器及ORB。
3) Object Request Broker(ORB):ORB提供了一种机制,能实现client请求与目标对象实现之间的透明通信。
它使得client请求就象一个本地过程调用一样。
当一个client引用一个操作,ORB负责找到对象实现,如果需要则透明的激活它,然后把该请求递交给该对象,最后返回应答给调用者。
实现时,可以把ORB不作为单个成分,但它只能由它的接口来定义。
任何ORB实现方式提供的接口都是可以接受的。
可以把接口中的操作分为三类:1. 对于所有的ORB实现都一样的操作2. 特定类型对象的操作3. 与对象实现种特定类别有关的操作不同的ORB有不同的实现方式,但都包括有:IDL 编译器, 仓库(repositories),各种Object Adapters,给client提供各种服务集,具有不同属性的对象实现等。