Corba

Distributed Object Based Systems with CORBA
Slides adapted from
Coulouris (Distributed Systems: Concepts and Design) Tanenbaum (Distributed Systems: Principles and Paradigms)
Dawit Mengistu Kamilla Klonowska (2011)

Introduction
? Distributed objects form?an?important paradigm:
? An?object?means virtually anything (file,?remote procedure, or?any resource). ? Contemporary?software?development is?based on?object orientation.
? In?this?section we will see how the?priciples of distributed systems?are?applied in?distributed object‐ based systems:
? Communication ? Naming ? Synchronization Replication Fault tolerance Security...
? We will look?at?a?specific DOBS?example:?CORBA

Introduction?(cont’d)
? The?Object?Management?Group?(OMG)?was?formed?in 1989.?Its?aims?were:?
– to?make?better?use?of?distributed?systems – to?use?object‐oriented?programming – to?allow?objects?in?different?programming?languages?to communicate?with?one?another
? The?object?request?broker?(ORB)?enables?clients?to?invoke methods?in?a?remote?object ? CORBA?is?a?specification?of?an?architecture?supporting this.?
– CORBA?1?in?1990?and?CORBA?2?in?1996.
?

Generic?Architecture

CORBA?Architecture
? Remote‐object:?object?implementation?resides?in server’s?address?space?
Client Server Java Object C++ Object Skeleton Stub IIOP Object Adapter
ORB
ORB

Stub
? Provides interface?between client?object and?ORB ? Marshalling:?client?invocation ? Unmarshalling:?server?response
Client Server Java Object C++ Object Skeleton Stub ORB IIOP Object Adapter ORB

Skeleton
? Provides iterface between server?object and?ORB ? Unmarshaling:?client?invocation ? Marshaling:?server?response
Client Server Java Object C++ Object Skeleton Stub ORB IIOP Object Adapter ORB

Skeletons and?Stubs...
? Skeletons?are?generated?by?the?idl compiler?in?the server language.?There?are?idl compilers?for?java,?C, C++?and?many?more ? It?is?also?responsible?for?unmarshalling (UNPACKING) the?arguments?for?a?remote?request,?passing?them?to implementation,?and?marshalling?any?results?in?a?reply ? Stub/proxy?are?generated?by?the?idl compiler?in?the client language.?There?are?idl compilers?for?java,?C, C++?and?many?more. ? In?CORBA,?clients?and?servers?need?not?be?written?in the?same?language.

(Portable)?Object?Adapter?(POA)
? ? ? ? Register class?implementations Creates and?destroys?objects Handles method invocation Handles client?authentication and?access control
Client Server Java Object C++ Object Skeleton Stub ORB IIOP Object Adapter ORB

Object?Request Broker?(ORB)
? Communication?infrastructure?sending messages?between objects ? Communication?type:
– GIOP?(General?Inter‐ORB?Protocol) – IIOP?(Internet?Inter‐ORB?Protocol) (GIOP?on?TCP/IP)
Client Server Java Object C++ Object Skeleton Stub ORB IIOP Object Adapter ORB

CORBA?Object
Server CORBA Object Interoperable Object Reference Interface IDL C++/Java Implementation Servant

Interface?Definition?Language?(IDL)
? Describes?interface ? Language?independent ? Client?and?server?platform?independent
Server CORBA Object Interface IDL C++/Java Implementation Servant Interoperable Object Reference

Overall?CORBA?Architecture
Client C++ Object Interface Interface repository repository
Implementation repository Interface repository
Server Java Object
IDL
the the interface interface repository repository provides provides information information about about registered registered IDL IDL interfaces interfaces to to clients clients and and servers servers that that require require it. it.
Skeleton
Stub
ORB
Object Adapter Implementation Implementation repository repository IIOP on demand ? ?activates activates registered registered servers servers on demand and and locates locates running running servers servers ? ?uses uses the the object object adapter adapter name name to to register register and and activate activate servers servers
ORB

CORBA?Services
? CORBA?includes?specifications?for?services?that?may?be?required?by distributed?objects
– The?service?themselves?are?provided?and?accessed?as?CORBA?remote objects – An?index?to?documentation?on?all?of?the?services?can?be?found?at OMG’s web?site?at?https://www.360docs.net/doc/5d7283214.html,
Examples
? Naming: Keeps?track?of?association?between?object?names and?their?reference.?Allows?ORB?to?locate?referenced?objects ? Life?Cycle: Handles?the?creation,?copying,?moving,?and deletion?objects

Service?Examples?(cont’d)
? Event?and?Notification:?Facilitates?asynchronous communications?through?events ? Concurrency: Manages?locks?so?objects?can?share resources ? Query: Locates?objects?by?specified?search?criteria
? Trader: A?“yellow?pages” for?objects.?Lets?you?find?them by?the?services?they?provide ? Security ? Event?service?and?notification ? Persistent?object?(POS)
?…

Object?Invocation?Models
? Invocation?models?supported?in?CORBA
Request type Synchronous Failure semantics At-most-once Description Caller blocks until a response is returned or an exception is raised Caller continues immediately without waiting for any response from the server Caller continues immediately and can later block until response is delivered
One-way
Best effort delivery
Deferred synchronous
At-most-once

