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