CORBA 程序设计指南

合集下载

CORBA技术简介

CORBA技术简介

CORBA技术简介⾸先CORBA是⼀个协议,和语⾔和平台⽆关通⽤对象代理体系结构CORBA(Common 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提供很强的灵活性,它使程序员选择最适合的操作系统、执⾏环境,甚⾄系统各个组件也可以采⽤不同的编程语⾔实现。

更重要的是,它允许现有组件的集成。

第二章 中间件Corba_初步

第二章 中间件Corba_初步
道当时目标对象是否处于活动状态(即是否处于正在运行的 进程中)。此时,如果目标对象不是活动的,在把请求传给 它之际,ORB会透明地将它激活。
山东大学计算机科学与技术学院
透明性
– 对象通信机制:客户不必知道ORB所用的下层通信机 制,如,TCP/IP、管道、共享内存、本地方法调用 等。
– 数据表示:客户不必知道本地主机和远程主机对数据 表示方式,如高位字节在前还是在后等,是否有所不 同。
山东大学计算机科学与技术学院
OMA(对象管理体系结构)
山东大学计算机科学与技术学院基础技术教学部
记住Corba
C-ORB-A: “Common” + “ORB” + “Architecture”
通用“orb”体系结构
Orb: Object request broker 对象请求代理:通过
ORB是OMA参考模型的核心, 提供了最基本的通信枢纽设施(分布式对象之间透
明的地发送请求或接收响应的基本机制),独立于
实现对象的特定平台与技术。
是基于分布式对象构建应用程序的基础设施,保证
了在异构平台上对象的互操作性与可移植性
山东大学计算机科学与技术学院
ORB
ORB(Object Request Broker)是对象总线。 1 通过ORB,一个client可以透明的调用同一台机器上或 网络上的一个server对象的方法。 2 ORB解释该调用并负责查找一个实现该请求的对象,
接口定义添加到接口库服务中
接口库服务将对象接口定义中的内容表达为不同类型对象的
层次结构,为应用程序运行时动态访问对象接口定义提供服 务
IDL定义与接口库表达相同信息,只是两者组织方式不同 客户程序只能通过对象的接口定义了解对象的逻辑结构

CORBA服务

CORBA服务

CORBA服务CORBA (Common Object Request Broker Architecture)是一种分布式计算平台,旨在使不同的计算机系统能够相互通信和交互。

CORBA服务是由CORBA技术提供的一种机制,用于简化分布式系统中的通信和互操作。

CORBA服务可以被视为一种软件组件,可以在网络上的不同计算机之间进行通信。

它提供了一个中间件层,用于处理不同计算机之间的通信细节,例如数据序列化、网络传输和安全性。

这使得开发人员可以将重点放在业务逻辑上,而不必担心底层通信机制。

在CORBA服务中,存在两个主要角色:客户端和服务器。

客户端是请求CORBA服务的应用程序,而服务器是提供CORBA服务的应用程序。

客户端向服务器发送请求,服务器根据请求执行相应的操作,并将结果返回给客户端。

CORBA使用一个称为ORB(Object Request Broker)的组件来协调客户端和服务器之间的通信。

CORBA服务提供了一种透明的方式来访问远程对象。

远程对象是分布在不同计算机上的对象,可以通过CORBA服务进行远程访问。

客户端不需要了解远程对象的位置和实现细节,只需要知道对象的接口定义。

这种透明性使得客户端可以轻松地访问远程对象,同时也降低了系统的耦合度。

CORBA服务的另一个重要特点是面向对象的。

它支持面向对象的概念,例如继承、封装和多态。

通过使用面向对象的概念,开发人员可以更容易地设计和实现复杂的分布式系统。

CORBA服务还提供了一些高级功能,例如事务处理和持久性。

事务处理允许开发人员将多个操作组合成一个原子操作,以确保数据的一致性和完整性。

持久性允许对象在服务器重启后保持其状态,以便客户端可以继续与对象交互。

总的来说,CORBA服务为分布式系统提供了一种简单、灵活和可扩展的通信机制。

它通过隐藏底层通信细节和提供丰富的功能,使得开发人员可以更容易地开发和维护分布式应用程序。

同时,CORBA服务还具有跨平台性,可以在不同的操作系统和编程语言之间进行通信。

基于CORBA技术的分布式电力监控系统的设计

基于CORBA技术的分布式电力监控系统的设计

级之间存在信息交换难等问题。以电力通信为例 ,
就有 C T( ylDaa rnmii D C c t as tn 环数据 发送 ) e T t g循 , D P( ir ue t okPooo 分 布 式 网 络 协 N Ds i t New r rtc1 tb d 议 )IC 0 7 ,E 6 80—5 国际 电工 委员 会 ) 列数 十种之 ( 系
相对的或多层次的。支持客户访问异地分布对象的 核心 机 制 称 为 对 象 请 求 代 理 ( betR q etBo O jc eus r—
字节流的方式 , 这种方式在运行效率 、 系统网络安全 性和系统升级能力等方面具有一定 的局限性 , 出现 了电力监控系统在不同厂家的网络产品、 硬件平台、 网络协议异构环境下运行 , 以及现场监控级 与管理
1 分布式对象概述
分布式对象存在于网络的任何地方, 可被远程客 户应用以方法调用的形式访 问。至于分布式对象是 使用何种程序设计语言和编译器所创建 , 对客户对象 来说是透明的。客户应用不必知道它所访问的分布 式对象在网络中的具体位置 以及运行在何种操作系 统 上 , 分布 对 象 与客 户 应用 可 能在 同一 台计算 机 该 上, 也可能分布在由广域网( I e e) 如 n m t相连的不同 t 计算机上。分布对象具有动态性 , 它们可以在网络上 到处移动。独立于特定的程序设计语言和应用系统、
器计算模型, 该模型将分布在 网络上的全部资源( 无 论是系统层还是应用层) 都按照对象的概念来组织 ,
每个对象都有定义明晰的访问接 口。创建和维护分 布对象实体的应用称为服务器, 按照接 口访问该对
接E 剧1 l 工塞 1 f 仓 I 壑
声 喜
桩l ∞端 l

第10章 CORBA

第10章  CORBA

上下文:请求的上下文提供了能够影响请求完成的 附加的特定操作信息。
(4) IDL与Java 及C++的对应关系
CORBA IDL 模 块 (Module) 接 口 (Interface) 方 法 (method) Java 包 (Package) 接 口 (Interface) 方 法 (method) C++ 命 名 空 间 (Namespace) 纯 成 抽 员 象 函 类 数 (Pure (member Abstract class) function)
(3) OMG IDL的操作
操作名: 参数:in, out, inout; 返回结果: 异常:用来表示操作请求没有被成功地完成。 执行语义:
• 最多一次(at-most-once):如果操作请求能够成功地返 回,那么该操作只被执行一次(exactly once),如果返 回异常,那么该操作是最多执行一次(at-most-once)。 没有oneway修饰符的操作都属此类,即同步或延迟同步 的操作调用方式都是这种语义。 • 最大努力(best-effort):不能返回任何结果,且请求者从 不与操作是否结束相同步。具有oneway修饰符的操作属 此类。
CO RBA C L IE N T PR OGRAM R U N -T I M E L IB R A R IE S S ER VER PR OGRAM
10.3 对象请求代理ORB互连协议
对象请求代理ORB(Object Request Broker): 定义异构环境下对象透明地发送请求和接收响应 的基本机制。ORB 为客户隐藏:
3. IDL到编程语言的映射
定义相应编程语言所用到的数据类型的定义,如: OMG IDL Java short short long long long long octet byte 通过ORB能够进行对象访问的函数接口等。如:客户 存根接口的结构、对象适配器的结构、ORB接口的结 构等。 定义了对象调用和客户的控制线程之间的交互和实现, 以实现程序的控制线程和对象调用之间的同步 目前有:Ada、C、C++、Java、Lisp、COBOL、 Python、Smalltalk。

基于CORBA技术的程控交换机控制系统的设计与实现

基于CORBA技术的程控交换机控制系统的设计与实现

( t r ne . al y lsi t f o t e t a Un v r i . h n s a 1 0 5 Newo kCe tr R i wa n t u eo u he n r l ie s y C a g h 4 0 7 1 t S t
【 s at f eeaeMu o S C ec a g sf moJetl—O l n alnsse Aht e l h r r d f P x h n e n ll e e mlu k t ytm I re oc nrl n ag hs itlu e P r s i e l o no d rt o to a d ma a eteedsrb t S C d
【 ywo d 】 CORR Dsrb tdo jc te n lg ; wl h o to Ke rs A; i iue bete h oo y S t nr l t  ̄ c
程控交换机 控制 系统足移动通信综合业务管理 系统 的一 个 于系统。丰要 完成Xfas s , c和G M交换机移动业务操作 的处 j 理 ,是综台 业务 系统 ・其他予系统 与程控交换机 之间的一个 1 中问层 ,负责接受对立换机发出的操作 请求 ,经 过安全性 、 完搀性枪查后转换成对应 的交换机指令 ,完成与交换机的交 互 。系统提供 的功能 主要有 :模 拟或数 字手 }停, 几 开机 ,限 制/ 国际漫游、 限制/ 数字短消息等数十项服务 ,以 开通 开通 及对交换机管理 和控 制。在系统中 ,涉及到模拟和数字 两类 交换 机 ,交换 机 可能 有不同 的通信 议接 几与控制终端 连 接 ,各个交换机 分别位于不刷 的地 区局 在这种情况下 ,如
e c a e d “'r a i e a pe a f r ,t s p p r i t o uc CORBA o r a ie s r i e c n r l x h ng s a d e l n o n pl to m hi a e l r d c z t e l e v c o t o SPC x h g s z of e c an e AIt a de tmt he s f i ,we

实 验 报 告

实 验 报 告

电子科技大学计算机学院
标准实验报告
(实验)课程名称:中间件技术
(实验)项目名称:基于mico开源CORBA中间件
编写一个分布式调用服务
电子科技大学研究生院
电子科技大学实验报告
一、实验目的:
本实验的目的和任务是,通过利用基于mico的开源CORBA中间件编写一个分布式调用服务的小型软件,让学生理解中间件的基本原理,并掌握进行CORBA程序设计和开发的基本方法。

二、实验内容:
1)服务器实现一个网格,其结构如图1所示。

网格有高度和宽度,客户端可以设置和读取这两个属性。

网格由若干网格单元组成,每个单元有一个类型为整型的值,客户端可以设置和读取单元值。

另外,一旦网格的高度和宽度以及网格的单元值三者中任意一个发生变化,须立即通知客户端作相应处理,反映出该变化。

图1
2)系统由一个服务器和两个客户端组成,如图2所示。

