版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們

[科普中國(guó)]-應(yīng)用中間件

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識(shí)科普陣地
收藏

簡(jiǎn)介

中間件(middleware)一詞每天都被不同的人群所提及,中間件的產(chǎn)品也大量出現(xiàn)在軟件市場(chǎng),但中間件的定義卻一直比較模糊,導(dǎo)致中間件的分類也不很統(tǒng)一。也許正因?yàn)槿绱?才使人們不斷地設(shè)計(jì)和開發(fā)新的產(chǎn)品,并冠以中間件的標(biāo)簽,推動(dòng)著中間件的內(nèi)涵和市場(chǎng)不斷地向前發(fā)展。

我們?cè)噲D給出中間件的一個(gè)定義。所謂中間件,就是位于操作系統(tǒng)和應(yīng)用軟件之間的一個(gè)軟件層,它向各種應(yīng)用軟件提供服務(wù),使不同的應(yīng)用進(jìn)程能在屏蔽掉平臺(tái)差異的情況下,通過(guò)網(wǎng)絡(luò)互相通信。通常,在實(shí)際使用中,把一組中間件集成在一起構(gòu)成一個(gè)平臺(tái)(包括開發(fā)平臺(tái)和運(yùn)行平臺(tái)),其中必須要有一個(gè)通信中間件完成中間件之間的通信。從這個(gè)意義上講,中間件應(yīng)包括平臺(tái)和通信兩個(gè)部分。圖是對(duì)這一定義的解釋。

中間件的思想其實(shí)并不復(fù)雜。假設(shè)我們有n個(gè)應(yīng)用,m個(gè)操作系統(tǒng),為了使所有的應(yīng)用在所有的操作系統(tǒng)上都能工作,就可能需要n×m個(gè)接口。而且,每引入一個(gè)新的操作系統(tǒng),就要重新改寫n個(gè)應(yīng)用的源代碼;每開發(fā)一個(gè)新的應(yīng)用,就要考慮實(shí)現(xiàn)m個(gè)不同的版本,以工作于m個(gè)操作系統(tǒng)之上。

中間件使這一切變得簡(jiǎn)單。開發(fā)應(yīng)用程序時(shí)不必再關(guān)心底層操作系統(tǒng)的類型,而只需專心于應(yīng)用的邏輯處理(當(dāng)然,這只是一種理想狀況)。

中間件的引入使原來(lái)的網(wǎng)狀接口類型變成了沙漏狀接口類型,如圖所示。接口數(shù)目從n×m降到了n+m。當(dāng)n和m都很小的情況下,這種差異并不明顯,但隨著n和m不斷地增大(正如現(xiàn)實(shí)世界正在發(fā)生的那樣),這種差異將極大地增加開發(fā)應(yīng)用軟件的困難,并降低系統(tǒng)整體運(yùn)行的效率和性能。因此,中間件的出現(xiàn)是分布式系統(tǒng)發(fā)展的產(chǎn)物,是軟件構(gòu)架演進(jìn)的必然1。

發(fā)展歷程80年代后期基于客戶/服務(wù)器的系統(tǒng)設(shè)計(jì)理念的出現(xiàn)為多用戶系統(tǒng)提供了前所未有的雙向交互性和靈活性。客戶/服務(wù)器系統(tǒng)結(jié)構(gòu)是把圖形用戶界面和大部分應(yīng)用邏輯放在客戶機(jī)上運(yùn)行,通過(guò)將SQL請(qǐng)求送往運(yùn)行在服務(wù)器上的數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)進(jìn)行訪問。其最大的優(yōu)點(diǎn)在于系統(tǒng)結(jié)構(gòu)簡(jiǎn)單;只要將客戶機(jī)和服務(wù)器通過(guò)網(wǎng)絡(luò)聯(lián)通,利用一些快速應(yīng)用開發(fā)工具就可以很快地開發(fā)出一些部門級(jí)的小規(guī)模應(yīng)用。但是,隨著信息技術(shù)的發(fā)展,這種系統(tǒng)結(jié)構(gòu)的缺陷也逐漸顯現(xiàn)出來(lái)。