CORBA?IDL?Language
? Different?with?C++?in?several?additional?commonly?used keywords
– interface – module – any – attribute – in,?out,?inout – readonly – oneway – raises – exception – context

IDL?Structure
? Modules
– Similar?to?package?in?Java – Define?the?naming?scope
? Interfaces
– Inheritance?
? interface B: A{ };
– Multiple?inheritance?allowed
? interface Z: B, C { };
? Structs ? Typedefs

CORBA?IDL
struct Rectangle{ 1 long width; long height; long x; long y; }; interface Shape { 3 long getVersion() ; GraphicalObject getAllState() ; }; struct GraphicalObject { 2 string type; Rectangle enclosing; boolean isFilled; };
// returns state of the GraphicalObject
typedef sequence All; 4 interface ShapeList { 5 exception FullException{ }; 6 Shape newShape(in GraphicalObject g) raises FullException); All allShapes(); // returns sequence of remote object references 8 long getVersion() ; };
7

IDL?Module?Whiteboard
module Whiteboard { struct Rectangle{ ...} ; struct GraphicalObject { ...}; interface Shape { ...}; typedef sequence All; interface ShapeList { ...}; };

CORBA 构件模型综述

收稿日期:2004-05-19;修返日期:2004-06-26基金项目:国防预研基金资助项目(413160102) CORBA 构件模型综述 * 潘慧芳,周兴社,於志文 (西北工业大学计算机学院,陕西西安710072) 摘 要:随着计算机网络技术和应用的发展,分布构件技术成为分布式计算领域的热点,CCM 就是主流的分布构件技术之一。首先介绍了CCM 产生的背景,然后对CCM 的重要组成部分进行了详细的阐述,并对现有的基于CCM 的研究和实现进行了简要的分析,最后将CCM 与EJ B 和COM 进行了比较。关键词:构件;CORBA;CCM 中图法分类号:TP311 文献标识码: A 文章编号:1001-3695(2005)05-0014-02 An Overview of CORBA Com ponent M odel PAN Hui-fang,ZHOU Xing-she,YU Zhi-wen (School of Computer Science,Nor thwester n Polytechnical Univers ity,Xi ’an Shanxi 710072,China) Abst ract :Along wit h t he developm ent of com puter net works and applica tions,distribut ed com ponent t echnolog y becam e t he hot spot of distribut ed com https://www.360docs.net/doc/5d7283214.html, M is one of t he popular dis tribut ed com ponent technolog ies.This paper first int roduces t he background of CCM.It then describes t he m a in sect ions of CC M and a na ly zes the ex ist ing im plem ent at ions based on CC M.Fi-na lly,it com pares C CM with rela ted t echnolog ies.Key words:Com ponent;CORB A;C CM 随着网络技术的飞速发展,单个计算节点的处理能力持续提高,不同厂商和异构技术环境的不断激增,使得分布式系统的应用和开发日趋复杂。在构建企业分布式应用系统的过程中,要求系统具有可配置性、可伸缩性、可重用性和可管理性,以满足不断增长的企业应用需求。在这种情况下,分布构件技术应运而生。通过采用分布构件技术,可以降低大型分布式系统的开发难度,重用已有的代码资源,提高分布式系统的开发效率。目前,主流的服务器端分布构件技术有OMG 组织的C CM (CORB A C om ponent Model,C CM )技术,M icrosoft 的C OM (Com ponent Object M odel,C OM)技术以及S U N 的EJ B(E nt er-prise J av a Bea n,EJ B )技术。因为C ORBA 采用远程对象调用机制,支持异构环境下分布式应用系统的开发和互操作,具有与底层硬件、操作系统、网络、通信协议和编程语言无关的特点,所以被广泛地应用于大型的分布式系统中。而CCM 作为C ORB A 3.0规范的一部分,对原有的对象模型进行了扩展,从而更易于服务器端软件的重复使用和CORBA 应用程序的动态配置,因而具有广阔的应用前景。 1 CORBA 构件模型 传统的CORB A 对象模型(CORBA2.x 规范)具有一些明显的缺陷,如没有配置对象实现的标准方式,缺少对公共COR-BA 服务器编程模式的有效支持,对象功能难以扩展,CORBA 对象服务的可用性没有预先定义,对象生命周期管理没有标准化等。这些缺陷导致对象实现难以设计、重用、配置、管理和扩展。为此,OMG 在C ORBA 3.0中引入了CCM,C CM 是用于开 发和配置服务器端分布式应用的构件模型。 下面对CCM 中的抽象构件模型、构件实现框架(C IF)、容器编程模型、打包与部署模型进行详细的描述。1.1 抽象构件模型 CCM 构件提供了称为端口(Port s)的多种外部接口,以便与客户、其他构件、C ORB A 服务等进行交互。构件模型支持四种基本的Port s 。 (1)侧面(Facet s)。它是构件提供的与客户交互的相互独立的一组接口。一个构件能够提供多个对象引用,这些不同的对象引用被称为Facet s,Facet s 可以支持不同名字和功能的IDL 接口。客户通过唯一的等价接口(E quivalent Interfa ce)在构件的多个Facet s 间进行导航。Fa cet 接口的实现被封装在构件中,被看作是构件的一部分。 (2)插口(Recept acles)。它是一些指定的连接点(Connec-tion Point s),这些连接点描述一个构件使用外部构件提供的对象引用来调用其上的操作的能力。通过使用插口,构件能够与其他对象进行连接,并调用这些对象的操作。 (3)事件源/事件接收器(E vent Sources/Ev ent S inks)。它是指定发送/接收特定类型事件的连接点。事件源分为Em it-ter 和Publis her 两类,Em itt er 规定在某个时间只允许一个接收者与之连接,Publisher 允许同时有多个接收者与之连接。事件接收器允许有多个事件源与之相连。 (4)属性(At tribut es)。属性主要用于构件的配置,配置工具使用属性对构件的配置参数进行预先的设置。 CCM 引入了产地(Hom e)对构件的生命周期进行管理。一个Hom e 是某种类型所有构件实例的管理器,不同类型的 Hom e 能够管理同一类型的构件,但一个构件实例只能有一个Hom e 实例。Hom e 形式化了工厂(Fa ct ory)设计模式来管理同 ?41?计算机应用研究2005年

