[軟件體系結構]DCOM,CORBA,EJB介紹

[軟件體系結構]DCOM,CORBA,EJB介紹

背景介紹

90年代出現的分佈式對象技術爲網絡計算平臺上軟件的開發提供了強有力的解決方案。目前,分佈式對象技術已經成爲建立服務應用框架和軟件構件的核心技術,在開發大型分佈式應用系統中表現出強大的生命力,逐漸形成了3種具有代表性的主流技術,即Microsoft的COM/DCOM技術、Sun公司的Java技術和OMG的COBRA技術。

分佈對象技術概念

應該說,分佈對象技術是伴隨網絡而發展起來的一種面嚮對象的技術。以前的計算機系統多是單機系統,多個用戶是通過聯機終端來訪問的,沒有網絡的概念。網絡出現後,產生了Client/Server的計算服務模式,多個客戶端可以共享數據庫服務器和打印服務器等等。隨着網絡的更進一步發展,許多軟件需要在不同廠家的網絡產品、硬件平臺、網絡協議異構環境下運行,應用的規模也從局域網發展到廣域網。在這種情況下,Client/Server模式的侷限性也就暴露出來了,於是中間件應運而生。中間件是位於操作系統和應用軟件之間的通用服務,它的主要作用是用來屏蔽網絡硬件平臺的差異性和操作系統與網絡協議的異構性,使應用軟件能夠比較平滑地運行於不同平臺上。同時中間件在負載平衡、連接管理和調度方面起了很大的作用,使企業級應用的性能得到大幅提升,滿足了關鍵業務的需求。但是在這個階段,客戶端是請求服務的,服務器端是提供服務的,它們的關係是不對稱的。隨着面向對象技術的進一步發展,出現了分佈式對象技術。可以這麼說,分佈式對象技術是隨着網絡和麪向對象技術的發展而不斷地完善起來的。90年代初CORBA 1.0標準的頒佈,揭開了分佈式對象計算的序幕。

分佈對象計算中,通常參與計算的計算體(分佈對象)是對稱的。分佈對象往往又被稱爲組件(Component),組件是一些獨立的代碼的封裝體,在分佈計算的環境下可以是一個簡單的對象,但大多數情況下是一組相關的對象複合體,提供一定的服務。分佈環境下,組件是一些靈敏的軟件模塊,它們可以位置透明、語言獨立和平臺獨立地互相發送消息,實現請求服務。

分佈對象技術與傳統的面嚮對象的技術區別

我們知道,傳統的面向對象技術有兩個基本的特點:封裝性和繼承性,通常其強調的是代碼複用,對象往往僅存在於一個程序中,程序的外界並不可能感知和訪問這些對象。分佈式對象技術主要使用了面向對象技術的封裝性,組件可以分佈在網絡的任何位置。對外界來說,它所需關心的只是組件的界面,至於內部是如何實現的則無需考慮,遠程客戶通過方法調用來訪問它。這是分佈式對象技術和傳統的面向對象技術的最大的不同點。

此外,分佈對象計算系統中都不支持跨站點的繼承性,例如,假設對象1是對象2的一個特例,而2個對象將要分佈在不同站點上,如果完全按照面向對象的概念的話,對象1可以繼承對象2的代碼和數據;但是在分佈式環境下,對象1要想繼承對象2的代碼和屬性是非常困難的,沒有任何一個分佈系統能夠支持這種繼承性,因爲實現代價太大。

另外,在分佈式對象裏我們一般不提對象,而提組件。那麼,組件和對象有什麼區別呢?我們知道,在面向對象技術裏可以有很小的一個對象,比如說一個郵政編碼做一個對象;但在分佈對象計算中,我們往往會把一些小的相關的對象組合在一起,形成一個相對比較大的組件,通過這個組件來提供一系列的服務。

目前分佈式對象技術有3種主流技術——COM、Java和COBRA,3種技術是如何發展起來的?各自的特點是什麼?

目前國際上,分佈式對象技術有三大流派——COBRA、COM/DCOM和Java。CORBA技術是最早出現的,1991年OMG頒佈了COBRA 1.0標準,在當時來說做得非常漂亮;再有就是Microsoft的COM系列,從最初的COM發展成現在的DCOM,形成了Microsoft一套分佈式對象的計算平臺;而Sun公司的Java平臺,在其最早推出的時候,只提供了遠程的方法調用,在當時並不能被稱爲分佈式對象計算,只是屬於網絡計算裏的一種,接着推出的JavaBean,也還不足以和上述兩大流派抗衡,而其目前的版本叫J2EE,推出了EJB,除了語言外還有組件的標準以及組件之間協同工作通訊的框架。於是,也就形成了目前的三大流派。

應該說,這三者之中,COBRA標準是做的最漂亮的。COBRA標準主要分爲3個層次:對象請求代理、公共對象服務和公共設施。最底層是對象請求代理ORB,規定了分佈對象的定義(接口)和語言映射,實現對象間的通訊和互操作,是分佈對象系統中的“軟總線”;在ORB之上定義了很多公共服務,可以提供諸如併發服務、名字服務、事務(交易)服務、安全服務等各種各樣的服務;最上層的公共設施則定義了組件框架,提供可直接爲業務對象使用的服務,規定業務對象有效協作所需的協定規則。總之,CORBA的特點是大而全,互操作性和開放性非常好。目前CORBA的最新版本是2.3。CORBA 3.0也已基本完成,增加了有關Internet集成和QoS控制等內容。CORBA的缺點是龐大而複雜,並且技術和標準的更新相對較慢,COBRA規範從1.0升級到2.0所花的時間非常短,而再往上的版本的發佈就相對十分緩慢了。

