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