首先,進(jìn)入90年代中期,信息技術(shù)迅猛發(fā)展,CPU的處理能力越來(lái)越強(qiáng),網(wǎng)絡(luò)的應(yīng)用日益普及,軟件應(yīng)用的規(guī)模和范圍無(wú)限拓展,許多應(yīng)用程序需在網(wǎng)絡(luò)環(huán)境的異構(gòu)平臺(tái)上運(yùn)行。在這種異構(gòu)的環(huán)境中,不但存在多種硬件系統(tǒng)平臺(tái),而且包括運(yùn)行在這些硬件平臺(tái)上的各種系統(tǒng)軟件以及風(fēng)格迥異的用戶界面,這些硬件系統(tǒng)平臺(tái)還可能采用不同的網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)體系結(jié)構(gòu)連接。由此帶來(lái)的問題也越來(lái)越明顯,如不同硬件平臺(tái)、不同網(wǎng)絡(luò)環(huán)境、不同數(shù)據(jù)庫(kù)之間的互操作問題,多種應(yīng)用模式并存、系統(tǒng)效率過(guò)低、傳輸不可靠、數(shù)據(jù)加密、開發(fā)周期過(guò)長(zhǎng)等等。單純依賴傳統(tǒng)的系統(tǒng)軟件或工具軟件提供的功能已無(wú)法滿足要求。

其次,當(dāng)客戶/服務(wù)器方式應(yīng)用逐漸推廣到企業(yè)級(jí)的關(guān)鍵任務(wù)(Mission-Critical)環(huán)境,便出現(xiàn)了一些’lde題,如系統(tǒng)可擴(kuò)展性差、解析度低、可管理性差、維護(hù)代價(jià)高、安全性差、系統(tǒng)間通訊功能較弱。

為了解決兩層結(jié)構(gòu)遇到的問題,人們提出了三層結(jié)構(gòu)的系統(tǒng)設(shè)計(jì)概念。它把應(yīng)用邏輯劃分為三個(gè)部分;第一層是用戶界面,提供用戶與系統(tǒng)的友好交互;第二層是應(yīng)用服務(wù)器,專司業(yè)務(wù)邏輯的實(shí)現(xiàn);第三層是數(shù)據(jù)服務(wù)器,負(fù)責(zé)數(shù)據(jù)信息的存儲(chǔ)、訪問及其優(yōu)化。其主要目的是產(chǎn)生一套切實(shí)可行的解決方案,把客戶/服務(wù)器結(jié)構(gòu)下的應(yīng)用可靠地推廣到企業(yè)級(jí)的關(guān)鍵任務(wù)環(huán)境中,并利用這一技術(shù)所帶來(lái)的高效率、多功能與靈活性,增強(qiáng)企業(yè)在市場(chǎng)上的競(jìng)爭(zhēng)能力。而中間件正是構(gòu)造這種三層結(jié)構(gòu)的基礎(chǔ)。

所謂中間件就是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件位于客戶機(jī)/服務(wù)器的操作系統(tǒng)之上,管理計(jì)算資源和網(wǎng)絡(luò)通信。我們可以將中間件理解成是處于應(yīng)用軟件和系統(tǒng)軟件之間的一類軟件,或者是獨(dú)立于硬件或數(shù)據(jù)庫(kù)廠商(處于其產(chǎn)品的中間,實(shí)現(xiàn)其互連)的一類軟件,或者是客戶方與服務(wù)器方之間的連接件,或者是需要進(jìn)行二次開發(fā)的中間產(chǎn)品。其特點(diǎn)是能夠滿足大量應(yīng)用的需要,可以運(yùn)行于多種硬件和OS平臺(tái),支持分布計(jì)算,提供跨網(wǎng)絡(luò)、硬件和OS平臺(tái)的透明性。

中間件軟件管理著客戶端程序和數(shù)據(jù)庫(kù)或者早期應(yīng)用軟件之間的通訊。中間件在分布式的客戶和服務(wù)之間扮演著承上啟下的角色,如事務(wù)管理、負(fù)荷平衡以及基于Web的計(jì)算等。利用這些技術(shù)有助于減輕應(yīng)用軟件開發(fā)者的負(fù)擔(dān),使他們?cè)诶矛F(xiàn)有的硬件設(shè)備、操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)管理系統(tǒng)以及對(duì)象模型創(chuàng)建分布式應(yīng)用軟件時(shí)更加得心應(yīng)手。

