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扩展可以将数据压缩后进行传送,而应用程序开发人员可以不懂具体压缩技术,并且不用改动绝大部分代码。

参见

参考文献

外部链接