複製鏈接
請複製以下鏈接發送給好友

應用中間件

鎖定
應用中間件(Application Middleware),又名中間件,一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不同的技術之間共享資源。中間件位於客户機/ 服務器的操作系統之上,管理計算機資源和網絡通訊。是連接兩個獨立應用程序或獨立系統的軟件。相連接的系統,即使它們具有不同的接口,但通過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞。通過中間件,應用程序可以工作於多平台或OS環境。
中文名稱
應用中間件
英文名稱
application middleware
定  義
在應用與數據庫之外,使應用能共享跨網的功能與數據的軟件。
應用學科
通信科技(一級學科),服務與應用(二級學科)
中文名
應用中間件
外文名
Application Middleware

應用中間件軟件簡介

中間件(middleware)一詞每天都被不同的人羣所提及,中間件的產品也大量出現在軟件市場,但中間件的定義卻一直比較模糊,導致中間件的分類也不很統一。也許正因為如此,才使人們不斷地設計和開發新的產品,並冠以中間件的標籤,推動着中間件的內涵和市場不斷地向前發展。
我們試圖給出中間件的一個定義。所謂中間件,就是位於操作系統和應用軟件之間的一個軟件層,它向各種應用軟件提供服務,使不同的應用進程能在屏蔽掉平台差異的情況下,通過網絡互相通信。通常,在實際使用中,把一組中間件集成在一起構成一個平台(包括開發平台和運行平台),其中必須要有一個通信中間件完成中間件之間的通信。從這個意義上講,中間件應包括平台和通信兩個部分。
中間件的思想其實並不複雜。假設我們有n個應用,m個操作系統,為了使所有的應用在所有的操作系統上都能工作,就可能需要n×m個接口。而且,每引入一個新的操作系統,就要重新改寫n個應用的源代碼;每開發一個新的應用,就要考慮實現m個不同的版本,以工作於m個操作系統之上。
中間件使這一切變得簡單。開發應用程序時不必再關心底層操作系統的類型,而只需專心於應用的邏輯處理(當然,這只是一種理想狀況)。
中間件的引入使原來的網狀接口類型變成了沙漏狀接口類型。接口數目從n×m降到了n+m。當n和m都很小的情況下,這種差異並不明顯,但隨着n和m不斷地增大(正如現實世界正在發生的那樣),這種差異將極大地增加開發應用軟件的困難,並降低系統整體運行的效率和性能。因此,中間件的出現是分佈式系統發展的產物,是軟件構架演進的必然 [1] 

應用中間件發展歷程