由于中間件產(chǎn)品在很大程度上簡(jiǎn)化了一個(gè)由不同硬件構(gòu)成的分布式處理環(huán)境的復(fù)雜性,所以它正在日益引起用戶的注意。面對(duì)廣闊的市場(chǎng),各個(gè)軟件廠商紛紛推出自己的產(chǎn)品,群雄逐鹿的市場(chǎng)競(jìng)爭(zhēng)局面逐漸形成。

早在1969年IBM就推出了專門用于事務(wù)處理的平臺(tái)軟件中間件技術(shù)作為軟件行業(yè)新崛起的一個(gè)嶄新的分支,正在全球范圍內(nèi)迅猛發(fā)展。

IDC的研究報(bào)告表明,1997年全球中間件市場(chǎng)的綜合增長(zhǎng)率為28%,銷售額達(dá)到了17.16億美元。到2002年,全球中間件產(chǎn)品市場(chǎng)的營(yíng)業(yè)額將超過(guò)70億美元。從市場(chǎng)情況看,到2000年,面向消息的中間件產(chǎn)品有望取代用于數(shù)據(jù)訪問的中間件產(chǎn)品,而成為該市場(chǎng)最大的一部分,其次是分布式交易處理中間件產(chǎn)品,依舊牢牢地占據(jù)著主流的地位,IDC預(yù)測(cè)基于桌面訪問的中間件產(chǎn)品的市場(chǎng)增長(zhǎng)將在1999年達(dá)到最高峰-CICS,并將其很快推廣到了許多操作系統(tǒng)平臺(tái),其服務(wù)器版本可運(yùn)行在OS/390、MVS/ESA、VSE/ESA、OS/400、OS/2、Windows NT、Windows 95、Apple Mac、AlX、Solaris、HP-UX和Digital Unix上。

CICS經(jīng)過(guò)了近30年的發(fā)展歷史,其穩(wěn)定性和可靠性早已千錘百煉,而且CICS幾乎每年根據(jù)客戶的需求變化和新技術(shù)的出現(xiàn)均有重大發(fā)展,例如CICS在1978年就支持了分布式聯(lián)機(jī)事務(wù)處理,CICS在近年來(lái)發(fā)展了對(duì)MQ Series、Lotus Notes、Internet和Java的支持。

CICS已經(jīng)在金融、財(cái)稅、運(yùn)輸、商業(yè)、服務(wù)、電力、電話等行業(yè)中得到廣泛應(yīng)用和推廣,統(tǒng)計(jì)表明,在《幸?!冯s志(Fortune)中排列世界前500家的公司,約有97%采用CICS作為其業(yè)務(wù)運(yùn)行系統(tǒng)的平臺(tái)。憑借多年的開發(fā)經(jīng)驗(yàn)和對(duì)市場(chǎng)敏銳的洞察力,IBM公司在90年代及時(shí)調(diào)整其產(chǎn)品策略,將中間件產(chǎn)品作為其今后開發(fā)的重點(diǎn)之重點(diǎn),并推出了面向消息的中間件產(chǎn)品—MQ Series,它能夠保證數(shù)據(jù)穩(wěn)定可靠傳輸而且無(wú)丟失或重發(fā),可謂是工B岡“看家本領(lǐng)”之一。MQSeries是商業(yè)通訊中間件。它由一個(gè)信息傳輸系統(tǒng)和一個(gè)應(yīng)用程序接口組成,其資源是信息和隊(duì)列(Messogjng and Queueing)。MQ應(yīng)用程序可以通過(guò)使用一個(gè)簡(jiǎn)單而一致的應(yīng)用程序編程接口來(lái)相互通信跨越具有不同處理器、操作系統(tǒng)、子系統(tǒng)和通訊協(xié)議的網(wǎng)絡(luò)。它的功能是控制和管理一個(gè)集成的商業(yè)應(yīng)用,使得組成這個(gè)商業(yè)應(yīng)用的多個(gè)分支程序(模塊)之間通過(guò)傳遞信息完成整個(gè)工作流程2。

特點(diǎn)中間件有幾個(gè)非常重要的特征是必須具備的3:

應(yīng)用支撐中間件的最終目的是解決上層應(yīng)用系統(tǒng)的問題,而且也是軟件技術(shù)發(fā)展到今天對(duì)應(yīng)用軟件提供最完善徹底的解決方案。現(xiàn)代面向服務(wù)的中間件在4個(gè)方面形成了很高地應(yīng)用支撐能力,分別為軟件的結(jié)構(gòu)、模型、開發(fā)方法以及互操作,而要最終解決軟件的靈活應(yīng)變問題、效率問題、質(zhì)量問題、互操作問題這四大問題,需要在軟件技術(shù)的內(nèi)在結(jié)構(gòu)、架構(gòu)層面進(jìn)行思考。

耦合關(guān)系中間件基于SOA架構(gòu),在松耦和解耦過(guò)程中演變成了境界。而傳統(tǒng)軟件將軟件之中核心三部分?jǐn)?shù)據(jù)轉(zhuǎn)換、網(wǎng)絡(luò)連接和業(yè)務(wù)邏輯所有的都耦合在一個(gè)整體,產(chǎn)生為鐵板一塊的軟件,然后動(dòng)一點(diǎn)而動(dòng)全身,這樣的軟件就很難適應(yīng)市場(chǎng)的需求。而分布式對(duì)象技術(shù)可以分離連接邏輯,消息中間件異步處理連接邏輯,形成了很大的靈活性。中間件分離分布式對(duì)象與消息代理的數(shù)據(jù)轉(zhuǎn)換。SOA架構(gòu)以服務(wù)的封裝,解耦實(shí)現(xiàn)了業(yè)務(wù)邏輯、數(shù)據(jù)轉(zhuǎn)換與網(wǎng)絡(luò)連接等。

互操作性傳統(tǒng)中間件在軟件的互操作方面,通過(guò)標(biāo)準(zhǔn)化的API完成了同類系統(tǒng)之間的調(diào)用互操作,但是連接互操作離不開原有的特定的訪問協(xié)議,比如CORBA用于的IIOP,JAVA用于的RMI等。而SOA以支持Internet、標(biāo)準(zhǔn)化及操作系統(tǒng)無(wú)關(guān)的SOAP協(xié)議完成了連接互操作。并且服務(wù)的封裝一般使用XML協(xié)議,它有自定義及自解析的特性,因此基于SOA的中間件能夠完成語(yǔ)義互操作。

軟件復(fù)用軟件復(fù)用也稱為軟件的重用,是指在一定范圍內(nèi)不修改或者略有修改都屬于重復(fù)使用。其實(shí)說(shuō)白了其意思就是不斷提升抽象級(jí)別,然后擴(kuò)展復(fù)用的范圍。最早使用的復(fù)用技術(shù)一般是子程序,自從發(fā)明子程序之后,人們就可以在不同系統(tǒng)之間進(jìn)行軟件復(fù)用。但子程序只是最原始的復(fù)用,因?yàn)檫@種復(fù)用范圍只是在一個(gè)可執(zhí)行程序內(nèi)中的復(fù)用,靜態(tài)開發(fā)期的復(fù)用,一旦子程序被修改,那么就需要重新對(duì)所有調(diào)用這個(gè)子程序的程序進(jìn)行編譯、測(cè)試以及發(fā)布。

平臺(tái)化我們所說(shuō)的平臺(tái)是指能夠獨(dú)立運(yùn)行并且自主存在的,能支撐上層系統(tǒng)和應(yīng)用提供運(yùn)行所依賴的環(huán)境。顯然,不是所有的系統(tǒng)或者應(yīng)用都可以稱之為平臺(tái)的。中間件是一個(gè)平臺(tái),因此中間件是必須獨(dú)立存在,它在操作的系統(tǒng)軟件,為上層的網(wǎng)絡(luò)應(yīng)用系統(tǒng)提供一個(gè)運(yùn)行支撐環(huán)境,同時(shí)圍繞標(biāo)準(zhǔn)的接口與API來(lái)隔離系統(tǒng),完成其獨(dú)立,也就是平臺(tái)性。總的來(lái)說(shuō),中間件在完整業(yè)務(wù)復(fù)用、靈活業(yè)務(wù)組織方面的發(fā)展趨勢(shì)集中體現(xiàn)在服務(wù)化,其核心技術(shù)是提升IT基礎(chǔ)設(shè)施的業(yè)務(wù)敏捷性。中間件因此將成為SOA的主要實(shí)現(xiàn)平臺(tái)。

