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擴展可以將數據壓縮後進行傳送,而應用程序開發人員可以不懂具體壓縮技術,並且不用改動絕大部分代碼。

參見

參考文獻

外部連結