軟件系統的復雜性不斷增長、軟件人員的頻繁流動和軟件行業的激烈競爭迫使軟件企業提高軟件質量、積累和固化知識財富,并盡可能地縮短軟件產品的開發周期。于是集軟件復用、分布式對象計算、企業級應用開發等技術為一體的"基于中間件的軟件開發"(CBSD,Component Based Sortware Development)應運而生,這種技術以軟件架構為組裝藍圖,以可復用軟件構件為組裝模塊,支持組裝式軟件的復用,大大提高了軟件生產效率和軟件質量。為此國風外對于這一技術的研究正在不斷深入,同時大型的軟件公司(例如sun,microsoft)及軟件組織機構(OMG)都推出了支持中間件技術的軟件平臺。面對高深的中間件技術和繁多的軟件平臺,很多人感到很茫然和無從下手,本文簡單介紹了中間件技術的發展和特點,重點闡述和比較了三大主流中間件技術平臺,使讀者對中間件技術有個全面的了解。
1 中間件技術的概念及發展
顧名思義,中間件是處于應用軟件和系統軟件之間的一類軟件,是獨立于硬件或數據庫廠商(處于其產品的中間,實現其互連)的一類軟件,是客戶方與服務方之間的連接件,是需要進行二次開發的中間產品。
應該說,中間件技術是伴隨網絡而發展起來的一種面向對象的技術。以前的計算機系統多是單機系統,多個用戶是通過聯機終端來訪問的,沒有網絡的概念。網絡出現后,產生了Client/Server的計算服務模式,多個客戶端可以共享數據庫服務器和打印服務器等等。隨著網絡的更進一步發展,許多軟件需要在不同廠家的網絡產品、硬件平臺、網絡協議異構環境下運行,應用的規模也從局域網發展到廣域網。在這種情況下,Client/Server模式的局限性也就暴露出來了,于是中間件應運而生。中間件是位于操作系統和應用軟件之間的通用服務,它的主要作用是用來屏蔽網絡硬件平臺的差異性和操作系統與網絡協議的異構性,使應用軟件能夠比較平滑地運行于不同平臺上。同時中間件在負載平衡、連接管理和調度方面起了很大的作用,使企業級應用的性能得到大幅提升,滿足了關鍵業務的需求。
2 當前支持服務器端中間件技術的平臺
考察當前主流的分布計算技術平臺,主要有OMG的CORBA、Sun的J2EE和Microsoft DNA 2000。它們都是支持服務器端中間件技術開發的平臺,但都有其各自的特點,將分別闡述如下。
2.1 OMG的CORBA
CORBA分布計算技術是OMG組織基于眾多開放系統平臺廠商提交的分布對象互操作內容的基礎上制定的公共對象請求代理體系規范。
CORBA分布計算技術,是由絕大多數分布計算平臺廠商所支持和遵循的系統規范技術,具有模型完整、先進,獨立于系統平臺和開發語言,被支持程度廣泛的特點,已逐漸成為分布計算技術的標準。COBRA標準主要分為3個層次:對象請求代理、公共對象服務和公共設施。最底層是對象請求代理ORB,規定了分布對象的定義(接口)和語言映射,實現對象間的通訊和互操作,是分布對象系統中的"軟總線";在ORB之上定義了很多公共服務,可以提供諸如并發服務、名字服務、事務(交易)服務、安全服務等各種各樣的服務;最上層的公共設施則定義了組件框架,提供可直接為業務對象使用的服務,規定業務對象有效協作所需的協定規則。目前,CORBA兼容的分布計算產品層出不窮,其中有中間件廠商的ORB產品,如BEAM3,IBM Component Broker,有分布對象廠商推出的產品,如IONAObix和OOCObacus等.
CORBA規范的近期發展,增加了面向Internet的特性,服務質量控制和CORBA構件模型(CORBA Component Model)。
Internet集成特性包括了針對IIOP傳輸的防火墻(Firewall)和可內部操作的定義了URL命名格式的命名服務(Naming Service)。
服務質量控制包括能夠具有質量控制的異步消息服務,一組針對嵌入系統的CORBA定義,一組關于實時CORBA與容錯CORBA的請求方案。
CORBA CCM(CORBA Component Model)技術,是在支持POA的CORBA規范(版本2.3以后)基礎上,結合EJB當前規范的基礎上發展起來的。CORBA構件模型,是OMG組織制定的一個用于開發和配置分布式應用的服務器端中間件模型規范,它主要包括如下三項內容:
a.抽象構件模型,用以描述服務器端構件結構及構件間互操作的結構;
b.構件容器結構,用以提供通用的構件運行和管理環境,并支持對安全、事務、持久狀態等系統服務的集成;
c.構件的配置和打包規范,CCM使用打包技術來管理構件的二進制、多語言版本的可執行代碼和配置信息,并制定了構件包的具體內容和基于XML的文檔內容標準。
總之,CORBA的特點是大而全,互操作性和開放性非常好。CORBA的缺點是龐大而復雜,并且技術和標準的更新相對較慢,COBRA規范從1.0升級到2.0所花的時間非常短,而再往上的版本的發布就相對十分緩慢了。在具體的應用中使用不是很多。
2.2 Sun的J2EE
為了推動基于Java的服務器端應用開發,Sun于是在1999年底推出了Java2技術及相關的J2EE規范,J2EE的目標是:提供平臺無關的、可移植的、支持并發訪問和安全的,完全基于Java的開發服務器端中間件的標準。
在J2EE中,Sun給出了完整的基于Java語言開發面向企業分布應用規范,其中,在分布式互操作協議上,J2EE同時支持RMI和IIOP,而在服務器端分布式應用的構造形式,則包括了Java Servlet、JSP(Java Server Page)、EJB等多種形式,以支持不同的業務需求,而且Java應用程序具有"Write once,run anywhere"的特性,使得J2EE技術在發布計算領域得到了快速發展。
J2EE簡化了構件可伸縮的、其于構件服務器端應用的復雜度,雖然DNA 2000也一樣,但最大的區別是DNA 2000是一個產品,J2EE是一個規范,不同的廠家可以實現自己的符合J2EE規范的產品,J2EE規范,是眾多廠家參與制定的,它不為Sun所獨有,而且其支持跨平臺的開發,目前許多大的分布計算平臺廠商都公開支持與J2EE兼容技術。
EJB是Sun推出的基于Java的服務器端構件規范J2EE的一部分,自從J2EE推出之后,得到了廣泛的發展,已經成為應用服務器端的標準技術。SunEJB技術是在Java Bean本地構件基礎上,發展的面向服務器端分布應用構件技術。它基于Java語言,提供了基于Java二進制字節代碼的重用方式。EJB給出了系統的服務器端分布構件規范,這包括了構件、構件容器的接口規范以及構件打包、構件配置等的標準規范內容。EJB技術的推出,使得用Java基于構件方法開發服務器端分布式應用成為可能。從企業應用多層結構的角度,EJB是業務邏輯層的中間件技術,與JavaBeans不同,它提供了事務處理的能力,自從三層結構提出以后,中間層,也就是業務邏輯層,是處理事務的核心,從數據存儲層分離,取代了存儲層的大部分地位。從分布式計算的角度,EJB像CORBA一樣,提供了分布式技術的基礎。提供了對象之間的通訊手段。
從Internet技術應用的角度,EJB和Servlet,JSP一起成為新一代應用服務器的技術標準,EJB中的Bean可以分為會話Bean和實體Bean,前者維護會話,后者處理事務,現在Servlet負責與客戶端通信,訪問EJB,并把結果通過JSP產生頁面傳回客戶端。
J2EE的優點是,服務器市場的主流還是大型機和UNIX平臺,這意味著以Java開發構件,能夠做到"Write once,run anywhere",開發的應用可以配置到包括Windows平臺在內的任何服務器端環境中去。
2.3 Microsoft DNA 2000
Microsoft DNA 2000(Distributed interNet Applications)是Microsoft在推出Windows2000系列操作系統平臺基礎上,在擴展了分布計算模型,以及改造Back Office系列服務器端分布計算產品后發布的新的分布計算體系結構和規范。
在服務器端,DNA 2000提供了ASP、COM、Cluster等的應用支持。目前,DNA2000在技術結構上有著巨大的優越性。一方面,由于Microsoft是操作系統平臺廠商,因此DNA 2000技術得到了底層操作系統平臺的強大支持;另一方面,由于Microsoft的操作系統平臺應用廣泛,支持該系統平臺的應用開發廠商數目眾多,因此在實際應用中,DNA 2000得到了眾多應用開發商的采用和支持。
DNA 2000融合了當今最先進的分布計算理論和思想,如事務處理、可伸縮性、異步消息隊列、集群等內容。DNA使得開發可以基于Microsoft平臺的服務器構件應用,其中,如數據庫事務服務、異步通訊服務和安全服務等,都由底層的分布對象系統提供。
以Microsoft為首的DCOM/COM/COM+陣營,從DDE,OLE到ActiveX等,提供了中間件開發的基礎,如VC,VB,Delphi等都支持DCOM,包括OLE DB在內新的數據庫存取技術,隨著Windows2000的發布,Microsoft的DCOM/COM/COM+技術,在DNA2000分布計算結構基礎上,展現了一個全新的分布構件應用模型。首先,DCOM/COM/COM+的構件仍然采用普通的COM(Component Object Model)模型。COM最初作為Microsoft桌面系統的構件技術,主要為本地的OLE應用服務,但是隨著Microsoft服務器操作系統NT和DCOM的發布,COM通過底層的遠程支持使得構件技術延伸到了分布應用領域。DCOM/COM/COM+更將其擴充為面向服務器端分布應用的業務邏輯中間件。通過COM+的相關服務設施,如負載均衡、內存數據庫、對象池、構件管理與配置等等,DCOM/COM/COM+將COM、DCOM、MTS的功能有機地統一在一起,形成了一個概念、功能強的構件應用體系結構。而且,DNA2000是單一廠家提供的分布對象構件模型,開發者使用的是同一廠家提供的系列開發工具,這比組合多家開發工具更有吸引力。
但是它的不足是依賴于Microsoft的操作系統平臺,因而在其它開發系統平臺(如Unix、Linux)上不能發揮作用。
3 相關性比較分析
目前,針對上述的各種分布計算平臺技術,都出現了相似且具有可比性的分布式構件,即CORBA CCM(CORBA Component Model)技術、SUN的EJB(Enterprise JavaBean)技術和DNA 2000中的COM/DCOM/COM+技術。
對于以上三個分布計算平臺,本文采用業界常用的做法從以下三個方面進行分析:
集成性:集成性主要反映在基礎平臺對應用程序互操作能力的支持上。它要求分布在不同機器平臺和操作系統上、采用不同的語言或者開發工具生成的各類商業應用必須能集成在一起,構成一個統一的企業計算框架。這一集成框架必須建立在網絡的基礎之上,并且具備對于遺留應用的集成能力;
可用性:要求所采用的軟件構件技術必須是成熟的技術,相應的產品也必須是成熟的產品,在至關重要的企業應用中能夠穩定、安全、可靠地運行。另外,由于數據庫在企業計算中扮演著重要角色,軟件構件技術應能與數據庫技術緊密集成;
可擴展性:集成框架必須是可擴展的,能夠協調不同的設計模式和實現策略,可以根據企業計算的需求進行裁剪,并能迅速反應市場的變化和技術的發展趨勢。通過保證當前應用的可重用性,最大程度地保護企業的投資。
下表從集成性,可用性,可擴展性三個方面,給出了上述三種主流分布計算平臺的比較結果。
雖然這三種平臺因為其形成的歷史背景和商業背景有所不同,各自有自己的側重和特點,其實在它們之間也有很大的相通性和互補性。例如,EJB提供了一個概念清晰、結構緊湊的分布計算模型和構件互操作的方法,為構件應用開發提供了相當的靈活性。但由于它還處于發展初期,因此其形態很難界定。CORBA CCM是一種集成技術,而不是編程技術。它提供了對各種功能模塊進行構件化處理并將它們捆綁在一起的粘合劑。EJB和CORBA在很大的程度是可以看作為互補的。這個適應WEB應用的發展要求,許多廠商多非常重視促進EJB和CORBA技術的結合,將來RMI可能建立在IIOP之上。CORBA不只是對象請求代理ORB,也是一個非常完整的分布式對象平臺。CORBA可以擴展EJB在網絡、語言、組件邊界、操作系統中的各種應用。目前許多平臺都能實現EJB構件和CORBA構件的互操作。同EJB和CORBA之間相互之間方便的互操作性相比,DOCM和CORBA之間的互操作性要相對復雜些,雖然DCOM和CORBA極其類似。DOCM的接口指針大體相當于CORBA的對象引用。為了實現CORBA和DCOM的互操作,OMG在CORBA3。0的規范中,加入了有關的CORBA和DCOM互操作的實現規范,并提供了接口方法。因為商業利益的原因,在EJB和DCOM之間基本沒有提供互操作方法。
原文轉自:http://www.anti-gravitydesign.com