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