CORBA 定義對象之間交互的協議, 允許應用程序和其他的應用程序通訊;這些對象可以用不同的編程語言寫成,運行在不同的操作系統上,存在于不同的機器上。CORBA 1.1 由對象管理組織在 1991 年發布。他定義了接口定義語言(IDL)和應用編程接口(API),從而通過實現對象請求代理(ORB)來激活客戶/服務器的交互。CORBA 2.0 于 1994 年的 12 月發布。他定義了如何跨越不同的 ORB 提供者而進行通訊。
ORB是一個中間件(middleware),它可以建立對象之間的client/server關系。通過ORB,一個client可以透明的引用同一臺機器上或網絡上的一個server對象的方法。ORB 截獲調用然后負責找到一個對象實現這個請求,傳遞參數和方法,最后返回結果。client并不清楚該對象的位置,它的編程語言,它的操作系統以及其它不是對象接口的系統信息。 ORB能實現分布環境中位于不同機器上的應用之間的互操作以及多對象系統之間的無縫連接。
在傳統的(client/server)應用中,開發者使用自己設計的標準或通用標準來定義設備之間的協議。協議定義與實現的語言、網絡傳輸及其它有關因素。ORB簡化了這一過程,它使用IDL來定義應用接口之間的協議。ORB允許程序員選擇通用操作系統,運行環境和編程語言。更重要的是,他允許集成現存組件。
CORBA 是在面向對象標準化和互操作性道路上的一個信號。通過 CORBA,用戶不必要知道軟硬件的平臺和他們處在企業網的什么地方就可以操作。
ORB 特定于 CORBA 實現(ORBit 有它自己的 ORB),但來在不同廠商的 ORB 之間可以透明的通信,這有賴于公共的協議。這意味著你可以使用某個 ORB 并用它建立對象,這之后你決定這個 ORB 不再使用(sucks) (比如說它太慢了),你可以使用其他的 ORB 并有同樣的對象交互。
下面的示意圖解釋這種機制:
圖 1. ORB 通信
當你做到對象的調用時,你必須生成正確的消息:stub 就是用來做這個的。skeleton 負責把這些消息轉換成正確的到對象的調用。編程者負責寫 stub 和 skeleton,不過有一些工具可以幫助你,我們將在后面看到它。stub 擔當本地的代表或遠程對象的代理(proxy),這樣就能與遠程對象一起工作、就象它在本地一樣。skeleton 做嚴格的相反的事。COM 編程者要注意:CORBA stub 在 COM-lingo 中叫做 proxy,而skeleton 大致扮演 COM stub 同樣的角色。
這就是基本的 CORBA 體系,但 CORBA 有更多的內容:CORBA 的目標是個創建一個分布式系統。ORB 是對象用的框架(framework),而 CORBA 還定義了一系列豐富的對象和偽對象(pseudo-object)(ORB 提供的同對象一樣的外表)來處理編程者在與分布式對象一起工作時所面對的各種要點。
原文轉自:http://www.anti-gravitydesign.com