分類中間件的作用簡(jiǎn)單來(lái)說(shuō)就是試圖通過(guò)屏蔽各種復(fù)雜的技術(shù)細(xì)節(jié)使技術(shù)問題簡(jiǎn)單化。具體地說(shuō),中間件屏蔽了底層操作系統(tǒng)的復(fù)雜性,使程序開發(fā)人員面對(duì)一個(gè)簡(jiǎn)單而統(tǒng)一的開發(fā)環(huán)境,減少程序設(shè)計(jì)的復(fù)雜性,將注意力集中在自己的業(yè)務(wù)上,不必再為程序在不同系統(tǒng)軟件上的移植而重復(fù)工作,從而大大減少了技術(shù)上的負(fù)擔(dān)。所以說(shuō)中間件帶給應(yīng)用系統(tǒng)的,不只是開發(fā)的簡(jiǎn)便、開發(fā)周期的縮短,同時(shí)也減少了系統(tǒng)的維護(hù)、運(yùn)行和管理的工作量,還減少了計(jì)算機(jī)總體費(fèi)用的投入。其次,中間件作為新層次的基礎(chǔ)軟件,其重要作用是將不同時(shí)期、在不同操作系統(tǒng)上開發(fā)的應(yīng)用軟件集成起來(lái),彼此像一個(gè)天衣無(wú)縫的整體協(xié)調(diào)工作,這是操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)本身做不了的。目前,針對(duì)不同的應(yīng)用涌現(xiàn)出各具特色的中間件產(chǎn)品。從不同的角度和層次對(duì)中間件有不同的分類。根據(jù)中間件在系統(tǒng)中所起的作用和采用的技術(shù)不同,可以把中間件大致劃分為以下幾種4:

數(shù)據(jù)訪問中間件(Data Access Middieware)在分布式系統(tǒng)中,重要的數(shù)據(jù)都集中存放在數(shù)據(jù)服務(wù)器中,它們可以是關(guān)系型、復(fù)合文檔型、具有各種存放格式的多媒體型,或者是經(jīng)過(guò)加密或壓縮存放的,數(shù)據(jù)訪問中間件是在這種系統(tǒng)中建立數(shù)據(jù)應(yīng)用資源互操作的模式,實(shí)現(xiàn)異構(gòu)環(huán)境下的數(shù)據(jù)庫(kù)聯(lián)接或文件系統(tǒng)聯(lián)接的中間件,從而為在網(wǎng)絡(luò)上虛擬緩沖存取、格式轉(zhuǎn)換、解壓等帶來(lái)方便。數(shù)據(jù)訪問中間件在所有的中間件中是應(yīng)用最廣泛、技術(shù)最成熟的一種。一個(gè)最典型的例子就是ODBC,ODBC是一種基于數(shù)據(jù)庫(kù)的中間件標(biāo)準(zhǔn),它允許應(yīng)用程序和本地或者異地的數(shù)據(jù)庫(kù)進(jìn)行通信,并提供了一系列的應(yīng)用程序接口API,當(dāng)然,在多數(shù)情況下這些API都是隱藏在開發(fā)工具中,不被程序員直接使用。不過(guò)在數(shù)據(jù)訪問中間件處理模型中,數(shù)據(jù)庫(kù)是信息存貯的核心單元,中間件完成通信的功能,這種方式雖然是靈活的,但是并不適合于一些要求高性能處理的場(chǎng)合,因?yàn)樗枰罅康臄?shù)據(jù)通信,而且當(dāng)網(wǎng)絡(luò)發(fā)生故障時(shí),系統(tǒng)將不能正常工作。