CORBA规范综述

CORBA规范综述张亚红宋凯 华东计算技术研究所 二OOO年三月

目录 引言 (3) 第一章CORBA 体系结构 (3) 第1.01节CORBA规范概述 (3) 第1.02节对象管理架构(OMA) (4) 第1.03节CORBA详细结构图 (5) 第二章对象服务(CORBAServices)的具体内容 (7) 第2.01节名字服务 (7) 第2.02节生存周期服务 (8) 第2.03节事件服务 (10) 第2.04节交易黄页服务 (12) 第2.05节事务服务 (13) 第2.06节并发控制服务 (15) 第2.07节安全服务 (15) 第2.08节持久性服务 (16) 第2.09节流转换服务 (18) 第2.10节查询服务 (19) 第2.11节组服务 (19) 第2.12节对象关系服务 (19) 第2.13节时间服务 (20) 第2.14节准许服务 (21) 第2.15节属性服务 (21) 第三章CORBA相关产品及CORBA的未来 (22) 第3.01节CORBA相关产品 (22) StarBus的ORB核心机制原理 (23) 第3.02节CORBA的未来 (24) 第四章程序开发一般过程 (25) 第4.01节程序开发一般过程 (25) 第4.02节用Starbus开发分布应用步骤 (27) 参考文献 (27)

引言 对象管理组织(OMG)提出的CORBA规范为实现分布式环境下的软件重用、移植和互操作提供了一套前景光明的规范,并为开放式系统的研究提供了一个很好的系统实现框架。介绍CORBA的文章已有很多,本文试图能够从结构上简而全的对它进行综述,并简 单介绍了相关产品和CORBA环境下的程序开发过程。 第一章CORBA 体系结构 第1.01节CORBA规范概述 CORBA (Common Object Request Broker Architecture)公共对象请求代理架构,是国际对象管理组织(Object Management Group OMG)制定的分布对象计算规范,目前最新版本为3.0(于1999年11月发布),目的是促进在分布、异构环境中基于对象的软件的可重用性、可移植性与互操作性,实现多厂商网络环境中应用的互操作; OMG组织是一个超过750名成员的国际组织,它包括信息系统厂商,软件开发者和用户。自1989成立以来,OMG组织一直在促进软件开发中的面向对象技术的理论与实践,该组织的合同包括建立业界的指导方针与对象管理规格说明,以提供应用开发的公共框架。主要目的是促进在分布、异构环境中基于对象的软件的可重用性、可移植性与互操作性。遵循这些规格说明有可能开发出一种跨越所有主要硬件舞台和操作系统的异构应用环境。OMG组织的目的是通过建立对象管理体系结构来发展对象技术并引导其发展方向。 CORBA是一个关于分布对象平台架构的标准化规格说明,目的是实现多厂商网络环境中应用的互操作。CORBA实现允许应用软件之间的彼此通信,而不必顾及这些应用软件的位臵是谁设计的,及它们是用什么语言实现的等问题。 CORBA标准第一版,CORBA1.1是于己于1991年推出的。它定义了CORBA接口定义语言(IDL)及应用编程接口,允许客户在CORBA通信设施的顶部与服务器对象进行交互。这些通信设施具体包含在所谓对象请求代理(ORB)。IDL提供了说明构件接口的统一的方法,它独立于符合接口要求的实现构件的编程语言。1994年下半年发布了CORBA 2.0版。它的主要增强点:给出了关于不同厂商ORB之间的互操作协议的规格说明。1997年8月,OMG组织又发布了CORBA 2.1版。它包括以下方面的规格说明:互操作性修订,IDL类型扩充,CORBA 映射,Ada映射,及CORE RTF的某些变动。CORBA标准还处于发展中,OMG组织即将发布CORBA 3.0版。CORBA 3.0版包括:可重用对象的构件,模块脚本语言规范,支持object-by-value,多个接口,对Java接口的定义语言映射,通过防火墙标准化Internet Inter-ORB协议,及集成分布计算环境的路径映射等。 OMG首先发布了OMA(对象管理体系结构),提出了构件互操作的软总线——ORB(Object Request Broker),并将构件分为三类:公共对象服务(COS)、面向领域的公共设施(CF)和完成具体任务的应用构件。在其后发布的CORBA1.0和2.0版中OMG对对象模型以及ORB的功能进行了规定。CORBA规范内容很多,其中与构件实现规范相关的主要内容包括IDL、IR和Component Model。 1. IDL