80年代後期基於客户/服務器的系統設計理念的出現為多用户系統提供了前所未有的雙向交互性和靈活性。客户/服務器系統結構是把圖形用户界面和大部分應用邏輯放在客户機上運行,通過將SQL請求送往運行在服務器上的數據庫,對數據進行訪問。其最大的優點在於系統結構簡單;只要將客户機和服務器通過網絡聯通,利用一些快速應用開發工具就可以很快地開發出一些部門級的小規模應用。但是,隨着信息技術的發展,這種系統結構的缺陷也逐漸顯現出來。
首先,進入90年代中期,信息技術迅猛發展,CPU的處理能力越來越強,網絡的應用日益普及,軟件應用的規模和範圍無限拓展,許多應用程序需在網絡環境的異構平台上運行。在這種異構的環境中,不但存在多種硬件系統平台,而且包括運行在這些硬件平台上的各種系統軟件以及風格迥異的用户界面,這些硬件系統平台還可能採用不同的網絡協議和網絡體系結構連接。由此帶來的問題也越來越明顯,如不同硬件平台、不同網絡環境、不同數據庫之間的互操作問題,多種應用模式並存、系統效率過低、傳輸不可靠、數據加密、開發週期過長等等。單純依賴傳統的系統軟件或工具軟件提供的功能已無法滿足要求。
其次,當客户/服務器方式應用逐漸推廣到企業級的關鍵任務(Mission-Critical)環境,便出現了一些’lde題,如系統可擴展性差、解析度低、可管理性差、維護代價高、安全性差、系統間通訊功能較弱。
為了解決兩層結構遇到的問題,人們提出了三層結構的系統設計概念。它把應用邏輯劃分為三個部分;第一層是用户界面,提供用户與系統的友好交互;第二層是應用服務器,專司業務邏輯的實現;第三層是數據服務器,負責數據信息的存儲、訪問及其優化。其主要目的是產生一套切實可行的解決方案,把客户/服務器結構下的應用可靠地推廣到企業級的關鍵任務環境中,並利用這一技術所帶來的高效率、多功能與靈活性,增強企業在市場上的競爭能力。而中間件正是構造這種三層結構的基礎。
所謂中間件就是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不同的技術之間共享資源,中間件位於客户機/服務器的操作系統之上,管理計算資源和網絡通信。我們可以將中間件理解成是處於應用軟件和系統軟件之間的一類軟件,或者是獨立於硬件或數據庫廠商(處於其產品的中間,實現其互連)的一類軟件,或者是客户方與服務器方之間的連接件,或者是需要進行二次開發的中間產品。其特點是能夠滿足大量應用的需要,可以運行於多種硬件和OS平台,支持分佈計算,提供跨網絡、硬件和OS平台的透明性。
中間件軟件管理着客户端程序和數據庫或者早期應用軟件之間的通訊。中間件在分佈式的客户和服務之間扮演着承上啓下的角色,如事務管理、負荷平衡以及基於Web的計算等。利用這些技術有助於減輕應用軟件開發者的負擔,使他們在利用現有的硬件設備、操作系統、網絡、數據庫管理系統以及對象模型創建分佈式應用軟件時更加得心應手。
由於中間件產品在很大程度上簡化了一個由不同硬件構成的分佈式處理環境的複雜性,所以它正在日益引起用户的注意。面對廣闊的市場,各個軟件廠商紛紛推出自己的產品,羣雄逐鹿的市場競爭局面逐漸形成。
早在1969年IBM就推出了專門用於事務處理的平台軟件中間件技術作為軟件行業新崛起的一個嶄新的分支,正在全球範圍內迅猛發展。
IDC的研究報告表明,1997年全球中間件市場的綜合增長率為28%,銷售額達到了17.16億美元。到2002年,全球中間件產品市場的營業額將超過70億美元。從市場情況看,到2000年,面向消息的中間件產品有望取代用於數據訪問的中間件產品,而成為該市場最大的一部分,其次是分佈式交易處理中間件產品,依舊牢牢地佔據着主流的地位,IDC預測基於桌面訪問的中間件產品的市場增長將在1999年達到最高峯-CICS,並將其很快推廣到了許多操作系統平台,其服務器版本可運行在OS/390、MVS/ESA、VSE/ESA、OS/400、OS/2、Windows NT、Windows 95、Apple Mac、AlX、Solaris、HP-UX和Digital Unix上。
CICS經過了近30年的發展歷史,其穩定性和可靠性早已千錘百煉,而且CICS幾乎每年根據客户的需求變化和新技術的出現均有重大發展,例如CICS在1978年就支持了分佈式聯機事務處理,CICS在近年來發展了對MQ Series、Lotus Notes、Internet和Java的支持。
CICS已經在金融、財税、運輸、商業、服務、電力、電話等行業中得到廣泛應用和推廣,統計表明,在《幸福》雜誌(Fortune)中排列世界前500家的公司,約有97%採用CICS作為其業務運行系統的平台。憑藉多年的開發經驗和對市場敏鋭的洞察力,IBM公司在90年代及時調整其產品策略,將中間件產品作為其今後開發的重點之重點,並推出了面向消息的中間件產品—MQ Series,它能夠保證數據穩定可靠傳輸而且無丟失或重發,可謂是工B岡“看家本領”之一。MQSeries是商業通訊中間件。它由一個信息傳輸系統和一個應用程序接口組成,其資源是信息和隊列(Messogjng and Queueing)。MQ應用程序可以通過使用一個簡單而一致的應用程序編程接口來相互通信跨越具有不同處理器、操作系統、子系統和通訊協議的網絡。它的功能是控制和管理一個集成的商業應用,使得組成這個商業應用的多個分支程序(模塊)之間通過傳遞信息完成整個工作流程 [2] 

應用中間件特點

中間件有幾個非常重要的特徵是必須具備的 [3] 

應用中間件應用支撐