遠(yuǎn)程過(guò)程調(diào)用中間件(RPC)遠(yuǎn)程過(guò)程調(diào)用是另外一種形式的中間件,它在客戶/服務(wù)器計(jì)算方面,比數(shù)據(jù)庫(kù)中間件又邁進(jìn)了一步。通過(guò)這種遠(yuǎn)程過(guò)程調(diào)用機(jī)制,程序員編寫客戶方的應(yīng)用,需要時(shí)可以調(diào)用位于遠(yuǎn)端服務(wù)器上的過(guò)程。它的工作方式如下:當(dāng)一個(gè)應(yīng)用程序A需要與遠(yuǎn)程的另一個(gè)應(yīng)用程序B交換信息或要求B提供協(xié)助時(shí),A在本地產(chǎn)生一個(gè)請(qǐng)求,通過(guò)通訊鏈路通知B接收信息或提供相應(yīng)的服務(wù),B完成相關(guān)處理后將信息或結(jié)果返回給A。RPC的靈活特性使得它有比數(shù)據(jù)庫(kù)中間件更廣泛的應(yīng)用,它可以應(yīng)用在更復(fù)雜的客戶/服務(wù)器計(jì)算環(huán)境中。遠(yuǎn)程過(guò)程調(diào)用的靈活性還體現(xiàn)在它的跨平臺(tái)性方面,它不僅可以調(diào)用遠(yuǎn)端的子程序,而且這種調(diào)用是可以跨不同操作系統(tǒng)平臺(tái)的,而程序員在編程時(shí)并不需要考慮這些細(xì)節(jié)。RPC也有一些缺點(diǎn),主要是因?yàn)镽PC一般用于應(yīng)用程序之間的通信,而且采用的是同步通信方式,因此對(duì)于比較小型的簡(jiǎn)單應(yīng)用還是比較適合的,因?yàn)檫@些應(yīng)用通常不要求異步通信方式。但是對(duì)于一些大型的應(yīng)用,這種方式就不是很適合了,因?yàn)榇藭r(shí)程序員需要考慮網(wǎng)絡(luò)或者系統(tǒng)故障,處理并發(fā)操作、緩沖、流量控制以及進(jìn)程同步等一系列復(fù)雜問題。

面向消息中間件(MOM)消息中間件能在不同平臺(tái)之間通信,實(shí)現(xiàn)分布式系統(tǒng)中可靠的、高效的、實(shí)時(shí)的跨平臺(tái)數(shù)據(jù)傳輸,它常被用來(lái)屏蔽掉各種平臺(tái)及協(xié)議之間的特性,實(shí)現(xiàn)應(yīng)用程序之間的協(xié)同;其優(yōu)點(diǎn)在于能夠在客戶和服務(wù)器之間提供同步和異步的連接,并且在任何時(shí)刻都可以將消息進(jìn)行傳送或者存儲(chǔ)轉(zhuǎn)發(fā),這也是它比遠(yuǎn)程過(guò)程調(diào)用更進(jìn)一步的原因。另外消息中間件不會(huì)占用大量的網(wǎng)絡(luò)帶寬,可以跟蹤事務(wù),并且通過(guò)將事務(wù)存儲(chǔ)到磁盤上實(shí)現(xiàn)網(wǎng)絡(luò)故障時(shí)系統(tǒng)的恢復(fù)。當(dāng)然和遠(yuǎn)程過(guò)程調(diào)用相比,消息中間件不支持程序控制的傳遞。消息中間件適用于需要在多個(gè)進(jìn)程之間進(jìn)行可靠的數(shù)據(jù)傳送的分布式環(huán)境。它是中間件中唯一不可缺少的,也是銷售額最大的中間件產(chǎn)品,目前在Windows2000操作系統(tǒng)中已包含了其部分功能。

