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

參見

參考文獻

外部連結