?
隨著計算機和網絡技術的飛速發展,許多軟件需要在不同廠家的硬件平臺、網絡協議異構環境下運行,應用的規模從局域網發展到廣域網,應用范圍面向三層和多層體系結構的分布式環境,在分布式環境中,無論是硬件平臺還是軟件平臺都不可能做到統一,而大規模的應用軟件通常要求在軟硬件各不相同的分布式網絡上運行。中間件產生以前,應用軟件直接使用操作系統、網絡協議和數據庫等開發,開發者不得不直接面對許多復雜棘手的問題,如操作系統的多樣性、繁雜的網絡程序設計和管理、復雜多變的網絡環境、數據分散處理帶來的不一致性問題等等,這些與用戶的業務沒有直接關系,但又必須解決,耗費了大量的時間和精力,因此開發者迫切需要一種基于標準的、獨立于計算機硬件以及操作系統的開發和運行環境,于是,中間件技術應運而生。
1 中間件的概念
在眾多關于中間件的定義中,比較普遍接受的是IDC表述:中間件是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源;中間件位于客戶機/服務器的操作系統之上,管理計算資源和網絡通信。IDC對中間件的定義表明,中間件是一類軟件,而非一種軟件;中間件是介于操作系統(包括底層通信協議)和各種分布式應用程序之間的一個軟件層。總的作用是建立分布式軟件模塊之間互操作的機制,屏蔽底層分布式環境的復雜性和異構性,為處于自己上層的應用軟件提供運行與開發環境,幫助用戶靈活、高效地開發和集成復雜的應用軟件。在具體實現上,中間件是一個用應用程序接口定義的分布式軟件管理框架,具有強大的通信能力和良好的可擴展性。中間件在分布式系統中的位置如圖1所示。
2 中間件的分類
隨著計算機軟件技術的發展,中間件技術也已日漸成熟,并且出現了不同層次、不同類型的中間件產品。按照IDC分類方法,中間件可分為以下6類:
2.1 終端仿真/屏幕轉換
用以實現客戶機圖形用戶接口與已有的字符接口方式的服務器應用程序之間的互操作。
2.2 數據訪問中間件
適用于應用程序與數據源之間的互操作模型,客戶端使用面向數據庫的API,以提請直接訪問和更新基于服務器的數據源,數據源可以是關系型、非關系型和對象型。這類中間件大都基于SQL語句,采用同步通訊方式。此類中間件使應用開發簡單化,但如果透過廣域網使用,則會帶來嚴重的效率問題,因為在低速網上來回交互SQL語句會使通訊流量過大,同時對數據壓縮、加密帶來不便。
2.3 遠程過程調用中間件
RPC機制是早期開發分布式應用時經常采用的一種同步式的請求應答協議。通過這種協議,程序員編寫客戶方的應用,需要時可以調用位于遠端服務器上的過程。RPC擴展了過程語言中的“功能調用/結果返回”的機制,使得它可以適用于一個遠程環境。由于RPC機制是同步方式,因而在工作的時候,要求客戶方和服務方均能正確工作才能很好地運行,有一方不能工作將導致RPC失敗。在網絡故障、機器故障存在的情況下,這一要求是很難保證的。另外,由于大多數RPC機制很難建立點到點的關系,因而也很難用在面向對象的編程當中。
2.4 消息中間件
越來越多的分布式應用采用消息中間件來構建,通過消息中間件把應用擴展到不同的操作系統和不同的網絡環境。基于消息的機制更多地適用于事件驅動的應用,當一個事件發生時,消息中間件通知服務方應該進行何種操作。其核心安裝在需要進行消息傳遞的系統上,在它們之間建立邏輯通道,由消息中間件實現消息發送。消息中間件可以支持同步方式和異步方式,實際上是一種點到點的機制,因而可以很好的適用于面向對象的編程方式。中間件領域目前最熱門的技術是異步的消息中間件,異步中間件技術比同步中間件技術具有更強的容錯性,在系統故障時可以保證消息的正常傳輸。
2.5 交易中間件
是專門針對聯機交易處理系統而設計的,如銀行業務系統、定票系統等。聯機交易處理系統需要處理大量并發進程,處理并發涉及到操作系統、文件系統、編程語言、數據通訊、數據庫系統、系統管理、應用軟件,交易中間件就是一組程序模塊,用以減少開發一個聯機交易處理系統所需的編程量。
2.6 對象中間件
傳統的面向對象技術通過封裝、繼承及多態提供了良好的代碼重用功能,但是這些對象只存在一個程序中,外面的世界并不知道它們的存在,也無法訪問它們。面向對象的中間件就是要解決這些問題,面向對象的中間件提供一個標準的構件框架,能使不同廠家的軟件通過不同的地址空間、網絡和操作系統交互訪問。該構件的具體實現、位置及所依附的操作系統對客戶來說都是透明的。
3 主流中間件技術平臺
考察當前主流的分布計算技術平臺,主要有OMG的CORBA,Sun的J2EE和Microsoft DNA 20000,它們都是支持服務器端中間件技術開發的平臺,但都有其各自特點,將分別闡述如下:
3.1 OMG的CORBA
公共對象請求代理體系結構(CORBA,Common Ob—ject Request Broker Architecture)是對象管理組織(OMG)基于眾多開放系統平臺廠商提交的分布對象互操作內容基礎上制定的分布式應用程序框架的規范。
CORBA是由絕大多數分布計算平臺廠商所支持和遵循的系統規范,具有模型完整、先進,獨立于系統平臺和開發語言,被支持程度廣泛的特點,已逐漸成為分布計算技術的標準。COBRA標準主要分為3個層次:對象請求代理、公共對象服務和公共設施。最底層是對象請求代理(ORB,Object Request Broker),規定了分布對象的定義(接口)和語言映射,實現對象間的通訊和互操作,是分布對象系統中的“軟總線”;在ORB之上定義了很多公共服務,可以提供諸如并發服務、名字服務、事務(交易)服務、安全服務等各種各樣的服務;最上層的公共設施則定義了組件框架,提供可直接為業務對象使用的服務,規定業務對象有效協作所需的協定規則。CORBA的優點是大而全,互操作性和開放性非常好,缺點是龐大而復雜,并且技術和標準的更新相對較慢,在具體的應用中使用不是很多。
3.2 Sun的J2EE
為了推動基于Java的服務器端應用開發,Sun在1999年底推出了Java2技術及相關的J2EE規范。
J2EE的目標是提供與平臺無關的、可移植的、支持并發訪問和安全的、完全基于Java的開發服務器端中間件的標準。J2EE簡化了構件可伸縮的、基于構件服務器端應用的復雜度。在J2EE中,Sun給出了完整的基于Java語言開發面向企業分布應用的規范,其中在分布式互操作協議上,J2EE同時支持遠程方法調用(RMI,Re—mote Method lnvocation)和因特網對象請求代理間協議(IlOP,Intemet Inter-ORB Protocal),在服務器端分布式應用的構造形式包括了Java Scrvlct、JSP(Java ServerPage)、EJB等多種形式,以支持不同的業務需求。
EJB是Sun推出的基于Java的服務器端構件規范J2EE的一部分,在J2EE推出之后得到了廣泛的發展,已經成為應用服務器端的標準技術。Sun EJB技術是在Java Bean本地構件基礎上,發展的面向服務器端分布應用構件技術。它基于Java語言,提供了基于Java二進制字節代碼的重用方式。EJB給出了系統的服務器端分布構件規范,這包括了構件、構件容器的接口規范以及構件打包、構件配置等的標準規范內容。EJB技術的推出,使得用Java基于構件方法開發服務器端分布式應用成為可能。從企業應用多層結構的角度,EJB是業務邏輯層的中間件技術,與JavaBeans不同,它提供了事務處理的能力,自從三層結構提出以后,中間層,也就是業務邏輯層,是處理事務的核心,從數據存儲層分離,取代了存儲層的大部分地位。從分布式計算的角度,EJB像CORBA一樣,提供了分布式技術的基礎,提供了對象之間的通訊手段。
從Internet技術應用的角度,EJB和Servlct,JSP一起成為新一代應用服務器的技術標準,EJB中的Bean可以分為會話Bean和實體Bean,前者維護會話,后者處理事務,現在Scrvlet負責與客戶端通信,訪問EJB,并把結果通過JSP產生頁面傳回客戶端。
J2EE的優點是技術先進,架構優秀,真正的三層結構,用Java開發構件,能夠做到“Write once,run any—where”,開發大型的應用優勢明顯,可以配置到包括Windows平臺在內的任何服務器端環境中去。缺點是缺少一系列的接口支持,技術進入門檻高,開發起來的難度大。
3.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(ComponentObject Model)模型。COM最初作為Microsoft桌面系統的構件技術,主要為本地的OLE應用服務,但是隨著Mi-crosoft服務器操作系統NT和DCOM的發布,COM通過底層的遠程支持使得構件技術延伸到了分布應用領域。DCOM/COM/COM+更將其擴充為面向服務器端分布應用的業務邏輯中間件。通過COM+的相關服務設施,如負載均衡、內存數據庫、對象池、構件管理與配置等等,DCOM/COM/COM+將COM、DCOM、MTS的功能有機地統一在一起,形成了一個概念、功能強的構件應用體系結構。而且,DNA2000是單一廠家提供的分布對象構件模型,開發者使用的是同一廠家提供的系列開發工具,這比組合多家開發工具更有吸引力,不足是依賴于Mi-crosoft的操作系統平臺,因而在其它開發系統平臺如(Unix、Linux)上不能發揮作用。
4 中間件技術的發展趨勢
4.1 網格技術
中間件技術當前所面臨的重大挑戰是要在互聯網這個復雜的分布式系統中構建應用程序。許多計算機專家認為,將整個互聯網的各種資源全部整合在一起,為用戶提供統一的服務,是相當困難甚至難以實現的。當然,對于具體的應用領域,具體的網絡區域,用中間件技術將其中的各種資源整合在一起還是相當有前景的。目前方興未艾的網格(GRID)技術實質上即是一個基于互聯網的中間件系統,可同時運用網絡中所有的CPU、存儲器、操作系統、應用軟件等資源,用戶通過PC、手機或PDA,可從互聯網上獲取來自全球的資源,互聯網將變成一個虛擬的、強大的計算平臺。網格的重要特征是對資源的共享和管理,包括:(1)計算資源。啟動程序,監測、控制進程運行;對分配給進程的資源的管理機制;查詢功能,確定硬、軟件狀態、相關負載信息和隊列狀態等。(2)存儲資源。上載、下載文件;對分配給數據傳輸的資源(空間、磁盤帶寬、網絡帶寬、CPU)的管理機制,確定可用空間、帶寬使用率等相關負載信息。(3)網絡資源。提供控制分配給網絡傳輸的資源的管理機制;查詢網絡狀態和負載的功能。(4)代碼庫。管理源碼和目標碼的機制。另外,網格系統還應包括:①網格特有事務所需要的通信和認證協議,通信協議允許資源之間交換數據,功能包括傳輸、尋徑和名字服務。建立在通信協議之上的認證協議為確認用戶和資源的身份提供加密安全機制。②管理一組相關聯的資源集合,并負責資源集合之間的交互,包括:目錄服務、合作分配資源任務調度服務、監控診斷服務、數據復制服務、支持網格的編程、軟件發現服務、團體授權服務等。
4.2 面向移動計算
移動計算問題可以具體展開為三個方面:①用戶移動。無論用戶處在什么位置,都能為其提供一致的工作環境,包括用戶的配置信息和他所“訂閱”的服務。②終端移動。使終端設備無論在任何接入點接入網絡,都能正常工作,也就是說底層網絡對終端設備是透明的。③服務移動。當前,越來越多的服務依賴于移動的資源,甚至服務本身就處在不斷移動中,必須保證用戶及其終端設備可以隨時找到這些服務。據此,移動計算需要一個基礎設施將合適的協議、機制、工具集成起來,提供上述三方面的功能。移動中間件正是這樣一種基礎軟件。它隨時對移動用戶和終端進行跟蹤和重定位,保證移動實體的相互通信,克服系統的異構性,并且為開放的網絡環境提供安全性。隨著網絡帶寬不斷增大,人們對移動設備的服務質量問題的顧慮漸漸打消,而使用移動設備的方便性日益突出。人們要求各種服務都可以在移動的情況下(包括上述三種情況)獲得。因而移動中間件具有十分廣泛的發展前景。泛化計算(Ubiquitous Computing)是移動計算的極至,指從大型機、PC、到PDA以至安裝有處理器的各種各樣的日常生活設備之間能夠相互通信、協調工作。顯然,在這個領域,中間件面臨更為復雜的異構環境以及無線通信和動態配置的挑戰。
4.3 面向服務質量
傳統的單一系統,如大型主機、容錯系統等,依賴昂貴的配置與設計來實現高可用性,而高可用中間件主要是在軟件層面利用系統的冗余部件(比如機群系統有大量這樣的部件)為用戶提供高可用功能。這有三個方面的優勢:成本低、可擴展性好、更加靈活方便。為了保證數據的可靠性和一致性,還有必要在中間件中增加保證QOS的協議(在CORBA中已經有這樣的協議)以實現數據的備份以及各種各樣的容錯功能。另外,還要保證此方法的響應時間盡可能的快(這里泛指用戶響應時間以及切換時間等一切影響服務質量的時間)。隨著網絡技術的發展,越來越多的用戶使用網絡提供的服務,這就對服務質量提出了更高的要求,質量低劣的服務是沒有市場的。高可用中間件、容錯中間件在這一背景下將不斷完善和發展。
4.4 各種技術的發展對中間件技術產生的影響
由于中間件系統的主要目的就是整合各種異構系統中的資源,使其協調工作。因此,各種異構系統中各種技術的發展都會或者為中間件系統的開發提供便利,或者設置障礙。Web Service技術就是在XML語言、異步通信機制、以及基于內容的消息傳遞機制等各種技術發展基礎之上提出并發展起來的。又例如,當前移動代理(Mobile Agent)技術在中間件的設計和實現過程中發揮越來越重要的作用,特別是基于互聯網的應用以及涉及到移動計算和泛化計算的中間件的設計。移動代碼和移動代理技術可以提高分布式系統的靈活性和適應性。
中間件從本質上是對分布式應用的抽象,拋開了與應用相關的業務邏輯的細節,保留了典型的分布交互模式的關鍵特征,將紛繁復雜的分布式系統以統一的層面形式呈現給應用。應用在中間件提供的環境中可以更好地集中于業務邏輯上,并以構件化的形式存在,最終自然而然地在異構環境中實現良好的協同工作。構件是一種前沿的軟件設計思想,對整個軟件行業的發展有著至關重要的推動作用。而中間件作為應用軟件系統集成的關鍵技術,保證了構件化思想的實施,并為構件提供了真正的運行空間。中間件工業化標準的制定、統一及實現,使基于構件的應用開發成為可能,可以預見,軟構件技術是軟件產業化革命的必然發展趨勢。
評論
查看更多