面向?qū)ο蟮闹虚g件面向?qū)ο蟮闹虚g件(Object Oriented Middieware)。當(dāng)前開發(fā)大型應(yīng)用軟件通常采用基于組件技術(shù),在分布系統(tǒng)中,還需要集成各節(jié)點(diǎn)上的不同系統(tǒng)平臺(tái)上的組件或新老版本的組件;組件的含義通常指的是一組對(duì)象的集成,其種類有數(shù)百萬(wàn)種,但這些組件面臨著缺乏標(biāo)準(zhǔn)而不能相互操作,各廠家的組件只能在各自的平臺(tái)上運(yùn)行。為此,連接這些組件環(huán)境的面向?qū)ο蟮闹虚g件便應(yīng)運(yùn)而生。面向?qū)ο蟮闹虚g件是對(duì)象技術(shù)和分布式計(jì)算發(fā)展的產(chǎn)物,它提供一種通訊機(jī)制,透明地在異構(gòu)的分布計(jì)算環(huán)境中傳遞對(duì)象請(qǐng)求,而這些對(duì)象可以位于本地或者遠(yuǎn)程機(jī)器。在這些面向?qū)ο蟮闹虚g件中,功能最強(qiáng)的是CORBA,可以跨任意平臺(tái),但是太龐大;JavaBeans較靈活簡(jiǎn)單,很適合于作瀏覽器,但運(yùn)行效率差;DCOM模型主要適合Windows平臺(tái),已廣泛使用。但是DCOM和CORBA這兩種標(biāo)準(zhǔn)相互競(jìng)爭(zhēng),而且兩者之間有很大的區(qū)別,這在一定程度上阻礙了面向?qū)ο笾虚g件的標(biāo)準(zhǔn)化進(jìn)程。當(dāng)前國(guó)內(nèi)新建系統(tǒng)實(shí)際上主要是UNIX(包括LINUX)和Windows,因此針對(duì)這兩個(gè)平臺(tái)建立標(biāo)準(zhǔn)的面向?qū)ο笾虚g件是很有必要的。

事務(wù)處理中間件(TPM)事務(wù)處理中間件是在分布、異構(gòu)環(huán)境下提供保證交易完整性和數(shù)據(jù)完整性的一種環(huán)境平臺(tái);它是針對(duì)復(fù)雜環(huán)境下分布式應(yīng)用的速度和可靠性要求而實(shí)現(xiàn)的。它給程序員提供了一個(gè)事務(wù)處理的API,程序員可以使用這個(gè)程序接口編寫高速而且可靠的分布式應(yīng)用程序——基于事務(wù)處理的應(yīng)用程序。事務(wù)處理中間件向用戶提供一系列的服務(wù),如應(yīng)用管理、管理控制、已經(jīng)應(yīng)用于程序間的消息傳遞等。常見的功能包括全局事務(wù)協(xié)調(diào)、事務(wù)的分布式兩段提交(準(zhǔn)備階段和完成階段)、資源管理器支持、故障恢復(fù)、高可靠性、網(wǎng)絡(luò)負(fù)載平衡等等。

網(wǎng)絡(luò)中間件它包括網(wǎng)管、接入、網(wǎng)絡(luò)測(cè)試、虛擬社區(qū)、虛擬緩沖等,也是當(dāng)前研究的熱點(diǎn)。

終端仿真/屏幕轉(zhuǎn)換中間件它的作用在于實(shí)現(xiàn)客戶機(jī)圖形用戶接口與已有的字符接口方式的服務(wù)器應(yīng)用程序之間的互操作。

發(fā)展趨勢(shì)軟件構(gòu)件化(Software Component)技術(shù)是在大工業(yè)生產(chǎn)啟發(fā)下應(yīng)運(yùn)而生的,是軟件技術(shù)跨世紀(jì)的一個(gè)發(fā)展趨勢(shì),其目的是徹底改變軟件生產(chǎn)方式,從根本上提高軟件生產(chǎn)的效率和質(zhì)量,提高開發(fā)大型軟件系統(tǒng)尤其是商用系統(tǒng)的成功率。有了軟件構(gòu)件之后,應(yīng)用開發(fā)人員就可以利用現(xiàn)成的軟件構(gòu)件裝配成適用于不同領(lǐng)域、功能各異的應(yīng)用軟件。復(fù)用軟件一直是整個(gè)世界軟件業(yè)所追求的夢(mèng)想,軟件構(gòu)件化為實(shí)現(xiàn)這一夢(mèng)想指出了一條切實(shí)可行的道路,而中間件正是構(gòu)件化軟件的一種形式。中間件抽象了典型的應(yīng)用模式,應(yīng)用軟件制造者可以基于標(biāo)準(zhǔn)的形式進(jìn)行開發(fā),使軟件構(gòu)件化成為可能,加速了軟件復(fù)用的進(jìn)程。因此,中間件是符合軟件發(fā)展的內(nèi)在規(guī)律的。

