翻譯:Wilbur Lang
CORBA 是什么
公用對象請求代理(調(diào)度)程序體系結(jié)構(gòu)(Common Object Request Broker Architecture),縮寫為 CORBA,是對象管理組織(Object Management Group)對應(yīng)當(dāng)今快速增長的軟硬件的協(xié)同工作能力的要求而提出的方案。簡而言之,CORBA 允許應(yīng)用程序和其他的應(yīng)用程序通訊,而不論他們在什么地方或者由誰來設(shè)計。CORBA 1.1 由對象管理組織在 1991 年發(fā)布。他定義了接口定義語言(IDL)和應(yīng)用編程接口(API),從而通過實現(xiàn)對象請求代理(ORB)來激活客戶/服務(wù)器的交互。CORBA 2.0 于 1994 年的 12 月發(fā)布。他定義了如何跨越不同的 ORB 提供者而進(jìn)行通訊。
ORB 是一個中間件,他在對象間建立客戶-服務(wù)器的關(guān)系。通過 ORB,一個客戶可以很簡單地使用服務(wù)器對象的方法而不論服務(wù)器是在同一機(jī)器上還是通過一個網(wǎng)絡(luò)訪問。ORB 截獲調(diào)用然后負(fù)責(zé)找到一個對象實現(xiàn)這個請求,傳遞參數(shù)和方法,最后返回結(jié)果。客戶不用知道對象在哪里,是什么語言實現(xiàn)的,他的操作系統(tǒng)以及其他和對象接口無關(guān)的東西。
在傳統(tǒng)的客戶/服務(wù)器程序中,開發(fā)者使用他們自己設(shè)計的或者公認(rèn)的標(biāo)準(zhǔn)定義設(shè)備之間的協(xié)議。協(xié)議的定義依賴于實現(xiàn)的語言,網(wǎng)絡(luò)的傳輸和其他許許多多因素。ORB 將這個過程簡單化。使用 ORB,協(xié)議定義是通過應(yīng)用接口,而該接口是接口定義語言(IDL)的一個實現(xiàn),他和使用的編程語言無關(guān)的。并且 ORB 提供了很大的靈活性。他讓程序員選擇最適當(dāng)?shù)牟僮飨到y(tǒng),運行環(huán)境和設(shè)計語言來建設(shè)系統(tǒng)中每個組件。更重要的是,他允許集成已經(jīng)存在的組件。
CORBA 是在面向?qū)ο髽?biāo)準(zhǔn)化和互操作性道路上的一個信號。通過 CORBA,用戶不必要知道軟硬件的平臺和他們處在企業(yè)網(wǎng)的什么地方就可以操作。
ORB 結(jié)構(gòu)
下面我來用些圖形說明一下:
通過 ORB 發(fā)送請求
上面的圖形說明的是客戶端發(fā)送一個請求到對象的實現(xiàn)。客戶端是希望對某對象執(zhí)行操作的實體。對象的實現(xiàn)是一片代碼和數(shù)據(jù)來實際實現(xiàn)對象。ORB 負(fù)責(zé)下面的必要的機(jī)制:對該請求找到對象的實現(xiàn),讓對象的實現(xiàn)準(zhǔn)備好接受請求,和請求交換數(shù)據(jù)。客戶端的接口完全獨立于對象的位置,其實現(xiàn)的語言和其他不影響對象接口的東西。
ORB 接口的結(jié)構(gòu)
上面的圖形顯示的是一個獨立的對象請求代理(ORB)的結(jié)構(gòu)。ORB 的接口是灰色的矩形。箭頭說明 ORB 的調(diào)用關(guān)系。
為了提出一個請求,客戶端可以使用動態(tài)調(diào)用接口(Dynamic Invocation Interface)(和目標(biāo)對象的接口獨立)或者一個 OMG 的 IDL 占位程序(具體的占位程序依賴于目標(biāo)對象的接口)。客戶端也可以直接和 ORB 在某些地方交互。
對象的實現(xiàn)通過 OMG 的 IDL 產(chǎn)生的骨架或者是一個動態(tài)骨架的調(diào)用來接受請求。對象的實現(xiàn)可能在處理請求或其他的時候調(diào)用 ORB。
對象接口定義的定義可以有下面兩種方式。接口可以通過接口定義語言靜態(tài)的定義,這叫做 OMG 的 IDL。該語言按照可以進(jìn)行的操作和該操作的參數(shù)定義對象類型。或者(也可以作為補充),接口可以加入到 Interface Repository service。該服務(wù)描述了該接口作為一個對象的組件,并允許運行時訪問這些組件。在任何 ORB 實現(xiàn)中,IDL 和 Interface Repository 有相同的表達(dá)能力。
客戶端使用占位程序或者動態(tài)調(diào)用接口
客戶端通過訪問對象的對象引用和了解對象的類型及要求執(zhí)行的操作來發(fā)布一個請求。客戶調(diào)用占位程序例程來請求或者動態(tài)構(gòu)造請求。
無論動態(tài)還是占位程序的接口都可以相同實現(xiàn)。接收方不可能知道請求是如何發(fā)布的。
對象的實現(xiàn)接受請求
ORB 向?qū)ο髮崿F(xiàn)定位適當(dāng)?shù)拇a,傳遞參數(shù),傳輸控制。這一切都通過 IDL 骨架或者動態(tài)骨架。骨架對于不同的接口和對象適配器是不同的。在執(zhí)行該請求的時候,對象的實現(xiàn)可能由 ORB 通過對象適配器來獲得一定的服務(wù)。當(dāng)請求完成,控制和輸出值返回給客戶。
對象的實現(xiàn)可能會選擇使用的對象適配器。該決定基于對象的實現(xiàn)要求的服務(wù)。
接口和 Implementation Repositories
上圖說明的是接口和實現(xiàn)信息如何讓客戶和對象實現(xiàn)訪問的。接口用 OMG 的 IDL 和/或 Interface Repository 定義。該定義用于產(chǎn)生客戶占位程序和對象的實現(xiàn)的骨架。
對象的實現(xiàn)的信息在安裝時就提供好了,儲存在 Implementation Repository 中以便請求發(fā)布的時候使用。
posted on 2006-02-19 16:49
★yesjoy★ 閱讀(233)
評論(0) 編輯 收藏 所屬分類:
CORBA 學(xué)習(xí)