一、概述
CORBA(Common Object Request Broker Architecture, 公共對象請求代理體系結構)是由OMG(對象管理組織,Object Management Group)提出的應用軟件體系結構和對象技術規范,其核心是一套標準的語言、接口和協議,
以支持異構分布應用程序間的互操作性及獨立于平臺和編程語言的對象重用。
CORBA經過近十多年的發展,已逐步走向成熟,并成功地應用在我國許多大型的軟件系統中,由此產生了對掌握CORBA技術的軟件開發人員的大量需求。在此,我們應廣大讀者的要求組織了本次講座。
二、CORBA產生的背景
近年來,隨著互聯網技術的日益成熟,公眾及商業企業正享受著高速、低價網絡信息傳輸所帶來的高品質數字生活。但是,由于網絡規模的不斷擴大以及計算機軟硬件技術水平的飛速提高,給傳統的應用軟件系統的實現方式帶來了巨大挑戰。
首先,在企業級應用中,硬件系統集成商基于性能、價格、服務等方面的考慮,通常在同一系統中集成來自不同廠商的硬件設備、操作系統、數據庫平臺和網絡協議等,由此帶來的異構性給應用軟件的互操作性、兼容性以及平滑升級能力帶來了嚴重問題。
另外,隨著基于網絡的業務不斷增多,傳統的客戶/服務器(C/S)模式的分布式應用方式越來越顯示出在運行效率、系統網絡安全性和系統升級能力等方面的局限性。
為了解決分布式計算環境(DCE,Distributed Computing Environment)中不同硬件設備和軟件系統的互聯,增強網絡間軟件的互操作性,解決傳統分布式計算模式中的不足等問題,對象管理組織(OMG)提出了公共對象請求代理體系結構(CORBA),以增強軟件系統間的互操作能力,使構造靈活的分布式應用系統成為可能。
正是基于面向對象技術的發展和成熟、客戶/服務器軟件系統模式的普遍應用以及集成已有系統等方面的需求,推動了CORBA技術的成熟與發展。作為面向對象系統的對象通信的核心,CORBA為當今網絡計算環境帶來了真正意義上的互聯。
三、CORBA的發展歷程
1、對象管理組織(OMG)簡介
OMG成立于1989年,作為一個非營利性組織,集中致力于開發在技術上具有先進性、在商業上具有可行性并且獨立于廠商的軟件互聯規范,推廣面向對象模型技術,增強軟件的可移植性(Portability)、可重用性(Reusability)和互操作性(Interoperability)。該組織成立之初,成員包括Unisys、Sun、Cannon、Hewlett-Packard、Philips等在業界享有聲譽的軟硬件廠商,目前該組織擁有800多家成員。
2、CORBA主要版本的發展歷程
1990年11月,OMG發表《對象管理體系指南》,初步闡明了CORBA的思想;
1991年10月,OMG推出1.0版,其中定義了接口定義語言(IDL)、對象管理模型以及基于動態請求的API和接口倉庫等內容;
1991年12月,OMG推出了CORBA 1.1版,在澄清了1.0版中存在的二義性的基礎上,引入了對象適配器的概念;
1996年8月,OMG基于以前的升級版本,完成了2.0版的開發,該版本中重要的內容是對象請求代理間協議(IIOP,Internet Inter-ORB Protocol)的引入,用以實現不同廠商的ORB真正意義上的互通;
1998年9月,OMG發表了CORBA 2.3版,增加了支持CORBA對象的異步實時傳輸、服務質量規范等內容。目前,宣布支持CORBA 2.3規范的中間件廠商包括Inprise(Borland)、Iona、BEA System等著名的CORBA產品生產商。
2002年8月,CORBA規范3.0終于出來了,在CORBA3.0規范中去掉了MiniCORBA和實時CORBA。
四、CORBA體系結構
CORBA規范充分利用了現今軟件技術發展的最新成果,在基于網絡的分布式應用環境下實現應用軟件的集成,使得面向對象的軟件在分布、異構環境下實現可重用、可移植和互操作。其特點可以總結為如下幾個方面:
1、引入中間件(MiddleWare)作為事務代理,完成客戶機(Client)向服務對象方(Server)提出的業務請求(引入中間件概念后分布計算模式;
2、實現客戶與服務對象的完全分開,客戶不需要了解服務對象的實現過程以及具體位置;
3、提供軟總線機制,使得在任何環境下、采用任何語言開發的軟件只要符合接口規范的定義,均能夠集成到分布式系統中;
4、CORBA規范軟件系統采用面向對象的軟件實現方法開發應用系統,實現對象內部細節的完整封裝,保留對象方法的對外接口定義。
在以上特點中,最突出的是中間件的引入, 在CORBA系統中稱為對象請求代理(ORB,Object Request Broker)和采用面向對象的開發模式。
對象模型是應用開發人員對客觀事物屬性和功能的具體抽象。由于CORBA使用了對象模型,將CORBA系統中所有的應用看成是對象及相關操作的集合,因此通過對象請求代理(ORB),使CORBA系統中分布在網絡中應用對象的獲取只取決于網絡的暢通性和服務對象特征獲取的準確程度,而與對象的位置以及對象所處的設備環境無關。
CORBA體系的主要內容包括以下幾部分:
(1) 對象請求代理ORB(Object Request Broker):負責對象在分布環境中透明地收發請求和響應,它是構建分布對象應用、在異構或同構環境下實現應用間互操作的基礎。
(2) 對象服務(Object Services):為使用和實現對象而提供的基本對象集合,這些服務應獨立于應用領域。主要的CORBA服務有:名錄服務(Naming Service)、事件服務(Event Service)、生命周期服務(Life Cycle Service)、關系服務(Relationship Service)、事務服務(Transaction Service)等。這些服務幾乎包括分布系統和面向對象系統的各個方面,每個組成部分都非常復雜。
(3) 公共設施(Common Facilitites):向終端用戶提供一組共享服務接口,例如系統管理、組合文檔和電子郵件等。
(4) 應用接口(Application Interfaces):由銷售商提供的可控制其接口的產品,相應于傳統的應用層表示,處于參考模型的最高層。
(5) 領域接口(Domain Interfaces):為應用領域服務而提供的接口。如OMG組織為PDM系統制定的規范。
CORBA技術是先進技術發展的結果,它將面向對象的概念揉合到分布計算中,使得CORBA規范成為開放的、基于客戶/服務器模式的、面向對象的分布計算的工業標準。整個CORBA平臺的組成結構如下圖1所示:
在CORBA體系結構的中心部分是對象請求代理程序(Object Request Broker,ORB),它作為一個"軟件總線"來連接網絡上的不同對象。在客戶端,ORB提供一個發送操作調用的接口;而在服務器端,ORB提供一個將操作調用傳輸到服務器的API。ORB的任務是定位一個合適的服務器,并且通過一個對象適配器(Object Adapter,OA)將操作調用傳送給服務器。OA的目的是:給框架發送方法,調用并且支持服務器對象的生命周期(例如,對象的建立和刪除)。老版本的CORBA規范包含一個基本對象適配器(Basic Object Adapter,BOA),就像它的名字一樣,BOA是十分簡單的。它定制的也不是很好,它禁止CORBA應用程序的可移植性。作為CORBA標準的版本2.2,BOA被可對象適配器(Portable Object Adapter,POA)所取代。MICO支持BOA和POA。
在客戶端,ORB提供一個一般的API,它是一個動態調用接口(Dynamic Invocation Interface,DII)來發送操作調用。在服務器端,OA通過動態框架接口(Dynamic Skeleton Interface,DSI)來傳輸一個操作調用,它為服務器端鏡像DII的行為。一個在客戶和服務器之間的靜態接口通過一種接口定義語言(Interface Definition Language,IDL)來定義。雖然DII和DSI代表到ORB的一般接口,并且通常被用于橋,但一個IDL規范可以用于產生到ORB的類型安全的、應用特定的接口。
在客戶端,客戶與ORB之間的靜態接口被稱為靜態調用接口(Static Invocation Interface,SII),在服務器端,這個接口被稱為靜態框架接口(Static Skeleton Interface,SSI)。一個IDL編譯器從一個IDL規范來生成一個存根stub和一個框架skeketon。存根的功能類似于一個客戶代理,而框架負責發送一個操作調作給一個真正的此操作的實現程序。
CORBA也定義了兩個運行時的數據庫。接口存儲庫(Interface Repository,IR)包含運行時所需要的IDL規范。IR可以查詢用戶定義的IDL類型的詳細情況,從而提供一個基本類型映射機制。第二個數據庫被稱為實現存儲庫(Implementation Repository,IMR),并且它包含服務器的詳細信息(即,哪一個執行程序需要被放置到哪一個服務器上)。OA需要這個信息來自動激活服務器。
CORBA標準也包含一個ORB之間的協議,它被稱為互聯網ORB之間的協議(Internet Inter-ORB Protocol,IIOP),它描述了基本的和結構化的IDL類型的在線表示,以及協議所需的協議數據單元。設計IIOP的目的是使它保持簡單、可升級并且通作。IIOP使用TCP/IP來在不同的ORB之間傳輸操作調作和它們的參數。
最后,需要說明一點,CORBA是一個規范而不是一個程序實現。CORBA提供了一個允許在分布式和異構型環境中的應用程序之間進行互操作的框架,但是關于如何實現CORBA標準的特定技術,它并沒有給出任何規定。因此,目前在市場上有許許多的CORBA程序實現,如Iona的Orbix,Inprise的VisiBroker。
五、分布式對象技術-- COM、Java和COBRA之間特性比較
目前國際上,分布式對象技術有三大流派-- COBRA、COM/DCOM和Java。CORBA技術是最早出現的,1991年OMG頒布了COBRA 1.0標準,在當時來說做得非常漂亮;再有就是Microsoft的COM系列,從最初的COM發展成現在的DCOM,形成了Micro