图2
3)服务器端使用c++开发语言。

两个客户端分别使用c++和Java两种开发语言。

三、实验步骤:
本实验没有标准实验步骤,以下是依照软件工程的原理所列出的参考实验步骤:
第一阶段:系统分析,相关技术研究
第二阶段:系统算法研究和设计、相关的研究报告
第三阶段:系统实施,相关的设计报告
第四阶段:系统测试、总结,相关的测试报告
四、总结及心得体会:。

1--Corba整体介绍

1--Corba整体介绍

CORBA的产生 CORBA的产生
CORBA的产生有其特定的背景,它是在面 向对象的技术兴起,客户/服务器模式普遍 得到应用的前提下,为屏蔽通信和实现细 节的需求,继承已有系统,消除“孤岛” 现象而产生的。
最 初,OMG 在1990 年 制 订 了 对 象 管 理 体 系(Object Management Architecture), 即 OMA, 来 描 述 应 用 程 序 如 何 实 现 互 操 作。 作 为 其 中 的 一 部 分, 需 要 有 一 个 标 准 规 范应用程序片段即对象的互操作──这 导 致 了CORBA 的 诞 生。
Client
远程引用
Object Request Broker 详 述
OMA 定 义 了 组 成CORBA 的 四 个 主 要 部 分:
(1) 对象请求代理ORB(Object Request Broker)。
(2) 对象服务(Object Services)
(3) 公共设施(Common Facilitites)
(4) Business Objects
对象请求代理ORB(Object 对象请求代理ORB(Object Request Broker)
(1) 对象请求代理ORB(Object Request Broker): 负责对象在分布环境中透明地收发请求和响应, 它是构建分布对象应用、在异构或同构环境下实 现应用间互操作的基础。ORB是一个中间件,他 在对象间建立客户-服务器的关系。通过ORB, 一个客户可以很简单地使用服务器对象的方法而 不论服务器是在同一机器上还是通过一个网络访 问。ORB截获调用然后负责找到一个对象实现这 个请求,传递参数和方法,最后返回结果。客户 不用知道对象在哪里,是什么语言实现的,他的 操作系统以及其他和对象接口无关的东西。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CORBA 程序设计指南(入门)Author: 龙湘明Company: 北京邮电大学国家重点实验室Date : 2001-2-28Update : 2013-07-12这里假设你对CORBA毫无所知。

对JAVA略有所知,因为这里使用JAVA作为程序设计语言。

学习了本书,你将对CORBA有个初步了解,并能编写一个简单完整的CORBA 应用程序。

1.C ORBA 简介CORBA(Common Object Request Broker Architecture)是为了实现分布式计算而引入的。

为了说明CORBA在分布计算上有何特点,我们从它与其它几种分布计算技术的比较中进行说明。

与过去的面向过程的RPC(Remote Procedure Call)不同,CORBA是基于面向对象技术的,它能解决远程对象之间的互操作问题。

MicroSoft 的DCOM (Distributed Component Object Model)也是解决这一问题的, 但它基于Windows操作系统,尽管到本书编写时,DCOM已有在其他操作系统如Sun Solaris, Digital Unix, IBM MVS 上的实现,但毫无疑问,只有在微软的操作系统上才会实现得更好。

而只有CORBA是真正跨平台的,平台独立性正是CORBA的初衷之一。

另一种做到平台无关性的技术是Java RMI(Remote Method Invocation),但它只能用JAVA实现。

CORBA与此不同,它通过一种叫IDL(Interface Definition Language)的接口定义语言,能做到语言无关,也就是说,任何语言都能制作CORBA组件,而CORBA组件能在任何语言下使用。

因此,可以这样理解CORBA:CORBA一种异构平台下的语言无关的对象互操作模型。

1.1 CORBA体系结构CORBA的体系结构如下:图1.1 CORBA体系结构CORBA上的服务用IDL描述,IDL将被映射为某种程序设计语言如C++或Java,并且分成两分,在客户方叫IDL Stub(桩), 在服务器方叫IDL Skeleton(骨架)。

两者可以采用不同的语言。

服务器方在Skeleton的基础上编写对象实现(Object Implementation),而客户方要访问服务器对象上的方法,则要通过客户桩。

而双方又要通过而ORB(Object Request Broker,对象请求代理)总线通信。

与传统的Client/Server模式(我们称为Two-tier client/server)不同,CORBA是一种multi-tier client/server architecture,更确切的说,是一种three-tier client/server模式。

双重客户/服务器模式存在的问题是两者耦合太紧,它们之间采用一种私有协议通信,服务器的改变将影响到客户方。

多重客户/服务器与此不同,两者之间的通信不能直接进行,而需要通过中间的一种叫代理的方式进行。

在CORBA中这种代理就是ORB。

通过它,客户和服务器不再关心通信问题,它们只需关心功能上的实现。

从这个意义上讲,CORBA是一种中间件(Middleware)技术。

下面列出CORBA中的一些重要概念,或者说CORBA中的几个重要名词,有助于读者了解CORBA的一些重要的方面。

1.2 CORBA中的几个概念1.2.1 ORB(Object Request Broker)CORBA体系结构的核心就是ORB。

可以这样简单理解:ORB就是使得客户应用程序能调用远端对象方法的一种机制。

图1.2 ORB模型具体来说就是:当客户程序要调用远程对象上的方法时,首先要得到这个远程对象的引用,之后就可以像调用本地方法一样调用远程对象的方法。

当发出一个调用时,实际上ORB 会截取这个调用(通过客户Stub完成,“提高”篇中会详细解释),因为客户和服务器可能在不同的网络、不同的操作系统上甚至用不同的语言实现,ORB还要负责将调用的名字、参数等编码成标准的方式(称Marshaling)通过网络传输到服务器方(实际上在同一台机器上也如此),并通过将参数Unmarshaling的过程,传到正确的对象上(这整个过程叫重定向,Redirecting),服务器对象完成处理后,ORB通过同样的Marshaling/Unmarshaling方式将结果返回给客户。

因此,ORB是一种功能,它具备以下能力:1.对象定位(根据对象引用定位对象的实现)2.对象定位后,确信Server能接受请求3.将客户方请求通过Marshaling/Unmarshing方式重定向到服务器对象上4.如果需要,将结果以同样的方式返回。

1.2.2 IDL(Interface Definition Language)IDL,接口定义语言,是CORBA体系中的另一个重要概念。

如果说ORB使CORBA 做到平台无关,那么IDL, 则使CORBA做到语言无关。

正像其名字中显示的那样,IDL仅仅定义接口,而不定义实现,类似于C中的头文件。

实际上它不是真正的编程语言。

要用它编写应用,需要将它映射它相应的程序设计语言上去,如映射到C++或JAVA上去。

映射后的代码叫Client Stub Code和Server Skeleton Code。

IDL的好处是使高层设计人员不必考虑实现细节而只需关心功能描述。

IDL可以说是描述性语言。

设计IDL的过程也是设计对象模型的过程。

它是编写CORBA应用的第一步,在整个软件设计过程中至关重要。

IDL的语法很像C++,当然也像Java。

很难想像一个程序设计人员是不懂C或Java的,所以,几乎所有的程序设计人员都能迅速理解IDL。

而这正是IDL设计者所希望的。

下面是一个IDL定义的简单例子:// grid.idl// IDL definition of a 2-D grid:module simpleDemo{interface grid {readonly attribute short height; // height of the gridreadonly attribute short width; // width of the grid// IDL operations// set the element [row,col] of the grid, to value:void set(in short row, in short col, in long value);// return element [row,col] of the grid:long get(in short row, in short col);};};This IDL defines an interface for a grid CORBA object that maintains a grid or 2-D array of data values, which a client can access or modify remotely.Module类似于Java中包(Package)的概念,实际上module simpleDemo映射到JAVA 正是package simpleDemo。

而Interface类似于C++中的类(classs)声明,或是Java中的Interface 定义。

附录中列出了IDL的全部语法。

1.2.3 Stub Code 和Skeleton CodeStub code 和Skeleton Code 是由IDL Complier自动生成的,前者放在客户方,后者放在服务器方。

不同厂商的IDL complier生成的Stub 和Skeleton会略有区别,但影响不大。

如上面的grid.idl, 编译后,Stub Code包含以下文件:grid.java_gridStub.javagridHelper.javagridHolder.javagridOperations.javaSkeleton Code则包含以下文件:gridOperations.javagridPOA.javagridPOATie.java(在Stud Code 也包含gridOperations.java, 是因为在使用Call back机制时会用到。

)这些文件的用途后面会讲到。

1.2.4 GIOP 和IIOP我们知道,客户和服务器是通过ORB交互的,那么,客户方的ORB和服务器方的ORB 又是通过什么方式通信呢?通过GIOP(General Inter-ORB Protocol)。

也就是说,GIOP是一种通信协议,它规定了两个实体:客户和服务器ORBs间的通信机制。

图1.3 ORBs通信机制GIOP在设计时遵循以下目标:Widest possible availabilitySimplicityScalabilityLow costGeneralityArchitectural neutrality也是说,GIOP设计的尽可能简单,开销最小,同时又具有最广泛的适应性和可扩展性,以适应不同的网络。

GIOP定义了以下几个方面:1.The Common Data Representation (CDR) definition.通用数据表示定义。

它实际上是IDL数据类型在网上传输时的编码方案。

它对所有IDL 数据类型的映射都作了规定。

2.GIOP Message Formats.它规定了Client和Server两个角色之间要传输的消息格式。

主要包括Request和Reply 两种消息。

一个Request 消息有以下几部分组成:A GIOP message headerA Request HeaderThe Request Body相应的,一个Reply消息则包括A GIOP message headerA Reply HeaderThe Reply BodyGIOP1.1规定GIOP message header格式如下:// GIOP 1.1struct MessageHeader_1_1 {char magic [4];Version GIOP_version;octet flags; // GIOP 1.1 changeoctet message_type;unsigned long message_size;};Request Header格式如下:// GIOP 1.1struct RequestHeader_1_1 {IOP::ServiceContextList service_context;unsigned long request_id;boolean response_expected;octet reserved[3]; // Added in GIOP 1.1sequence <octet> object_key;string operation;Principal requesting_principal;};Request Body则按CDR规定的方式编码,它主要对方法调用的参数进行编码,如方法:double example (in short m, inout Principal p);可表示成:struct example_body {short m; // leftmost in or inout parameterPrincipal p; // ... to the rightmost};3.GIOP Transport Assumptions:主要规定在任何面向连接的网络传输层上的一些操作规则。

相关文档
最新文档