中間件的最終目的是解決上層應用系統的問題,而且也是軟件技術發展到今天對應用軟件提供最完善徹底的解決方案。現代面向服務的中間件在4個方面形成了很高地應用支撐能力,分別為軟件的結構、模型、開發方法以及互操作,而要最終解決軟件的靈活應變問題、效率問題、質量問題、互操作問題這四大問題,需要在軟件技術的內在結構、架構層面進行思考。

應用中間件耦合關係

中間件基於SOA架構,在松耦和解耦過程中演變成了境界。而傳統軟件將軟件之中核心三部分數據轉換、網絡連接和業務邏輯所有的都耦合在一個整體,產生為鐵板一塊的軟件,然後動一點而動全身,這樣的軟件就很難適應市場的需求。而分佈式對象技術可以分離連接邏輯,消息中間件異步處理連接邏輯,形成了很大的靈活性。中間件分離分佈式對象與消息代理的數據轉換。SOA架構以服務的封裝,解耦實現了業務邏輯、數據轉換與網絡連接等。

應用中間件互操作性

傳統中間件在軟件的互操作方面,通過標準化的API完成了同類系統之間的調用互操作,但是連接互操作離不開原有的特定的訪問協議,比如CORBA用於的IIOP,JAVA用於的RMI等。而SOA以支持Internet、標準化及操作系統無關的SOAP協議完成了連接互操作。並且服務的封裝一般使用XML協議,它有自定義及自解析的特性,因此基於SOA的中間件能夠完成語義互操作。

應用中間件軟件複用

軟件複用也稱為軟件的重用,是指在一定範圍內不修改或者略有修改都屬於重複使用。其實説白了其意思就是不斷提升抽象級別,然後擴展複用的範圍。最早使用的複用技術一般是子程序,自從發明子程序之後,人們就可以在不同系統之間進行軟件複用。但子程序只是最原始的複用,因為這種複用範圍只是在一個可執行程序內中的複用,靜態開發期的複用,一旦子程序被修改,那麼就需要重新對所有調用這個子程序的程序進行編譯、測試以及發佈。

應用中間件平台化

我們所説的平台是指能夠獨立運行並且自主存在的,能支撐上層系統和應用提供運行所依賴的環境。顯然,不是所有的系統或者應用都可以稱之為平台的。中間件是一個平台,因此中間件是必須獨立存在,它在操作的系統軟件,為上層的網絡應用系統提供一個運行支撐環境,同時圍繞標準的接口與API來隔離系統,完成其獨立,也就是平台性。總的來説,中間件在完整業務複用、靈活業務組織方面的發展趨勢集中體現在服務化,其核心技術是提升IT基礎設施的業務敏捷性。中間件因此將成為SOA的主要實現平台。

應用中間件分類