CORBA整理笔记

1、CORBA的用途:Internet是计算机联接起来,CORBA则使应用软件联接起来。 2、CORBA采用的技术: (1)面向对象技术 (2)分布式计算机模型 (3)多层体系结构:客户层、中间层(CORBA)、资源层 (4)接口技术 3、CORBA概述:(CORBA的最终目的就是分布式软件集成) 由以下形成的:(1)对象请求代理(ORB) (2)CORBA服务: 对象生存期服务 对象关系服务 对象命名服务 屏幕剪辑的捕获时间: 2012-04-26 17:21 屏幕剪辑的捕获时间: 2012-04-28 8:45 持续对象服务 对象外化服务 事件服务 对象查询服务 对象属性服务 并行服务 许可服务 对象洽谈服务 对象安全服务 对象时间服务 对象包容服务 对象启动服务 (3)CORBA工具集 横向工具集:用户界面、信息管理、系统管理、任务管 理 纵向工具集:医疗保健、金融服务、电讯、电子商务、 制造 任何功能强大、运行便利的CORBA对象都可以成为 CORBA工具集中的候选对象,甚至是CORBA工具集中的 名牌对象。

(4)符合CORBA标准的各种应用程序、对象(客户和对 象实现) CORBA接口及接口定义IDL 1、CORBA是一种以ORB为中间件的伪客户/服务器方式,CORBA灵活的伪客户/服务器方式归功于IDL 2、CORBA中的接口: CORBA中至少应该存在三组对象:CORBA客户对象、ORB对象(接口存根IDL Stub,接口框架IDL Skeleton),CORBA对象实现 (1)CORBA接口框架[IDL Skeleton]:把CORBA对象实现和ORB连接起来,主要 包括一些函数的调用代码。 (2)CORBA接口存根[IDL Skeleton]:用来连接CORBA对象和ORB,主要包括一些 函数的声明。 3、OMG IDL扼要 (1)IDL编写CORBA接口的一些基本原则:

基于TAO(The ACE ORB)的CORBA编程

CORBA Programming with TAO - 1.Start(基本概念) 摘要: 简要介绍CORBA的基本原理,并解释POA、stub、skeleton、servant等重要概念。 一、CORBA及TAO简介 CORBA是一个为简化跨平台应用而提出的规范,它独立于网络协议、编程语言和软硬件平台,支持异构的分布式计算环境和不同编程语言间的对象重用。CORBA可以作为不同平台应用间信息传递的中间件,CORBA通过引入经过充分验证的有效的框架结构和通信手段,最大限度地简化了网络通信相关应用的设计与开发,使得我们可以专注于业务逻辑的实现,而无需关心通信的细节。CORBA曾在无数文章中被称作“软总线”,以表明它作为数据传递通道的基本特性。 现在存在众多CORBA实现,既有商用的ORBacus、VisiBroker,也有一些优秀的开源实现,如:TAO、omniORB、MICO等。由于各实现遵从相同的规范,接口基本一致,所以在熟练应用一种CORBA实现后,转而使用其它实现时,一般不会存在太大的障碍。 TAO(The ACE ORB)是美国华盛顿大学的Douglas C. Schmidt教授领导开发的一个实时CORBA平台,它是一个免费的开放源码项目,用C++语言开发,符合CORBA2.6规范。 支持语言: C++ 支持平台: Win32,常见的各种Unix/Linux,实时操作系统如VxWorks等等。在所有的CORBA实现中,TAO 支持的平台是最多的。 支持的服务: Naming、Event、Notification、Security、Time、Scheduling、Logging、Lifecycle、Trading、Concurrency、Lifecycle、A/V Streaming、Load balancing等。 本系列文章将以当前最新的ACE-5.5+TAO-1.5+CIAO0.5为例,简要介绍如何应用TAO进行CORBA C++编程,其中部分内容(尤其是编译器配置相关的内容)是Windows平台特有的,但其它大多数信息在各平台上都是相同或者类似的。 二、基本概念 本文不打算深入介绍CORBA相关的理论基础(已有很多书籍、文章讨论了这些内容),但在进入下一主题前,为了便于后续问题的讨论,这里简要介绍一下CORBA的基本原理,并对几个重要的基本概念进行解释,以便为没有相关知识的朋友扫清障碍。下图是CORBA的基本模型:

CORBA接口开发详解(网络资料)