相比之下,Java標準的制訂就快得多,Java是Sun公司自己定的,演變的很快。Java的優勢是純語言的,跨平臺性非常好。Java分佈對象技術通常指遠程方法調用(RMI)企業級JavaBean(EJB)。RMI提供了一個Java對象遠程調用另一Java對象的方法的能力,與傳統RPC類似,只能支持初級的分佈對象互操作。Sun公司於是基於RMI,提出了EJB。基於Java服務器端組件模型,EJB框架提供了像遠程訪問、安全、交易、持久和生命期管理等多種支持分佈對象計算的服務。目前,Java技術和CORBA技術有融合的趨勢。

COM技術是Microsoft獨家做的,是在Windows 3.1中最初爲支持複合文檔而使用OLE技術上發展而來,經歷了OLE 2/COM、ActiveX、DCOM和COM+等幾個階段,目前COM+把消息通訊模塊MSMQ和解決關鍵業務的交易模塊MTS都加進去了,是分佈對象計算的一個比較完整的平臺。Microsoft的COM平臺效率比較高,同時它有一系列相應的開發工具支持,應用開發相對簡單。但它有一個致命的弱點就是COM的跨平臺性較差,如何實現與第三方廠商的互操作性始終是它的一大問題。從分佈對象技術發展的角度來看,大多數人認爲COM競爭不過COBRA。

分佈式對象技術有哪些應用?如何應用?

Oracle、Sybase和Lotus等國外軟件產商均在其主流產品中支持CORBA、EJB和DCOM技術以支持企業級應用和Web應用,這些產品在企業ERP和電子商務中均得到大量的應用。

分佈對象技術在比較大型的網絡系統中應用較多,比如像醫學方面的醫學信息系統、銀行業、交通、電信,幾乎各行各業都有成功的例子,但在國內成功的比較少。

分佈對象技術應用起來比較複雜,因爲這種軟件通常都比較龐大,涉及到網絡、對象技術等多種技術,尤其是COBRA,系統開發比較困難。分佈式系統通常採用組合框架軟件(Component Software)方法進行開發或集成,是基於軟件體系結構的集成,只有特殊需求的組件才需要新開發,與其他組件在集成框架下集成爲一個整體。當然使用組合框架軟件進行分佈式系統開發需要一整套方法、工具和平臺的支持。

國外利用分佈對象技術開發的大型應用相對傳統方法也不是很多,除了開發難度較大外,我想這裏面還有這樣一個原因,那就是人們都喜歡用成熟的技術。而在大型軟件採用分佈對象技術,在項目開發過程的控制方面的經驗不足,從一定程度上限制了分佈對象技術的應用。對於分佈式對象計算這樣的應用來說,需要有一系列方法論、軟件工程的方法和工具。如果不從開始就按照面向對象的方法來設計,利用面向對象的方法論和工具來支持的話,很難做成一個成功的分佈式應用。

在分佈式對象技術方面,我國和國外的差距還是全面的,應該說國內一直在跟蹤這個技術,也在研究開發方面加入了一些中國特色,比如通訊方面,中國的通訊線路不太好,我們就專門針對通訊模塊做了改進。說差距是全面的,首先所有分佈對象技術的標準均是國外組織和企業制定的;第二在支撐平臺上,國外有名的產品已不下百種,而中國除了少數幾個科研院所和公司有一些原型外,基本沒有自己的產品;第三,成功的應用太少。一般說來,網絡分佈式應用的第一代模式叫Client/Server模式,第二代叫3層Client/Server模式,第三代叫分佈式對象模式,目前國外基本上已經從第二代向第三代過渡,電子商務的興起將加速這一進程。而我國目前大型應用還主要是簡單Client/Server結構,但越來越多地採用3層Client/Server的模式(2009)。

談到分佈式對象技術的新進展,目前國外的一個進展就是將分佈對象計算與Web以及嵌入式移動計算結合在一起,另外就是和中間件(如交易中間件、通訊中間件等)的結合。例如COBRA新的標準里加入了Internet服務和消息服務,消息服務可以支持異步的方法的調用,可以提高程序的吞吐量,並行能力的加強提高了系統整體的性能,並增加了系統的靈活性。

分佈對象技術中,有關其軟件體系結構及開發方法上還有許多研究課題,此外如何通過統一的方式集成不同標準的組件也是未來值得研究的課題。分佈對象技術將會向智能化、小型化和標準融合的方向發展,並將在移動計算和電子商務的應用中發揮巨大的作用。

附表 3種分佈對象技術的比較

  • 集成性:集成性主要反映在基礎平臺對應用程序互操作能力的支持上。它要求分佈在不同機器平臺和操作系統上、採用不同的語言或者開發工具生成的各類商業應用必須能集成在一起,構成一個統一的企業計算框架。這一集成框架必須建立在網絡的基礎之上,並且具備對於遺留應用的集成能力;

  • 可用性:要求所採用的軟件構件技術必須是成熟的技術,相應的產品也必須是成熟的產品,在至關重要的企業應用中能夠穩定、安全、可靠地運行。另外,由於數據庫在企業計算中扮演着重要角色,軟件構件技術應能與數據庫技術緊密集成;

  • 可擴展性:集成框架必須是可擴展的,能夠協調不同的設計模式和實現策略,可以根據企業計算的需求進行裁剪,並能迅速反應市場的變化和技術的發展趨勢。通過保證當前應用的可重用性,最大程度地保護企業的投資。


參考資料

  1. http://www.educity.cn/se/casepanel/200801021122001294.htm
  2. http://www.doc88.com/p-60834197563.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章