中間件的作用簡單來説就是試圖通過屏蔽各種複雜的技術細節使技術問題簡單化。具體地説,中間件屏蔽了底層操作系統的複雜性,使程序開發人員面對一個簡單而統一的開發環境,減少程序設計的複雜性,將注意力集中在自己的業務上,不必再為程序在不同系統軟件上的移植而重複工作,從而大大減少了技術上的負擔。所以説中間件帶給應用系統的,不只是開發的簡便、開發週期的縮短,同時也減少了系統的維護、運行和管理的工作量,還減少了計算機總體費用的投入。其次,中間件作為新層次的基礎軟件,其重要作用是將不同時期、在不同操作系統上開發的應用軟件集成起來,彼此像一個天衣無縫的整體協調工作,這是操作系統、數據庫管理系統本身做不了的。目前,針對不同的應用湧現出各具特色的中間件產品。從不同的角度和層次對中間件有不同的分類。根據中間件在系統中所起的作用和採用的技術不同,可以把中間件大致劃分為以下幾種 [4] 
數據訪問中間件(Data Access Middieware)
在分佈式系統中,重要的數據都集中存放在數據服務器中,它們可以是關係型、複合文檔型、具有各種存放格式的多媒體型,或者是經過加密或壓縮存放的,數據訪問中間件是在這種系統中建立數據應用資源互操作的模式,實現異構環境下的數據庫聯接或文件系統聯接的中間件,從而為在網絡上虛擬緩衝存取、格式轉換、解壓等帶來方便。數據訪問中間件在所有的中間件中是應用最廣泛、技術最成熟的一種。一個最典型的例子就是ODBC,ODBC是一種基於數據庫的中間件標準,它允許應用程序和本地或者異地的數據庫進行通信,並提供了一系列的應用程序接口API,當然,在多數情況下這些API都是隱藏在開發工具中,不被程序員直接使用。不過在數據訪問中間件處理模型中,數據庫是信息存貯的核心單元,中間件完成通信的功能,這種方式雖然是靈活的,但是並不適合於一些要求高性能處理的場合,因為它需要大量的數據通信,而且當網絡發生故障時,系統將不能正常工作。
遠程過程調用中間件(RPC)
遠程過程調用是另外一種形式的中間件,它在客户/服務器計算方面,比數據庫中間件又邁進了一步。通過這種遠程過程調用機制,程序員編寫客户方的應用,需要時可以調用位於遠端服務器上的過程。它的工作方式如下:當一個應用程序A需要與遠程的另一個應用程序B交換信息或要求B提供協助時,A在本地產生一個請求,通過通訊鏈路通知B接收信息或提供相應的服務,B完成相關處理後將信息或結果返回給A。RPC的靈活特性使得它有比數據庫中間件更廣泛的應用,它可以應用在更復雜的客户/服務器計算環境中。遠程過程調用的靈活性還體現在它的跨平台性方面,它不僅可以調用遠端的子程序,而且這種調用是可以跨不同操作系統平台的,而程序員在編程時並不需要考慮這些細節。RPC也有一些缺點,主要是因為RPC一般用於應用程序之間的通信,而且採用的是同步通信方式,因此對於比較小型的簡單應用還是比較適合的,因為這些應用通常不要求異步通信方式。但是對於一些大型的應用,這種方式就不是很適合了,因為此時程序員需要考慮網絡或者系統故障,處理併發操作、緩衝、流量控制以及進程同步等一系列複雜問題。
面向消息中間件(MOM)
消息中間件能在不同平台之間通信,實現分佈式系統中可靠的、高效的、實時的跨平台數據傳輸,它常被用來屏蔽掉各種平台及協議之間的特性,實現應用程序之間的協同;其優點在於能夠在客户和服務器之間提供同步和異步的連接,並且在任何時刻都可以將消息進行傳送或者存儲轉發,這也是它比遠程過程調用更進一步的原因。另外消息中間件不會佔用大量的網絡帶寬,可以跟蹤事務,並且通過將事務存儲到磁盤上實現網絡故障時系統的恢復。當然和遠程過程調用相比,消息中間件不支持程序控制的傳遞。消息中間件適用於需要在多個進程之間進行可靠的數據傳送的分佈式環境。它是中間件中唯一不可缺少的,也是銷售額最大的中間件產品,目前在Windows2000操作系統中已包含了其部分功能。
面向對象的中間件
面向對象的中間件(Object Oriented Middieware)。當前開發大型應用軟件通常採用基於組件技術,在分佈系統中,還需要集成各節點上的不同系統平台上的組件或新老版本的組件;組件的含義通常指的是一組對象的集成,其種類有數百萬種,但這些組件面臨着缺乏標準而不能相互操作,各廠家的組件只能在各自的平台上運行。為此,連接這些組件環境的面向對象的中間件便應運而生。面向對象的中間件是對象技術和分佈式計算發展的產物,它提供一種通訊機制,透明地在異構的分佈計算環境中傳遞對象請求,而這些對象可以位於本地或者遠程機器。在這些面向對象的中間件中,功能最強的是CORBA,可以跨任意平台,但是太龐大;JavaBeans較靈活簡單,很適合於作瀏覽器,但運行效率差;DCOM模型主要適合Windows平台,已廣泛使用。但是DCOM和CORBA這兩種標準相互競爭,而且兩者之間有很大的區別,這在一定程度上阻礙了面向對象中間件的標準化進程。當前國內新建系統實際上主要是UNIX(包括LINUX)和Windows,因此針對這兩個平台建立標準的面向對象中間件是很有必要的。
事務處理中間件(TPM)
事務處理中間件是在分佈、異構環境下提供保證交易完整性和數據完整性的一種環境平台;它是針對複雜環境下分佈式應用的速度和可靠性要求而實現的。它給程序員提供了一個事務處理的API,程序員可以使用這個程序接口編寫高速而且可靠的分佈式應用程序——基於事務處理的應用程序。事務處理中間件向用户提供一系列的服務,如應用管理、管理控制、已經應用於程序間的消息傳遞等。常見的功能包括全局事務協調、事務的分佈式兩段提交(準備階段和完成階段)、資源管理器支持、故障恢復、高可靠性、網絡負載平衡等等。
網絡中間件
它包括網管、接入、網絡測試、虛擬社區、虛擬緩衝等,也是當前研究的熱點。
終端仿真/屏幕轉換中間件
它的作用在於實現客户機圖形用户接口與已有的字符接口方式的服務器應用程序之間的互操作。