CORBA接口开发详解(网络资料) corba(公用对象请求代理体系)是基于对象技术的分布计算应用软件体系结构。corba标准主要分为三个部分:接口定义语言(IDL),对象请求代理(ORB),以及ORB之间的互操作协议IIOP,核心是对象请求代理。corba与平台和语言无关。 java IDL既是corba的一个实现,它是jdk1.3或更高版本的核心软件包之一,定义在 org.omg.CORBA及其子包中,在java IDL的支持下,开发人员可以使用如下两种方法将java 和corba集成在一起: 创建java对象并使之可在corba orb中展开;创建java类并作为 https://www.360docs.net/doc/5d7283214.html,/jinzhengquan/admin/EditPosts.aspx?catid=295786和其它orb一起展开的corba对象的客户,这种方法提供了另外一种途径,通过它java可以被用于将你的新的应用和以前遗留的系统相集成。 采用java创建corba应用,corba对象服务的实现方式分为两种:对象的命名引用方式和字符串化对象引用方式,创建corba应用程序的过程大体如下:编写IDL接口定义文件;将接口定义文件编译为相应高级语言源代码,产生服务器框架与客户端存根;基于服务器框架,编写服务对象实现程序;基于客户端存根,编写客户对象调用程序;分别编译客户对象和服务对象程序;运行服务对象和客户对象程序。 第一步下载JacORB并配置jacORB 1,解压JacORB-2.3.0-bin,将jacORB拷贝到c:\jacORB; 2,修改c:\jacORB\bin下的文件,去掉idl.tpl,idl.bat.tpl,jaco.tpl和jaco.bat.tpl文件的后缀名".tpl"; 3,在jacORB目录下建立classes文件夹,将etc中的jacorb_properties.template文件拷贝到classes下,将文件中(*)https://www.360docs.net/doc/5d7283214.html,Service=file:/c:/NS_Ref修改为 (*)jacorb.naming.ior_filename=c:/NS_Ref,并将文件名改为jacorb.properties 4,在dos下输入ns即可。 但是在运行期间会出现org.omg.CORBA.TRANSIENT: Retries exceeded, couldn't reconnect to 127.0.0.1:900 vmcid: 0x0 minor code: 0 completed: No” 所以改用明命令 tnameserv -ORBInitialPort 30000 源代码中用指定参数初始化ORB的代码形如: Properties props = System.getProperties(); props.setProperty("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB"); props.setProperty("org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton"); // 启动命名服务需要的参数

CORBA技术及实例

作者:easyinfonet email: easyinfonet@https://www.360docs.net/doc/5d7283214.html, 日期:2000-11-14 23:15:19 5.3 CORBA技术及实例 CORBA是一种规范,它定义了分布式对象如何实现互操作。在WorldWideWeb盛行之前,特别是Java编程语言风靡之前,C++开发者基本将CORBA作为其高端分布式对象的解决方案。 实际的CORBA规范归对象管理组(ObjeotManagementGroup)管辖,这是一家由700多家公司组成的开放的研讨会,其工作是制订对象计算的开放标准。CORBA对象可以用任何一种CORBA软件开发商所支持的语言,如C、C++、Java、Ada和Smalltalk,来编写。同样地,CORBA对象可以运行在任何一种CORBA软件开发商所支持的平台上,如Solaris,Windows95/NT,OpenVMS、DigitalUnix、HP-UX或AIX等。这意味着,我们可以在Windows95下运行Java应用程序,同时动态调入并使用C++对象,而实际上,该对象可能存储于一个在Internet上的UnixWeb服务器上。 使用接口描述语言(InterfaceDescriptionLanguage)编写的对象接口,使得与语言无关的独立性成为可能。IDL使得所有CORBA对象以一种方式被描述,仅仅需要一个由本地语言(C/C++、CORBA、Java)到IDL的“桥梁”。CORBA对象的互通信要以对象请求解析器(Object Request Broker)为中介,这种互通可以在多种流行通信协议之上(如TCP/IP或是IPX/SPX)实现。在TCP/IP上,来自于不同开发商的ORB用InternetInter-Orb协议(IIOP)进行通讯,这是CORBA2.0标准(最新的版本)的一部分。 目前,对于较为流行的编程语言(包括C++,Smalltalk,Java和Ada95),已经有了许多第三方的ORB。随着其他语言的逐渐流行,CORBA开发商毫无疑问地要做出相应的ORB 来支持它们。 5.3.1 CORBA简介 最初,OMG在1990年制订了对象管理体系(ObjectManagementArchitecture),即OMA,来描述应用程序如何实现互操作。作为其中的一部分,需要有一个标准规范应用程序片段即对象的互操作──这导致了CORBA的诞生。OMA定义了组成CORBA的四个主要部分。(图1.1) 图1.1 OMG的CORBA参考模型 l Object Request Broker,ORB作为对象互通讯的软总线。 l Object Services,定义加入ORB的系统级服务,如安全性、命名和事务处理。 l Common Facilities定义应用程序级服务,如复合文档等。 l Application Interface 定义现实世界的对象和应用,如飞机或银行帐户。1.ObjectRequestBroker详述 OMA最重要的部分就是ORB。为了创建一个遵从CORBA规范的应用程序,ORB是CORBA 四大部分中唯一必须提供的。许多ORB版本根本不带CORBAServices或是CORBAFacilities,你可以自制(或购买)商用对象。但是,没有ORB,CORBA应用程序绝对无法工作。(图5.2) 图5-.2 单个ORB的体系结构 CORB ORB最显见的功能,是对你的应用程序或是其它ORB的请求予以响应。在CORBA 应用程序运行期间,你的ORB可能被请求做许多不同的事情,包括: 在线代理|网页代理|代理网页|https://www.360docs.net/doc/5d7283214.html,