中間件在十幾年不斷發(fā)展的歷史中,為大型企業(yè)應(yīng)用的建設(shè)起到了很大的作用。但是沉淀下來(lái)的優(yōu)秀中間件企業(yè)卻不多。中間件作為一個(gè)產(chǎn)品,一方面受到軟件技術(shù)從C、C++、Java、J2EE到.net的牽制,又有應(yīng)用軟件走出部門、走向全企業(yè)和全互聯(lián)網(wǎng)的引領(lǐng),也從CORBA,COM+,消息中間件發(fā)展到了J2EE平臺(tái)和SOA。在這么多的技術(shù)遷徙過(guò)程中,要讓一個(gè)公司能夠持續(xù)發(fā)展也真是不容易。所以有了Inprise、Iona的不成功,也才有IBM、Microsoft的不倒翁地位。也難怪中國(guó)的中間件公司,只要還存在就是巨大的成功了。

傳統(tǒng)的中間件技術(shù)的發(fā)展往往源于技術(shù)能力。而技術(shù)的不斷變化又讓這些公司難以長(zhǎng)期立足。但是如果我們站在一個(gè)更高的層次,跨越純技術(shù)性的定位,也許我們會(huì)看到一個(gè)更平穩(wěn)的中間件市場(chǎng)的空間,這正是新一代的中間件軟件廠商的立足之地。從應(yīng)用軟件的角度來(lái)看,我們需要一個(gè)穩(wěn)定的、技術(shù)依賴性較弱的方法來(lái)描述企業(yè)應(yīng)用的不斷升級(jí)的業(yè)務(wù)邏輯結(jié)構(gòu)。業(yè)務(wù)邏輯會(huì)按照企業(yè)的發(fā)展而發(fā)展,卻不應(yīng)該太多的因?yàn)榧夹g(shù)的變化而重新編寫。新一代的面向構(gòu)件的中間件就是這樣一個(gè)在基礎(chǔ)中間件上的一個(gè)新的樓層5。

中間件的發(fā)展日臻完善,它為計(jì)算機(jī)軟件的發(fā)展注入了新鮮的活力,是軟件技術(shù)發(fā)展的一種潮流。中間件的組件模式,簡(jiǎn)化了應(yīng)用程序的開發(fā)復(fù)雜性,提高了軟件的可重用性,促使軟件生產(chǎn)的產(chǎn)業(yè)化,使跨企業(yè)的分布式應(yīng)用得到了推廣。

據(jù)有關(guān)組織預(yù)測(cè),消息中間件是目前中間件技術(shù)的發(fā)展熱點(diǎn),在市場(chǎng)上占據(jù)了主導(dǎo)地位。消息中間件以其獨(dú)特的優(yōu)勢(shì)為各種分布式應(yīng)用的開發(fā)注入了強(qiáng)大的動(dòng)力,極大地推動(dòng)了應(yīng)用集成的發(fā)展。對(duì)象中間件技術(shù)也發(fā)展迅速,也是未來(lái)的主流,各大硬軟件公司,如:Sun,Microsoft,IBM,DEC等都在積極參與有關(guān)標(biāo)準(zhǔn)的制定和產(chǎn)品的開發(fā)工作。中間件的另一個(gè)發(fā)展方向是WebServices中間件,不同于目前的組件技術(shù),WebServices不是通過(guò)特定的對(duì)象模型協(xié)議訪問,而是通過(guò)通用的網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)格式來(lái)訪問,例如HTTP和XML。用戶僅僅通過(guò)創(chuàng)建并使用為WebServices接口定義的消息就可以使用任何語(yǔ)言在任何平臺(tái)上調(diào)用WebServices。目前WebServices中間件還處在發(fā)展初期,許多標(biāo)準(zhǔn)和規(guī)范還在制定和完善中。

隨著Web技術(shù)的飛速發(fā)展,中間件當(dāng)前所面臨的重大的挑戰(zhàn)就是要在互聯(lián)網(wǎng)這個(gè)復(fù)雜的分布式系統(tǒng)中構(gòu)建應(yīng)用程序??梢灶A(yù)見,未來(lái)的中間件必將和網(wǎng)絡(luò)技術(shù)緊密相關(guān)。國(guó)內(nèi)外都正在深入地研究這一技術(shù)6。