CORBA(Common Object Request Broker Architecture)又叫通用物件请求代理架构,是软件构建的一个标准。

CORBA标准由物件管理组织(OMG)设立并进行控制,CORBA定义了一系列API,通信协议,和物件/服务资讯模型用于使得异质应用程式能够互相操作,这些应用程式用不同的编程语言编写,运行在不同的平台上。CORBA因此为定义明确的物件提供了平台和位置的透明性,这些物件是分布式计算平台的基础。

通常来说,CORBA把用其他语言开发的程序代码和关于该程序代码能力和如何调用该程序代码的资讯包到一个开发包(package)中,开发包中的物件则可以在网络上被其他程序(或CORBA物件)调用。在这个意义上来讲,CORBA可以被看作是一个机器可读的文档文件格式,类似于头文件(header),但是具有相当多的资讯。

CORBA使用一种接口描述语言Interface description language)用于刻画物件将呈现出来的接口。CORBA又规定了从IDL到特定编程语言,如C++Java,实现的映射。这个映射精确的描述了CORBA数据类型是如何被客户端和服务端实现的。标准映射的有AdaCC++SmalltalkJava、以及Python。还有一些非标准的映射,为PerlTcl的映射由这些语言写的ORB实现。

CORBA的IDL只是IDL的一个例子。

在提供用户语言和平台中性的远程过程调用规范的同时,CORBA也定义了通常需要的服务,例如事务和安全。

CORBA的主题

编辑

对象按引用传递

编辑

对象的引用可以通过以下几种方式获得:通过URI直接指定对象位置、通过类似于DNS的名称服务查找、调用时通过参数传递。

对象引用是指向真实对象(本地或远程)的轻量级方式。调用对象引用(通常就是指针)的方法,实际上是通过ORB调用了实际对象的方法,调用会阻塞当前线程直到远端返回结果。参数和返回结果以及抛出的异常都会被ORB集中传递。

数据按值传递

编辑

CORBA的数据(整数、浮点数、结构、枚举等)是通过值传递。

通用ORB间协议(GIOP)

编辑

GIOP是用于ORB间数据传输的抽象协议,通用ORB间协议(GIOP)用来为这个由不同电脑及其各种体系结构组成的世界中传送消息定义结构和格式。如果使用GIOP的结构和格式,并将它们应用于TCP/IP,那么就得到IIOP。GIOP有两个版本:1.0和1.1。相关协议标准由Object Management Group(OMG)管理. GIOP架构提供了如下具体协议:

  1. 因特网ORB间协议(IIOP)—定义了基于因特网的GIOP实现,提供了TCP/IP到GIOP的映射。
  2. 加密ORB间协议(SSLIOP)—SSLIOP是基于SSL加密层的IIOP,提供了加密认证
  3. 超文本ORB间协议(HTIOP)—HTIOP是基于HTTP的IIOP,提供了透明代理穿越。
  4. 还有很多……

Corba对象位置(CorbaLoc)

编辑

Corba对象位置(CorbaLoc)是指一个由字符串构成的对象引用,看起来就像一个URL

CORBA产品需要支持两种OMG定义的URL:"corbaloc:"和"corbaname:"。Corba对象位置的目的是提供一个便于人阅读和修改的方式指定何处可以获得某个可互操作对象(IOR)。

corbaloc的例子:

corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root

使用Corba的好处

编辑
与具体编程语言无关
Java and C++, C-only, SmallTalk, Perl, Ada, Ruby, and Python等语言都有CORBA的实现,并且可以跨语言互操作。
操作系统无关
Linux/Unix, Windows, Sun, Mac等系统都有CORBA的实现,并且可以互操作。
从技术细节中解脱
强数据类型
从繁琐的数据传递中解脱
压缩
CORBA的底层数据通讯机制灵活,ZIOP扩展可以将数据压缩后进行传送,而应用程式开发人员可以不懂具体压缩技术,并且不用改动绝大部分代码。

参见

编辑

参考文献

编辑

外部链接

编辑