corba中间件

Java&CORBA编程实例 Java IDL技术在Java平台上添加了CORBA(Common Object Request Broker Architecture)功能,提供了基于标准的互操作能力和连接性。Java IDL技术使得分布式的Java Web应用能够通过使用工业标准的IDL和IIOP(Internet Inter-ORB Protocol)来透明地调用远程网络服务的操作。运行时组件(Runtime Components)包括了一个用于分布式计算且使用IIOP通信的Java ORB. 可移植对象适配器(Portable Object Adapter,POA)CORBA对象的负责分隔服务器端远程调用句柄(handler)到远程对象和它的服务者(servant)。对象由远程调用所暴露,而服务者包含实际处理这些请求的方法。每个对象都可以选择服务者为静态的(一次)或动态的(每个远程调用),在这两种情况下,都允许调用转移到另一台服务器。 在服务器端,POA形成了类似树状的结构,每个POA都负责一到多个服务的对象。树的分支可以是独立活动的、或钝化的,服务者调用有不同的代码和不同的请求处理策略。 API规范 * org.omg.CORBA 包- 提供了OMG CORBA APIs到Java 编程语言的映射 * org.omg.CosNaming 包- 为Java IDL提供命名服务 * org.omg.PortableServer 包- 为建立服务器端的可移植的、跨越多ORB的应用程序提供类和接口 * org.omg.PortableInterceptor 包- 提供了注册ORB钩子的机制,此钩子通过ORB服务能截取正常的ORB执行流* org.omg.DynamicAny 包- 提供了使得任何值都能被动态解释(或遍历)和通过DynAny对象构造出来的类和接口* org.omg.CORBA.ORB - 为CORBA ORB功能的API

CORBA接口开发详解

针对电信行业CORBA接口开发详解 作者:文章来源: 发布日期:2005年01月01日浏览次数:1次CORBA基本介绍 CORBA(公用对象请求代理体系)是OMG(对象管理组织)于1991年提出的基于对象技术的分布计算应用软件体系结构。CORBA标准主要分为三个部分:接口定义语言(IDL)、对象请求代理(ORB),以及ORB之间的互操作协议IIOP,核心是对象请求代理。CORBA可以抽象系统平台、网络通讯及编程语言的差异。通过在CORBA技术规范中定义多种类型的服务,如名字服务(Naming Service)、事务服务(Transaction Service)、对象生命期服务(LifeCycle Service)、并发控制服务(Concurrency Control Service)、时间服务(T ime Service)等功能,为应用软件开发者提供一个全面、健壮、可扩展的分布对象计算平台,使面向对象的应用软件在分布异构环境下方便地实现可重用、易移植和互操作。 与RMI比较 与RMI 不同,CORBA 不属于Java 平台本身。OMG(Object Management Group,对象管理组织)发明了CORBA 规范,CORBA 被设计成与平台和语言无关。因此,CORBA对象可以运行于任何平台之上,位于网络的任何位置,还可以用任何语言(包括 Java、C、C++和Smal ltalk 等)编写,只要该语言具有IDL(Interface Definition Language,接口定义语言)的映射。 与RMI 相比,CORBA 是为更大、可伸缩更强的系统准备的,在这些系统中可能有数千个对象;CORBA 的编程和部署比RMI 更复杂,但允程序员开发需要事务、安全性等支持的企业级系统;CORBA 的命名服务也比RMI 命名注册功能更强大和灵活。 CORBA 的实现称为ORB(Object Request Broker,对象请求代理)。Java IDL 即是CO RBA 的一个实现,它是JDK1.3 或更高版本的核心软件包之一,定义在org.omg.CORBA及其子包中。在Java IDL 的支持下,开发人员可以使用如下两种方法将Java 和CORBA 集成在一起: ???创建Java 对象并使之可在CORBA ORB 中展开, ???创建Java 类并作为和其它ORB 一起展开的CORBA 对象的客户。这种方法提供了另外一种途径,通过它Java 可以被用于将你的新的应用和以前遗留的系统相集。 采用Java创建CORBA应用 CORBA对象服务的实现方式分为两种:对象的命名引用方式和字符串化对象引用方式。不论采用何种高级语言,创建CORBA应用程序的过程大体如下: ●编写IDL接口定义文件; ●将接口定义文件编译为相应高级语言源代码,产生服务器框架与客户端存根; ●基于服务器框架,编写服务对象实现程序;

CORBA版HelloWorld

