中間件介紹
?
中間件(middleware)是基礎軟件的一大類,屬于可復用軟件的范疇。顧名思義,中間件處于操作系統(tǒng)軟件與用戶的應用軟件的中間。中間件在操作系統(tǒng)、網(wǎng)絡和數(shù)據(jù)庫之上,應用軟件的下層,總的作用是為處于自己上層的應用軟件提供運行與開發(fā)的環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復雜的應用軟件。
?
在眾多關于中間件的定義中,比較普遍被接受的是IDC表述的:中間件是一種獨立的系統(tǒng)軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位于客戶機服務器的操作系統(tǒng)之上,管理計算資源和網(wǎng)絡通信。
IDC對中間件的定義表明,中間件是一類軟件,而非一種軟件;中間件不僅僅實現(xiàn)互連,還要實現(xiàn)應用之間的互操作;中間件是基于分布式處理的軟件,最突出的特點是其網(wǎng)絡通信功能。
?
中科院軟件所研究員仲萃豪形象地把中間件定義為:平臺+通信。這個定義限定了只有用于分布式系統(tǒng)中的此類軟件才能被稱為中間件,同時此定義還可以把中間件與支撐軟件和實用軟件區(qū)分開來。目前,中間件發(fā)展很快,已經(jīng)與操作系統(tǒng)、數(shù)據(jù)庫并列為三大基礎軟件。中間件主要分為以下幾類:
?
1.通信處理(消息)中間件
?
此類中間件能在不同平臺之間通信,實現(xiàn)分布式系統(tǒng)中可靠的、高效的、實時的跨平臺數(shù)據(jù)傳輸(如Tong LINK、BEAe Link、IBM的MQ Series等)。這是中間件中唯一不可缺少的,是銷售額最大的中間件產(chǎn)品。
?
2.交易中間件
?
在分布式事務處理系統(tǒng)中要處理大量事務,常常在系統(tǒng)中要同時做上萬筆事務。例如在北京市就要設置各種運載汽車,完成日常的運載,同時要隨時監(jiān)視汽車運行,出現(xiàn)故障時,要有排除措施,發(fā)生堵塞時要進行調(diào)度。在聯(lián)機事務處理系統(tǒng)(OLTP)中,每筆事務常常要多臺服務器上的程序順序地協(xié)調(diào)完成,一旦中間發(fā)生某種故障時,不但要完成恢復工作,而且要自動切換系統(tǒng),達到系統(tǒng)永不停機,實現(xiàn)高可靠性運行;同時要使大量事務在多臺應用服務器能實時并發(fā)運行,并進行負載平衡地調(diào)度,實現(xiàn)昂貴的可靠性機和大型計算機系統(tǒng)同等的功能,為了實現(xiàn)這個目標,要求系統(tǒng)具有監(jiān)視和調(diào)度整個系統(tǒng)的功能。BEA的Tuxedo由此而著名,它成為增長率最高的廠商。一個事務處理平臺,根據(jù)X/OPEN的參數(shù)模型規(guī)定,應由事務處理中間件、通信處理中間件以及數(shù)據(jù)存取管理中間件三部分組成。東方通科技公司的Tong LINK和TongEASY實現(xiàn)了這個參考模型規(guī)定。
?
3.數(shù)據(jù)存取管理中間件
?
在分布式系統(tǒng)中,重要的數(shù)據(jù)都集中存放在數(shù)據(jù)服務器中,它們可以是關系型的、復合文檔型、具有各種存放格式的多媒體型,或者是經(jīng)過加密或壓縮存放的,該中間件將為在網(wǎng)絡上虛擬緩沖存取、格式轉(zhuǎn)換、解壓等帶來方便。
?
?
中間件簡史
?
最早具有中間件技術思想及功能的軟件是IBM的CICS,但由于CICS不是分布式環(huán)境的產(chǎn)物,因此人們一般把Tuxedo作為第一個嚴格意義上的中間件產(chǎn)品。Tuxedo是1984年在當時屬于AT&&T的貝爾實驗室開發(fā)完成的,但由于分布式處理當時并沒有在商業(yè)應用上獲得像今天一樣的成功,Tuxedo在很長一段時期里只是實驗室產(chǎn)品,后來被Novell收購,在經(jīng)過Novell并不成功的商業(yè)推廣之后,1995年被現(xiàn)在的BEA公司收購。盡管中間件的概念很早就已經(jīng)產(chǎn)生,但中間件技術的廣泛運用卻是在最近10年之中。BEA公司1995年成立后收購Tuxedo才成為一個真正的中間件廠商,IBM的中間件MQSeries也是90年代的產(chǎn)品,其它許多中間件產(chǎn)品也都是最近幾年才成熟起來。
?
1998年IDC公司對于中間件有一個定義,并根據(jù)用途將其劃分為6個類別。如今所保留下來的只有消息中間件和交易中間件,其他的已經(jīng)被逐步融合到其他產(chǎn)品中了,被包裹進去了,在市場上已經(jīng)沒有單獨的產(chǎn)品形態(tài)出現(xiàn)了。例如,當時有一個叫屏幕數(shù)據(jù)轉(zhuǎn)換的中間件,其主要是針對IBM大機終端而設計產(chǎn)品,用于將IBM大機終端的字符界面轉(zhuǎn)化為用戶所喜歡的圖形界面,類似的東西當時都稱為中間件。但隨著IBM大機環(huán)境越來越少,但是盛行一時的此類中間件如今已經(jīng)很少再被單獨提及。
?
2000年前后,互聯(lián)網(wǎng)盛行起來,隨之產(chǎn)生了一個新的東西,就是應用服務器。實際上,交易中間件也屬于是應用服務器,為了區(qū)分,人們傳統(tǒng)的交易中間件稱為分布交易中間件,因它主要應用在分布式環(huán)境下,而將新的應用服務器,稱為J2EE中間件,到目前為止,這都是市場上非常熱門的產(chǎn)品。(在J2EE中就是tomcat和weblogic等服務器軟件)
?
EAI概念出來之后,市場上又推出了一些新的軟件產(chǎn)品,,例如工作流、Portal等,但從分類上不知道怎么歸類,向上不能夠劃歸應用,往下又不能歸入操作系統(tǒng),于是就把它歸入了中間件,如此中間件的概念更加擴大了。目前,市場上對于中間件,各家的說法不一,客觀上也導致了理解上的復雜性。
?
如今,市場上又推出了很多新的概念,例如三層結(jié)構、構件、Web服務,其中風頭最勁的當屬SOA(面向服務的架構)。實際上,他們都不是一個產(chǎn)品,而是一種技術的實現(xiàn)方法,是開發(fā)一個軟件的一種方法論。我們知道,最早軟件開發(fā)方法就是編程、寫代碼的,其缺點在于無法復用,為此提出了構件化的軟件開發(fā)方法,通過把編程中一些常用功能進行封裝,并規(guī)范統(tǒng)一接口,供其它程序調(diào)用,例如我們開發(fā)一個新軟件,可能要用到構件1、構件2、構件3,那么,我們只要對其進行本地組裝,就可以得到我們想要的應用軟件。在互聯(lián)網(wǎng)得到普及重視之后,軟件開發(fā)方法在構件化基礎上又有新發(fā)展,核心思想是軟件并不需要囊括構件,所需要的僅僅是構件的運行結(jié)果,例如編寫一個通信傳輸軟件,就可以到網(wǎng)上尋找構件,并提出服務請求,得到結(jié)果后返回,而不需要下載構件并打包,這就是現(xiàn)在所說的SOA。想要現(xiàn)實SOA,就要規(guī)范構件接口,同時還要規(guī)范構件所提交的服務結(jié)果,如此,新的軟件開發(fā)的思想才能夠行的通。但SOA并不是一個產(chǎn)品,而是一種思想方法,而實現(xiàn)這種方法的基礎,如今看來只有中間件。
?
國內(nèi)在中間件領域的起步階段正是整個世界范圍內(nèi)中間件的初創(chuàng)時期。東方通科技早在1992年就開始中間件的研究與開發(fā),1993年推出第一個產(chǎn)品TongLINK/Q。而中科院軟件所、國防科技大學等研究機構也對中間件技術進行了同步研究。可以說,在中間件領域,國內(nèi)的起步時間并不比國外晚多少。
?
?
?
?