分佈式應用

5.2 分佈式應用開發技術概述
目前分佈對象技術已經成爲建立應用框架(Application Framework)和軟構件(Software Component)的核心技術,在開發大型分佈式應用系統中表現出強大的生命力,並形成了三項具有代表性的主流技術,即OMG的CORBA(Common Object Request Broker Architecture)、Microsoft的ActiveX/DCOM (Distributed Compound Object Model)和SUN公司的Java/RMI。
5.2.1  CORBA、DCOM、RMI
1.CORBA
----OMG是一個非盈利性國際組織,致力於使CORBA成爲"無所不在的中間件"。1989年成立時僅有8家公司參與,而今天已經是擁有900多個機構成員的"議會式"標準化組織,世界上幾乎所有最有影響的計算機公司(如IBM、Microsoft和HP等)、著名的工商企業(如Boeing、Citibank和FordMotor等)和大學研究機構都是這個組織的成員。OMG所制定的分佈對象計算標準規範包括CORBA/IIOP 、對象服務、公共實施和領域接口規範。遵照這些規範開發出的分佈計算軟件環境可以在幾乎所有的主流硬件平臺和操作系統上運行。現在,CORBA/IIOP已成爲Internet上實現對象互訪的技術標準,OMG的IIOP也已成爲許多公司(如Oracle、Netscape、Sun和IBM等)進行系統集成的基本協議。1995年以來,基於CORBA軟件的企業級應用發展迅猛,大有覆蓋DCE之勢。目前世界上有一定影響的CORBA軟件製造商已有10多家。
2.DCOM
ActiveX/DCOM是由Microsoft推出的對象構件模型,最初用於集成Microsoft的辦公軟件,目前已發展成爲Microsoft世界的應用系統集成標準,並集中反映在其產品ActiveX中。在分佈計算技術上,OMG的優勢比Microsoft至少領先2~3年。目前,只有OMG的技術能夠支持異構環境中大型分佈式應用的開發,而Microsoft的DCOM技術尚不能勝任。Microsoft的優勢主要表現在應用和市場能力上。從未來市場策略考慮,Microsoft決定支持OMG提出的OLE/COM與CORBA的互操作標準,從而使COM的對象能夠與CORBA的對象進行通信。今後3~5年內,OMG和Microsoft的分佈對象技術將共存,並在許多方面相互滲透。
3.RMI
--- -按照Sun和Javasoft對Java的界定,Java是一個應用程序開發平臺,它提供了可移植、可解釋、高性能和麪向對象的編程語言及運行環境。RMI(RemoteMethodInvocation)是分佈在網絡中的各類Java對象之間進行方法調用的ORB機制。CORBA技術與Java技術存在天然的聯繫,因爲Sun是OMG的創始成員,CORBA標準中的許多內容(例如IDL標準、IIOP標準)是以SUN公司提交的方案爲核心制定的。CORBA與Java/RMI的主要區別在於以下兩個方面:
·    程序設計語言無關性是CORBA的重要設計原則,而Java/RMI依賴於Java語言和Java虛擬機;
·    Java/RMI技術的最大成就是使對象能夠在Internet上遷移和執行,而CORBA2.0標準中只考慮對象的遠程訪問,沒有對象作爲"值"傳遞的承諾。
----由於這兩個技術的天然聯繫和各自的優勢,CORBA技術與Java技術的融合已成爲必然。
5.2.2  發展趨勢
----與Internet技術結合是分佈對象技術值得重視的發展趨勢。Internet技術的發展,特別是90年代中期WWW技術的廣泛應用,給分佈對象技術的應用開闢了更廣闊的空間,Object Web成爲人們關注的新熱點。從技術的角度看,WWW應用已經經歷了Hypertext Web和Interactive Web兩種形態,但都存在很大的侷限性,突出地表現爲應用接入能力受到限制。Java的出現爲在瀏覽器上運行程序提供了新的途徑,標誌着ObjectWeb時代的開始。就以網絡爲中心的分佈式應用的發展而言,這種把對象下載到瀏覽器中執行的機制也有侷限。主要表現在大量的遺留應用不是用Java寫的,自然無法下載到瀏覽器中運行;同時,某些重要的應用,包括信息共享與管理類的應用(如數據庫系統)以及信息採集與信號監測應用(如實施網絡管理的Agent)在邏輯上不能下載到客戶端運行;另外,需要"減肥"的客戶機可能難以承受越來越龐大的應用系統。儘管Java的RMI解決了訪問異地Java對象的問題,但如何管理和訪問異地其他大量非Java對象的問題並沒有解決。另外,JavaRMI沒有提供分佈對象事務管理等服務。1996年下半年,Java與CORBA開始攜手,共同奠定ObjectWeb時代的技術基礎。
----何謂ObjectWeb?對此目前並沒有公認的定義,但可以從應用和技術兩個角度給出一定意義上的解釋。
----1.應用內涵
----ObjectWeb是繼HypertextWeb和InteractiveWeb之後新的Web應用,包括"保守的"和"理想的"兩類應用形態。
·    保守的應用形態
用戶能夠按照對象設計者的思路自由、便捷地在Internet上操縱感興趣的對象;
·    理想的應用形態
用戶能夠按照自己的需要自由、便捷地在Internet上操縱感興趣的對象。
----與HypertextWeb和InteractiveWeb比較,Objec tWeb應用給用戶的突出感受是操縱的實體不再侷限於含有"超鏈"的文檔,作用於實體的操作行爲不再侷限於"下載"一類的文件傳輸行爲。下面給出兩個應用(雖然目前還沒有成熟的應用,但實現該應用的技術途徑已經成熟)的簡單陳述,以幫助對bjectWeb的理解。
---  -(1)開放的Internet/Intranet管理
----  典型的分佈式系統管理採用Agent/Manager體系結構,Agent運行在被管理的設備(如服務器、路由器和智能交換機等)上,Manager通過與Agent的交互實施分佈式系統管理。但問題是Manager不能管理採用新標準的新設備,這對於Internet管理是不合適的。開放的Internet/Intranet管理有兩方面的含義:第一是指Agent能夠在Internet上公佈其管理功能的接口,並接受任何合法的Manager按照標準的遠程對象訪問協議(如CORBA/IIOP)所進行的訪問;第二是指Manager能夠訪問任何時刻加入Internet的Agent,只要該Agent支持Internet上標準的遠程對象訪問協議,並在加入Internet時按照標準的協議公佈其接口。這時,Manager就是管理對象的瀏覽器。我們注意到Sun公司前不久公佈的Jini能夠實現該應用構思。
- -- -(2)Web組合文檔
--- -傳統的組合文檔(如MicroSoft的Office95)是臺式應用,沒有跨網絡引用組件的功能。而目前流行的Web瀏覽器基於超文本結構,不能像組合文檔一樣自由組合和操作對象。Web組合文檔較之傳統的組合文檔增加了跨網絡引用組件的能力,這意味着複雜的組合文檔應用能夠在手持PC或其他瘦客戶機上運行。例如,一個汽車設計專家在遠離自己的設計中心講學時,能夠通過隨身攜帶的筆記本計算機,現場演示從設計中心服務器上選擇若干汽車部件,修改後組合一種新型的汽車,並現場調用設計中心的仿真系統對新設計的汽車進行各種仿真演示。
---- 2。技術內涵
--- -ObjectWeb技術主要包括對象開發技術和對象訪問技術。從當前技術現狀看,ObjectWeb技術成分如表1.1所示。
表1-1 ObjectWeb技術構成
    Hypertest Web/Interactive Web    ObjectWeb
