CORBA 入門

CORBA 是什麼

公用對象請求代理(調度)程序體系結構(Common Object Request Broker Architecture),縮寫爲 CORBA,是對象管理組織(Object Management Group)對應當今快速增長的軟硬件的協同工作能力的要求而提出的方案。簡而言之,CORBA 允許應用程序和其他的應用程序通訊,而不論他們在什麼地方或者由誰來設計。CORBA 1.1 由對象管理組織在 1991 年發佈。他定義了接口定義語言(IDL)和應用編程接口(API),從而通過實現對象請求代理(ORB)來激活客戶/服務器的交互。CORBA 2.0 於 1994 年的 12 月發佈。他定義瞭如何跨越不同的 ORB 提供者而進行通訊。

ORB 是一箇中間件,他在對象間建立客戶-服務器的關係。通過 ORB,一個客戶可以很簡單地使用服務器對象的方法而不論服務器是在同一機器上還是通過一個網絡訪問。ORB 截獲調用然後負責找到一個對象實現這個請求,傳遞參數和方法,最後返回結果。客戶不用知道對象在哪裏,是什麼語言實現的,他的操作系統以及其他和對象接口無關的東西。

在傳統的客戶/服務器程序中,開發者使用他們自己設計的或者公認的標準定義設備之間的協議。協議的定義依賴於實現的語言,網絡的傳輸和其他許許多多因素。ORB 將這個過程簡單化。使用 ORB,協議定義是通過應用接口,而該接口是接口定義語言(IDL)的一個實現,他和使用的編程語言無關的。並且 ORB 提供了很大的靈活性。他讓程序員選擇最適當的操作系統,運行環境和設計語言來建設系統中每個組件。更重要的是,他允許集成已經存在的組件。

CORBA 是在面向對象標準化和互操作性道路上的一個信號。通過 CORBA,用戶不必要知道軟硬件的平臺和他們處在企業網的什麼地方就可以操作。

ORB 結構

下面我來用些圖形說明一下:

通過 ORB 發送請求

上面的圖形說明的是客戶端發送一個請求到對象的實現。客戶端是希望對某對象執行操作的實體。對象的實現是一片代碼和數據來實際實現對象。ORB 負責下面的必要的機制:對該請求找到對象的實現,讓對象的實現準備好接受請求,和請求交換數據。客戶端的接口完全獨立於對象的位置,其實現的語言和其他不影響對象接口的東西。

ORB 接口的結構

上面的圖形顯示的是一個獨立的對象請求代理(ORB)的結構。ORB 的接口是灰色的矩形。箭頭說明 ORB 的調用關係。

爲了提出一個請求,客戶端可以使用動態調用接口(Dynamic Invocation Interface)(和目標對象的接口獨立)或者一個 OMG 的 IDL 佔位程序(具體的佔位程序依賴於目標對象的接口)。客戶端也可以直接和 ORB 在某些地方交互。

對象的實現通過 OMG 的 IDL 產生的骨架或者是一個動態骨架的調用來接受請求。對象的實現可能在處理請求或其他的時候調用 ORB。

對象接口定義的定義可以有下面兩種方式。接口可以通過接口定義語言靜態的定義,這叫做 OMG 的 IDL。該語言按照可以進行的操作和該操作的參數定義對象類型。或者(也可以作爲補充),接口可以加入到 Interface Repository service。該服務描述了該接口作爲一個對象的組件,並允許運行時訪問這些組件。在任何 ORB 實現中,IDL 和 Interface Repository 有相同的表達能力。

客戶端使用佔位程序或者動態調用接口

客戶端通過訪問對象的對象引用和了解對象的類型及要求執行的操作來發佈一個請求。客戶調用佔位程序例程來請求或者動態構造請求。

無論動態還是佔位程序的接口都可以相同實現。接收方不可能知道請求是如何發佈的。

對象的實現接受請求

ORB 向對象實現定位適當的代碼,傳遞參數,傳輸控制。這一切都通過 IDL 骨架或者動態骨架。骨架對於不同的接口和對象適配器是不同的。在執行該請求的時候,對象的實現可能由 ORB 通過對象適配器來獲得一定的服務。當請求完成,控制和輸出值返回給客戶。

對象的實現可能會選擇使用的對象適配器。該決定基於對象的實現要求的服務。

接口和 Implementation Repositories

上圖說明的是接口和實現信息如何讓客戶和對象實現訪問的。接口用 OMG 的 IDL 和/或 Interface Repository 定義。該定義用於產生客戶佔位程序和對象的實現的骨架。

對象的實現的信息在安裝時就提供好了,儲存在 Implementation Repository 中以便請求發佈的時候使用。

 
發佈了8 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章