CORBA学习报告 CORBA,就是一个很古老得技术,甚至诞生于Java之前,不过随着WebService、SOA、RMI 等等技术得出现,CORBA由于过于复杂而渐渐淡出了人们得视线,不过在一些交互性很强得 系统异构应用领域,CORBA似乎很重要,比如中国联通、移动、美国得数字电视系统应用领域,就是CORBA把整个系统核心部分集成起来得。如果没有异构得、需要预留标准接口得、交互性很强得应用,您不应该考虑使用COBRA。 下面就是经过我得学习之后对CORBA所做得简单总结: 通用对象代理体系结构CORBA(mon Object Request Broker Architecture)就是对象管理组织所定义得用来实现现今大量硬件、软件之间互操作得解决方案,CORBA也就是迈向面向对象标准化与互操作得重要一步。 CORBA技术简介 简单地说,CORBA允许应用之间相互通信,而不管它们存在于哪里以及就是谁设计得。CORBA1、1于1991年由OMG发布,其中定义了接口定义语言(IDL)以及在对象请求代理(ORB)中实现客户对象与服务器对象之间交互得应用编程接口(API)。CORBA2、0于1994年发布,规定了各个供应商之间得ORB得通信规则。 CORBA标准主要分为三个部分:接口定义语言(IDL)、对象请求代理(ORB)以及ORB之间得互操作协议IIOP。 ORB就是对象之间建立Client/Server关系得中间件。使用ORB,客户可以透明地调用一个服务对象上得方法,这个服务对象可以在本地,也可以在通过网络连接得其她机器上。ORB 截获这一调用同时负责查找实现服务得对象并向其传递参数、调用方法返回最终结果。客户并不知道服务对象位于什么地方,它得编程语言与操作系统就是什么,也不知道不属于对象接口得其她系统部分。这样,ORB在异构分布环境下为不同机器上得应用提供了互操作性,并无缝地集成了多种对象系统。 在开发传统得Client/Server应用时,开发者使用她们自己设计得或一个公认得标准来定义用于设备之间通信得协议。协议得定义依赖于实现语言、网络传输与许多其她因素,而ORB得出现简化了这一过程。使用ORB时,协议就是使用接口定义语言(IDL)定义得,而IDL 就是独立于语言得。并且ORB提供很强得灵活性,它使程序员选择最适合得操作系统、执行环境,甚至系统各个组件也可以采用不同得编程语言实现。更重要得就是,它允许现有组件得集成。在一个基于ORB得解决方案中,开发者可以使用与创建新对象一样得IDL对遗留系统进行建模,她们创建“包装”代码以在标准化得软件总线与遗留系统接口之间传递信 息。

CORBA_IDL

OMG IDL已经为C、C++、Java等主要高级程序设计语言制定了IDL到高级编程语言的映射标准。项目开发人员可以根据需要选择自己最熟悉的编程语言来独立开发基于CORBA 的应用,而对软件系统的互操作能力不产生影响。 1. IDL的语法规则 OMG IDL文件举例 module Compute { typedef double radius;

typedef long times; interface PI { double getResult( in radius aRadius, in times time); } } 上述接口定义文件主要用于客户端向服务对象提出请求:计算π值。因此,模块中定义了一个方法getResult(),以圆的直径(aRadius)和迭代次数(times)作为该方法的输入参数。 2. OMG IDL词法规则

OMG IDL采用ASCII字符集构成接口定义的所有标识符。标识符由字母、数字和下划线的任意组合构成,但第一个字符必须是ASCII字母。IDL认为大写字母和小写字母具有相同的含义,例如anExample和AnExample是相同的。 与C++和Java类似,采用以“/*”开始,以“*/”结束来注释一段代码,以“//”开始注释从“//”开始直至行尾的所有内容。 另外,IDL保留了47个关键字,程序设计人员不能将关键字用作变量或方法名。需要注意的是关键字的大小写,例如:typedef double context;

//错误:定义的变量context是关键字 typedef double CONTEXT; //错误:CONTEXT与关键字context冲突 3. 数据类型 (1)基本数据类型:OMG IDL基本数据类型包括short、long和相应的无符号(unsigned)类型,表示的字长分别为16、32位。 (2)浮点数类型:OMG IDL浮点数类型包括float、double 和long double类型。其中float表示单精度浮点数,double

华为北向CORBA接口概述

M2000 北向CORBA接口开发指南 1 北向CORBA接口概述 1北向CORBA接口概述关于本章 北向CORBA接口概述包括M2000提供的北向CORBA接口定义和接口功能。 1.1 北向CORBA接口定义 北向接口是网元管理系统EMS(Element Management System)和网络管理系统NMS (Network Management System)之间的接口,北向CORBA接口遵循CORBA协议、FTP 协议和3GPP协议。 1.2 北向CORBA接口功能 Itf-N的接口管理功能需求可以分为不同的管理域,如公共管理功能、配置管理和故障管 理等。