對象    超文本    COM對象,Java對象、CORBA對象、各類組件
對象訪問    HTTP/CGI    DCOM、RMI、CORBA/IIOP、HTTP/CGI
----"對象"與"對象訪問"的關係可以用"貨物運輸系統"來類比。"對象"是ObjectWeb上的"貨"。Internet上已存在大量的超文本,相對而言COM對象、Java對象、CORBA對象和各類組件則少得多。由於臺式環境中的COM對象非常豐富,今後幾年DCOM對象可能首先會在Internet上豐富起來。按照Java技術現在的發展勢頭,Internet上的Java對象也會很快多起來。由於CORBA對象具有語言、操作系統和硬件平臺無關性的特點,它是最容易將大量的遺留應用和C++、Smalltalk對象帶入ObjectWeb的技術;隨着Java與CORBA的攜手,Java對象又會成爲CORBA對象的特例;COM對象與CORBA對象的互操作標準已經制定。CORBA對象將迎來大發展的時期。
----  "對象訪問"技術是ObjectWeb上的"車"。HTTP用於下載HTML頁面和JavaApplet。Microsoft的對象RPC、RMI和CORBA/IIOP協議分別是遠程訪問DCOM對象、Java對象和CORBA對象的協議。從訪問異地應用的意義上講,HTTP/CGI也可視爲一種對象訪問協議,只是功能和性能存在很大侷限。RMI與CORBA正在逐步融合,有人稱融合後的對象訪問技術爲Java/CORBA。今後一個時期,在ObjectWeb領域占主導地位的技術將是ActiveX/DCOM和Java/CORBA。ActiveX/DCOM的應用豐富,佔據了PC用戶的絕對優勢,一旦大力投入ObjectWeb的開發,市場優勢不可阻擋。Java/CORBA的技術優於ActiveX/DCOM,發展勢頭和潛力不可低估。也許,在ObjectWeb領域ActiveX/DCOM與Java/CORBA的關係會像操作系統領域NT與Unix的關係一樣。發展Java/CORBA的當務之急是應用開發,把握未來的最好辦法是創造未來
5.2.3 三種主流技術比較
1.CORBA
CORBA有幾個基本的優點:與開發語言無關的獨立性,與開發者無關的獨立性和與操作系統無關的獨立性。CORBA的ORB在當前每一種主流操作系統上均有實現(僅就Microsoft的各種操作系統來說,CORBA獲得的支持甚至超越了DCOM)。除此之外,CORBAORB可以訪問多種語言實現的對象(包括C++、COBOL、Smalltalk和Java)。藉助於IIOP,某一開發者(比如說Visigenic)開發的CORBAORB能夠獲取,操作遠程的由其他的開發者(比如說IONA)開發的對象。JavaORB允許客戶端在沒有安裝任何特別軟件的情況下實現Java客戶端應用程序。(JavaORB的類可與小應用一起動態下載,也可能與瀏覽器捆綁在一起。)
2.DCOM:Microsoft的法寶
目前,Microsoft的分佈式組件對象模型(Distributed Componont Object Model)僅運行於兩種操作系統之上:Windows95和WindowsNT4。Microsoft正在與第三方開發商協作,以將DCOM移到其它的操作系統上(包括MVS和幾種UNIX操作系統)。象CORBA一樣,DCOM是獨立於語言的,它用Microsoft的對象描述語言(ODL)通過接口對對象加以描述。
與CORBA相比,DCOM有三個缺點。首先,它由單一開發者(微軟)定義並控制,這大大限制了DCOM使用者的選擇範圍(比方說開發工具和風格)。其次,DCOM缺乏衆多的平臺支持,這極大程度地制約了代碼的可重用性和DCOM應用的可擴展性。最後,與CORBA相比,DCOM是一種非常不成熟的技術。儘管微軟目前正爲DCOM加入消息和事務支持,但這些功能在1994年的CORBA2.0就已經實現了,並且正由幾家不同的CORBA軟件開發商所發行。
爲了使一個Java的小應用/應用程序得以訪問服務端的DCOM對象,開發者不得不使用IE瀏覽器和Windows95/NT平臺,只有這樣才能支持客戶機軟件。這樣的限制當然削弱了應用程序在Web上的可用性。而另一方面,DCOM的一個優勢在於,對WindowsNT/95用戶免費。過去的歷史已經表明,這是與Microsoft競爭的重大障礙。
3.RMI:Sun的Java-Only解決方案
Remote Method Invocation是最新的JDK1.1中的重要特色。RMI使得Java客戶能夠訪問遠程服務對象。這聽起來似乎十分類似於CORBA,但兩者並不一樣。其關鍵在於服務器端的應用程序也必須用Java編寫,且只能使用JDK1.1中提供的工具。你根本無法把過去編制的代碼加到新程序中去,除此之外,RMI還有許多其它缺陷。
與CORBA不同,RMI沒有服務這一概念。另外,根據RMI寫出的Java服務器對象往往性能低劣,這個缺點源於Java虛擬機。(有趣的是,JavaCORBA服務器比RMI服務器表現出更好的性能。)RMI也不包括象CORBAORB那樣的對象擊活功能。
實際上,RMI及Java技術更可能向OMG的標準靠攏,而不是背道而馳。Sun已經宣佈,Java事務服務(JavaTransactionServeces)將建立在OMG的對象事務服務(ObjectTransactionServeces)。該公司還曾發佈其長遠計劃:使RMI對象可以通過IIOP互通訊。
總而言之,RMI對於用純Java書寫的小規模的應用程序來說,是一種可行方案。但CORBA提供了集成的基礎,這種集成是指新開發的代碼和已有對象的集成,同時允許將來加以擴展。在做出取此舍彼的選擇之前,必須權衡上面的各種因素,並仔細審視每種技術的現狀。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章