應用中間件發展趨勢

軟件構件化(Software Component)技術是在大工業生產啓發下應運而生的,是軟件技術跨世紀的一個發展趨勢,其目的是徹底改變軟件生產方式,從根本上提高軟件生產的效率和質量,提高開發大型軟件系統尤其是商用系統的成功率。有了軟件構件之後,應用開發人員就可以利用現成的軟件構件裝配成適用於不同領域、功能各異的應用軟件。複用軟件一直是整個世界軟件業所追求的夢想,軟件構件化為實現這一夢想指出了一條切實可行的道路,而中間件正是構件化軟件的一種形式。中間件抽象了典型的應用模式,應用軟件製造者可以基於標準的形式進行開發,使軟件構件化成為可能,加速了軟件複用的進程。因此,中間件是符合軟件發展的內在規律的。
中間件在十幾年不斷髮展的歷史中,為大型企業應用的建設起到了很大的作用。但是沉澱下來的優秀中間件企業卻不多。中間件作為一個產品,一方面受到軟件技術從C、C++、Java、J2EE到.net的牽制,又有應用軟件走出部門、走向全企業和全互聯網的引領,也從CORBA,COM+,消息中間件發展到了J2EE平台和SOA。在這麼多的技術遷徙過程中,要讓一個公司能夠持續發展也真是不容易。所以有了Inprise、Iona的不成功,也才有IBM、Microsoft的不倒翁地位。也難怪中國的中間件公司,只要還存在就是巨大的成功了。
傳統的中間件技術的發展往往源於技術能力。而技術的不斷變化又讓這些公司難以長期立足。但是如果我們站在一個更高的層次,跨越純技術性的定位,也許我們會看到一個更平穩的中間件市場的空間,這正是新一代的中間件軟件廠商的立足之地。從應用軟件的角度來看,我們需要一個穩定的、技術依賴性較弱的方法來描述企業應用的不斷升級的業務邏輯結構。業務邏輯會按照企業的發展而發展,卻不應該太多的因為技術的變化而重新編寫。新一代的面向構件的中間件就是這樣一個在基礎中間件上的一個新的樓層 [5] 
中間件的發展日臻完善,它為計算機軟件的發展注入了新鮮的活力,是軟件技術發展的一種潮流。中間件的組件模式,簡化了應用程序的開發複雜性,提高了軟件的可重用性,促使軟件生產的產業化,使跨企業的分佈式應用得到了推廣。
據有關組織預測,消息中間件是目前中間件技術的發展熱點,在市場上佔據了主導地位。消息中間件以其獨特的優勢為各種分佈式應用的開發注入了強大的動力,極大地推動了應用集成的發展。對象中間件技術也發展迅速,也是未來的主流,各大硬軟件公司,如:Sun,Microsoft,IBM,DEC等都在積極參與有關標準的制定和產品的開發工作。中間件的另一個發展方向是WebServices中間件,不同於目前的組件技術,WebServices不是通過特定的對象模型協議訪問,而是通過通用的網絡協議和數據格式來訪問,例如HTTP和XML。用户僅僅通過創建並使用為WebServices接口定義的消息就可以使用任何語言在任何平台上調用WebServices。目前WebServices中間件還處在發展初期,許多標準和規範還在制定和完善中。
隨着Web技術的飛速發展,中間件當前所面臨的重大的挑戰就是要在互聯網這個複雜的分佈式系統中構建應用程序。可以預見,未來的中間件必將和網絡技術緊密相關。國內外都正在深入地研究這一技術 [6] 
參考資料