李奕生
摘 要:CORBA是一項比較成熟的分布式面向?qū)ο蠹夹g,具有與平臺和語言無關的特點.本文主要闡述CORBA技術的發(fā)展演進、技術特點、體系架構(gòu)、核心技術、安全機制等幾個方面內(nèi)容,這對該領域的研究開發(fā)人員理解CORBA技術有一定的參考價值.
關鍵詞:分布式計算技術;CORBA;體系架構(gòu);ORB
一、引言
分布式計算技術是為了適應網(wǎng)絡發(fā)展,特別是互聯(lián)網(wǎng)的發(fā)展而提出的一種應用,它不僅要解決客戶與應用程序之間的調(diào)用,而且要解決應用程序之間協(xié)同工作等問題.在信息時代,PC機、服務器和智能設備星羅棋布,這樣的環(huán)境下,使用傳統(tǒng)主機/終端模式已不能滿足用戶要求,主要問題在于跨網(wǎng)絡、跨平臺、跨語言傳播和使用信息,這是一個面對各種遺留應用、專有標準和異構(gòu)平臺的集成問題,由此產(chǎn)生了對分布式計算技術的需求.CORBA(CommonObjectRequestBrokerArchitecture,公共對象請求代理體系結(jié)構(gòu))就是在當今快速發(fā)展的軟件與硬件資源的情況下提出的一種分布式計算平臺,它允許不同的應用程序之間可以透明地進行互操作,而不用關心對方位于何地、由誰來設計、運行于何種硬軟件平臺以及用何種語言實現(xiàn)等.
二、CORBA概述
1.CORBA的發(fā)展演進
CORBA作為一個分布式的面向?qū)ο髴眉軜?gòu)規(guī)范,它是由OMG(對象模型組織)研究組在80年代末提出,在90年代逐步完善,直到現(xiàn)在形成被軟件行業(yè)普遍認可的標準——CORBA/IIOP規(guī)范.CORBA的開發(fā)者OMG最初由3Com,AmericanAirlines,Canon,DataGeneral,Hewlett-Packard,Philips,Sun和Unisys等8家公司于1989年組建,專門從事公共軟件平臺的研究和行業(yè)標準的制訂,目前已經(jīng)有800多個成員單位加入OMG.CORBA1.1版本于1991年由OMG提出,同時還提出了接口定義語言以及能夠讓客戶機/服務器對象在特定的ORB實現(xiàn)中進行通信的規(guī)則.而在1994年提出并被采納的CORBA2.0標準才真正實現(xiàn)了不同生產(chǎn)廠商間的互操作性.OMG在1999年推出的CORBA3.0是一個非常重要的版本,目前應用最廣泛,它實現(xiàn)CORBA與Internet的徹底集成.它引入的新技術主要包括:CORBA構(gòu)件模型,CORBA的消息服務和通過值傳遞對象.
2.CORBA的技術特點
CORBA在基于網(wǎng)絡的分布式應用環(huán)境下實現(xiàn)應用軟件的集成,使得面向?qū)ο蟮能浖诜植?、異?gòu)環(huán)境下實現(xiàn)可重用、可移植和互操作,CORBA技術具有如下幾個主要特點:
(l)在CORBA規(guī)范中引入了代理的概念,代理可以完成對客戶方提出的抽象服務請求的映射、自動發(fā)現(xiàn)和尋找服務器、自動設定路由,實現(xiàn)到服務器方的執(zhí)行.CORBA實現(xiàn)客戶與服務對象的完全分開,客戶不需要了解服務對象的實現(xiàn)過程以及具體位置.
(2)CORBA提供軟總線機制,這是系統(tǒng)定義的一組接口規(guī)范,使得在任何環(huán)境下,采用任何語言開發(fā)的軟件只要符合接口規(guī)范的定義,均能夠集成到CORBA系統(tǒng)中.
(3)CORBA規(guī)范只是針對OMA體系結(jié)構(gòu)中的ORB制定的工業(yè)標準,而面向應用的對象定義則可以在OMA的應用對象或應用開發(fā)環(huán)境中逐步分層定義和實現(xiàn).
3.CORBA的基本結(jié)構(gòu)
1990年OMG制定了對象管理體系結(jié)構(gòu)(OMA),CORBA是它的一種實現(xiàn)方案.在CORBA中主要定義了接口定義語言(IDL)和應用編程接口(API),從而通過實現(xiàn)對象請求代理(ORB)來激活客戶/服務器的交互[4].其基本程序結(jié)構(gòu)如圖1.
從圖1我們可以看到,在客戶機上的應用程序與服務器上的應用程序是相對獨立的.客戶應用程序提出請求,服務器應用程序接受這些請求并做出響應.其實現(xiàn)過程如下:
(1)客戶機提出請求;
(2)客戶機ORB核心通過網(wǎng)絡傳送給與服務器應用程序相連接的服務器ORB核心;
(3)服務器ORB核心將這些請求分配給對象適配器,由它產(chǎn)生目標對象;
(4)對象適配器進一步將請求分配給實現(xiàn)對象的私服程序;
(5)私服程序執(zhí)行請求后,它返回結(jié)果給客戶應用程序.
三、CORBA的核心
CORBA的底層結(jié)構(gòu)是基于面向?qū)ο竽P偷模蒓MG接口描述語言(IDL)、對象請求代理(ORB)以及ORB之間的互操作IIOP協(xié)議(也稱網(wǎng)絡ORB交換協(xié)議)3個關鍵模塊組成.
1.ORB(Object Request Broker)
CORBA體系結(jié)構(gòu)的核心就是ORB.可以這樣簡單理解:ORB就是使得客戶應用程序能調(diào)用遠端對象方法的一種機制.
具體來說:當客戶程序要調(diào)用遠程對象上的方法時,首先要得到這個遠程對象的引用,之后就可以像調(diào)用本地方法一樣調(diào)用遠程對象的方法.當發(fā)出一個調(diào)用時,實際上ORB會截取這個調(diào)用,因為客戶和服務器可能在不同的網(wǎng)絡、不同的操作系統(tǒng)上甚至用不同的語言實現(xiàn),ORB還要負責將調(diào)用的名字、參數(shù)等編碼成標準方式(稱Marshaling)通過網(wǎng)絡傳輸?shù)椒掌鞣?,并通過將參數(shù)Unmarshaling的過程,傳到正確的對象上.服務器對象完成處理后,ORB通過同樣[JP3]的Marshaling/Unmarshaling方式將結(jié)果返回給客戶.
因此,ORB是一種功能,它具備以下能力:
(1)對象定位;
(2)對象定位后,確信Server能接受請求;
(3)將客戶方請求通過Marshaling/Unmarshing方式重定向到服務器對象上;
(4)如果需要,將結(jié)果以同樣的方式返回.
2.IDL(InterfaceDefinitionLanguage)
IDL,接口定義語言,是CORBA體系中的另一個重要概念.如果說ORB使CORBA做到與平臺無關,那么IDL則使CORBA做到與語言無關.
[JP3]正像其名字中顯示的那樣,IDL僅僅定義接口,而不定義實現(xiàn),類似于C中的頭文件.實際上它不是真正的編程語言.要用它編寫應用程序,需要將它映射到相應的程序設計語言上去,如映射到C++或JAVA上去.映射后的代碼叫客戶存根代碼和服務器骨架代碼.[JP]
3.IIOP協(xié)議
在發(fā)布CORBA2.0版本之前,ORB產(chǎn)品的最大缺點是不同供應商所提供的ORB產(chǎn)品之間并不能互操作.為此,OMG在CORBA2.0版本中制定通用ORB間通信協(xié)議(GIOP)和Internet域ORB間通信協(xié)議(IIOP).
GIOP是互操作體系結(jié)構(gòu)的基礎,它是一種通用協(xié)議,為ORB之間的通信規(guī)定了一系列標準傳輸文法和信息格式.IIOP定義了如何在TCP/IP傳輸協(xié)議上構(gòu)建GIOP.GIOP和IIOP之間的關系類似于接口定義和具體實現(xiàn)之間的關系.
四、CORBA安全機制
對象請求中介必須管理從信任域到ORB間一系列系統(tǒng)的安全性.組件不需要負責加強其自身的安全性,這樣更容易開發(fā)、管理和跨環(huán)境輸出.CORBA安全機制在對象請求中介的模型如圖2所示,所有的對象調(diào)用都由適當?shù)陌踩瘮?shù)作為中間媒介進行傳送,以加強管理[5].
1.鑒別
鑒別產(chǎn)生一個唯一的鑒別標志,這個標志不能被對象更改,只有鑒別服務器可以更改它.鑒別過的客戶可以用一個注冊號從任何地方訪問任何服務器對象.用戶登錄一次,取得鑒別,然后獲得一組需要與之[JP4]通信的對象的安全票,都由對象請求中介安全機制進行.
2.特許授權(quán)
CORBA分別提出了無授權(quán)、簡單授權(quán)和組合授權(quán)三種授權(quán)方案,無授權(quán)即中間對象不能利用客戶的特許去調(diào)用鏈中的下一個對象;對于簡單授權(quán)而言,中間對象采用了客戶的特許,然后在處理目標時模仿客戶,它還可將客戶的證書授權(quán)給其他對象;組合授權(quán)即中間對象在處理目標對象時可以包含客戶的特許,也可以包含它自己的特許.
3.加密
CORBA對象請求服務可以為處理不可竄改問題提供加密和密碼檢驗兩種機制,加密允許兩個本體保持一條安全的通信途徑,密碼檢驗可以確保數(shù)據(jù)在穿過網(wǎng)絡時沒有被修改.另外,CORBA安全服務定義了可替代子系統(tǒng),允許對象請求中介使用標準的工業(yè)加密和電子簽名機制.
五、CORBA的應用
由于CORBA系統(tǒng)引入了中間件的概念,取消了原有分布式計算模型中客戶機服務器之間的一一對應關系.客戶機可以在運行時動態(tài)獲得服務對象的位置,并且可以對多個服務對象提交事務請求,極大推動了分布計算技術的發(fā)展.
另外CORBA規(guī)范約束采用面向?qū)ο蟮姆植际杰浖臉?gòu)造方法,以接口定義語言的形式實現(xiàn)對象內(nèi)部細節(jié)的完整封裝,從而降低了軟件系統(tǒng)的復雜程度,增加了軟件功能的可重用性.CORBA提供到C、C++、Java、SmallTalk等高級語言的映射,很大程度地減小了對程序設計語言的依賴性,使軟件開發(fā)人員可以在較大范圍內(nèi)共享已有成果.
正是以上特點推動了分布式多層軟件體系結(jié)構(gòu)的發(fā)展,也正是基于CORBA具有較好的開放性和連續(xù)性,目前CORBA技術在銀行、圖書館、電信、保險、電力和電子商務領域都有廣泛的應用.
六、結(jié)束語
分布式對象技術為網(wǎng)絡計算平臺上軟件的開發(fā)提供了強有力的解決方案,它已經(jīng)成為建立服務應用框架和軟件構(gòu)件的核心技術,在開發(fā)大型分布式應用系統(tǒng)中表現(xiàn)出強大的生命力.CORBA生命力是目前主流的分布式計算技術之一,對這一體系結(jié)構(gòu)的深入了解對進行各種分布式應用系統(tǒng)的設計與開發(fā)工作有重要意義.
參考文獻
1.李文軍,周曉聰,李師賢等.分布式對象技術[M].北京:機械工業(yè)出版社,2004.
2.JasonPritchard著,徐金梧等譯.COM與CORBA本質(zhì)與互用:體系結(jié)構(gòu)與策略實現(xiàn)[M].北京:清華大學出版社,2002.
3.郭樂深,蘇森,楊放春,劉錦德.基于CORBA技術的策略安全信息系統(tǒng)的研究[J].小型微型計算機系統(tǒng),2002(3):50-54.