CORBA

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資料類型是如何被用戶端和伺服器端實現的。標準映射的有Ada、C、C++、Smalltalk、Java、以及Python。還有一些非標準的映射，為Perl和Tcl的映射由這些語言寫的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架构提供了如下具体协议：

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

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

参见 
 远程过程调用
 RFC
 RMI
 DCOM
 SOAP
 微软.NET
 Web服务
 分布式计算
servant 
 IDL
 NDDS

参考文献

外部链接 
 Object Management Group
 Information Board
 Catalog of OMG Specifications
 IDL / Language Mapping
 CORBA Component Model (CCM)
 IIOP
 Services
 Facilities
 Domain
 Embedded Intelligence
 Security
 UML, MOF, XMI, CWM
 An overview of available CORBA implementations
 Combat: a Tcl ORB, and a Tcl layer for C++ ORBs
 Python ORB
 Perl ORB
 JacORB
 TAO The ACE ORB
 e*ORB
 omniORB
 MICO
 PocoCapsule for CORBA组件容器支持CORBA服务器应用，OMG事件／通知服务应用，OMG-DDS应用，OMG-RTC应用，以及JTRS-SCA基于组件的软件无线电（SDR）应用。

共用物件請求仲介架構
面向对象的程序设计
进程间通信
基于组件的软件工程