用CORBA打造Linux的分布式平臺(tái)
GNOME 是Linux和類Unix平臺(tái)上的桌面環(huán)境,是GNU的一個(gè)把自由軟件的好處帶給最終用戶的開(kāi)放源碼項(xiàng)目。對(duì)于它,人們往往只關(guān)注它的漂亮的外觀和給使用 Linux帶來(lái)的便利性,很少注意背后支撐它發(fā)展的GTK繪圖技術(shù)和CORBA分布式平臺(tái)技術(shù)。其實(shí),這兩項(xiàng)技術(shù)對(duì)GNOME的開(kāi)發(fā)和應(yīng)用是至關(guān)重要的:GTK繪圖技術(shù)給GNOME應(yīng)用程序帶來(lái)統(tǒng)一的外觀和一致的感覺(jué);CORBA分布式平臺(tái)技術(shù)為在Linux平臺(tái)上組合軟件和復(fù)合文檔提供了可能,而這是一個(gè)現(xiàn)代的受歡迎的圖形應(yīng)用操作平臺(tái)必不可少的部分,這也是Windows和MacOS成功的關(guān)鍵。本文主要介紹GNOME是怎樣利用CORBA在 Linux上創(chuàng)造分布式平臺(tái)的。
GNOME 是GNU Network Object Model EnvirONment(GNU網(wǎng)絡(luò)對(duì)象模型環(huán)境)的縮寫(xiě)。開(kāi)發(fā)小組一開(kāi)始的想法就是開(kāi)發(fā)出Linux平臺(tái)的類似于Microsoft的OLE和 COM(它們是Windows平臺(tái)的分布式技術(shù))技術(shù)。只是隨著項(xiàng)目的開(kāi)展,他們發(fā)現(xiàn)要實(shí)現(xiàn)這項(xiàng)技術(shù)有許多基礎(chǔ)工作要做,同時(shí)受KDE(Linux平臺(tái)的 另一個(gè)桌面系統(tǒng))的影響,于是這個(gè)項(xiàng)目的范圍逐漸擴(kuò)大,創(chuàng)造出Linux平臺(tái)的漂亮的桌面。但是這個(gè)項(xiàng)目一開(kāi)始的想法并沒(méi)有變,它指導(dǎo)著GNOME整個(gè)的開(kāi)發(fā)過(guò)程,成為這個(gè)項(xiàng)目成功的關(guān)鍵。現(xiàn)在GNOME的發(fā)行版本都包括一個(gè)連接、嵌入系統(tǒng)Bonobo和一個(gè)快速、輕量級(jí)的CORBA2.2 ORB(對(duì)象請(qǐng)求代理)ORBit。
計(jì) 算技術(shù)發(fā)展到今天,已經(jīng)進(jìn)入分布式計(jì)算時(shí)代,CORBA、COM和Enterprise Javabean是當(dāng)今世界的三大分布式平臺(tái)開(kāi)發(fā)標(biāo)準(zhǔn)。除CORBA是平臺(tái)無(wú)關(guān)外,COM應(yīng)用在Windows平臺(tái)、Enterprise Javabean應(yīng)用在JAVA平臺(tái)。因此GNOME要在Linux系統(tǒng)是創(chuàng)造分布式平臺(tái),與CORBA的結(jié)合就是必然的。
CORBA 是Common Object RequeST Broker Architecture(通用對(duì)象代理體系)的縮寫(xiě)。它是一個(gè)軟件架構(gòu),定義了軟件對(duì)象如何能互相影響,而不管這些軟件對(duì)象是用什么編程語(yǔ)言書(shū)寫(xiě),運(yùn)行在什么樣的機(jī)器和操作系統(tǒng)上。要實(shí)現(xiàn)這些,CORBA定義了一系列對(duì)象之間進(jìn)行通信的協(xié)議,如IIOP和GIOP。通信的中介是ORB (Object Request Broker),由ORB來(lái)管理對(duì)象之間的通信。CORBA的基本架構(gòu)如圖所示。
CORBA的基本架構(gòu)示意圖
Client發(fā)出方法調(diào)用消息,利用Stub進(jìn)行封裝后發(fā)出,通過(guò)ORB轉(zhuǎn)到正確的Server對(duì)象,由Server對(duì)象的Skeleton對(duì)消息進(jìn)行解析,還原成正確的方法調(diào)用,Server執(zhí)行后返回結(jié)果。
由 于CORBA的目標(biāo)是創(chuàng)造出一個(gè)分布式的系統(tǒng),因此,它還定義了一系列的服務(wù),如名字服務(wù)、安全服務(wù)等和一系列的基礎(chǔ)設(shè)施,包括水平基礎(chǔ)設(shè)施和垂直基礎(chǔ)設(shè)施?,F(xiàn)在GNOME只實(shí)現(xiàn)了ORB和一些服務(wù),這很少的一部分對(duì)于創(chuàng)造一個(gè)實(shí)現(xiàn)軟件組合和復(fù)合文檔的桌面系統(tǒng)來(lái)說(shuō)是足夠了,這也從反面證明了CORBAGNOME平臺(tái)的發(fā)展空間是無(wú)限的。
GNOME對(duì)CORBA進(jìn)行支持是通過(guò)一系列封裝好的C語(yǔ)言函數(shù)庫(kù)來(lái)實(shí)現(xiàn)的。開(kāi)發(fā)者利用這些函數(shù)庫(kù)進(jìn)行CORBA分布式程序開(kāi)發(fā)是非常方便的。下面就是3個(gè)和CORBA相關(guān)的系列函數(shù)庫(kù)。
1.ORBit
GNOME實(shí)現(xiàn)了一個(gè)CORBA2.2 ORB ORBit,這是一個(gè)快速的、高效率的ORB,它支持CORBA的C映射(C Mapping)。它還包括一個(gè)IDL(CORBA接口定義語(yǔ)言)編譯器。
2.Libgnorba
Libgnorba 提供了和CORBA相關(guān)的工具,如安全機(jī)制和對(duì)象激活機(jī)制。它提供了CORBA的初始化函數(shù),把CORBA的消息循環(huán)與GTK+的消息循環(huán)融合在一起。它 還實(shí)現(xiàn)了CORBA的名字服務(wù)。GOAD維護(hù)一個(gè)服務(wù)對(duì)象列表,提供一些函數(shù),可以很方便地將新的服務(wù)對(duì)象加入到GOAD中,把可用的Server對(duì)象列 出來(lái),并激活其中的一個(gè)服務(wù)對(duì)象。
3.Bonobo
Bonobo 是和微軟以前的OLE技術(shù)相類似的一個(gè)復(fù)合文檔體系,例如,通過(guò)它,就可以把電子表格嵌入到文字處理文檔中去。GNOME將從底層支持它,這樣任何 GNOME應(yīng)用程序都可通過(guò)調(diào)用相應(yīng)的Bonobo組件來(lái)顯示MIME類型的數(shù)據(jù),例如純文本、HTML和圖像等。
GNOME 的開(kāi)發(fā)者們通過(guò)采用公開(kāi)的標(biāo)準(zhǔn)和辛勤的開(kāi)發(fā)工作,為我們展示了一個(gè)功能強(qiáng)大的分布式應(yīng)用平臺(tái),隨著GNOME開(kāi)發(fā)的完善,GNOMELinux平臺(tái)戰(zhàn)勝Windows的時(shí)間不遠(yuǎn)了。這個(gè)平臺(tái)也為我國(guó)軟件業(yè)的發(fā)展提供極大的機(jī)會(huì),我們應(yīng)該在這個(gè)平臺(tái)上有所作為?,F(xiàn)在最關(guān)鍵的是行動(dòng)起來(lái),開(kāi)發(fā)應(yīng)用,推動(dòng)應(yīng)用。
評(píng)論