1.1 北向CORBA 接口定义 北向接口是网元管理系统EMS (Element Management System )和网络管理系统NMS (Network Management System )之间的接口,北向CORBA 接口遵循CORBA 协议、FTP 协议和3GPP 协议。 北向接口 NMS 通过北向接口获取EMS 管理的网元的相关信息(如告警数据、配置数据等),并 下发相关的操作指令,北向接口如图1-1所示。 图1-1 北向接口示意图 在移动通信网络中,M2000作为一个EMS 系统,通过北向接口向NMS 提供告警数 据、配置数据等网络管理功能。 接口协议 表1-1描述了接口协议的相关信息。 表1-1 接口协议 1 北向CORBA 接口概述M2000北向CORBA 接口开发指南

M2000 北向CORBA接口开发指南 1 北向CORBA接口概述

1 北向CORBA接口概述 M2000北向CORBA接口开发指南

CORBA 体系结构

CORBA 体系结构 摘要:CORBA 规范被称为是面向21世纪的软件总线,已经成为流行的分布对象计算规范。本文重点分析了CORBA的体系结构和实现机制, 详细描述了ORB 的体系结构和CORBA 的运行流程,并给出了一个利用CORBA实现c++和java 混合编程的实例。 一、CORBA 简介 CORBA 是 OMG 定义的分布式应用程序的标准结构。它的目的是为了简化开发分布式应用程序的复杂性,用于创建一个基于对象的跨平台的分布式结构。为了实现上述目标,OMG 组织制定了 OMA(Object Management Architecture , 对象管理体系结构) 参考模型。该模型描述了 OMG 的规范所遵循的概念化的结构基础,其核心部分是 ORB (Object Request Broker , 对象请求代理) 。基于ORB 机制就可以充分利用分布的、可以互操作的对象构造和可以互操作的应用。这种优势是明显的,用户可以在不了解实现交互细节的情况下,建立共享资源的应用。 CORBA 是一个透明的中介分布式对象标准,遵循 CORBA 标准编写的分布式对象可以在许多平台中执行。以 C + + Builder5. 0 中所使用的 Inprise 公司的 VisiBroker 为例,目前其所支持的平台有 Windows 95/ 98 , Windows NT , Solaris , HP - UX ,IBM AIX ,SGI , IBM 390 以及 Dec。此外CORBA也是一个语言无关的对象标准,同样可以使用多种语言来开发 CORBA 对象及客户端应用程序,甚至可以混合各种语言来开发 CORBA 应用系统。 二、CORBA 的体系结构 1、CORBA 的体系结构与实现机制 在 CORBA 应用系统中主要分为两部分:一是位于应用程序服务器中的CORBA 对象,另一个是应用使用的客户程序。这些客户程序通过 CORBA 技术使用CORBA 对象提供的服务来完成其工作。CORBA 规范定义了客户程序与服务程序中的对象如何进行通信的机制。对象请求代理(ORB) 负责处理它们之间的通信。ORB 提供了支持分布式处理的机制:为请求查找具体的对象实现, 让对象实现作好接收请求的准备,传送构成请求的数据等。客户所看到的接口完全独立于对象所在的物理位置,实现对象的编程语言,以及在对象的接口中没有反映出来的其他特性。ORB通过IDL程序框架或动态程序框架来定位相应的实现代码,传送参数,以及对对象实现的传送控制。处理通信的对象分别称为存根和构架。客户端为存根(Stub) ,服务器端为构架(Skeleton) 。在客户端存根对象担当CORBA对象的代

corba应用实例

CORBA应用实例 CORBA对象服务的实现方式分为两种:对象的命名引用方式和字符串化对象引用方式,这个例子采用的方式是命名引用方式。不论采用何种高级语言,创建CORBA应用程序的过程大体如下: 1、编写IDL接口定义文件; 2、将接口定义文件编译为相应高级语言源代码,产生服务器框架与客户端存根; 3、基于服务器框架,编写服务对象实现程序; 4、基于客户端存根,编写客户对象调用程序; 5、分别编译客户对象和服务对象程序; 6、运行服务对象和客户对象程序; CORBA实例分析 下面通过一个实例,描述如何通过Java创建CORBA应用程序。 1. 接口定义(Hello.idl) Hello.idl module HelloApp{ interface Hello { string sayHello(); oneway void shutdown(); }; }; 通过Sun提供的将IDL文件编译成Java源代码的工具idlj(jdk1.3.0_01以上版本),为接口定义文件生成客户端存根和服务器框架。具体操作如下:idlj -fall Hello.idl 编译后将在HelloApp 子目录中形成以下六个文件: n _HelloPOA.java 该抽象类是一个服务器skeleton和POA的结合,它可为服务器提供基本的CORBA 功能,实现了InvokeHandler接口和HelloOperations接口。 n _HelloStub.java 该类是客户机stub,可为客户机提供CORBA 功能。它实现Hello.java 接口。 n Hello.java 该接口含有IDL 接口的Java 版本。Hello.java 接口扩展org.omg.CORBA.Object 并提供标准的CORBA 对象功能。 n HelloHelper.java 这是一个终态类,可以提供辅助功能,特别是提供将CORBA 对象引用转换为适当类型所需的narrow() 方法。

相关主题
相关文档
最新文档