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