本文發(fā)布于2009年10月30日 1. 由來 因為工作的原因,,我從金蝶集團(tuán)調(diào)入金蝶中間件公司工作以來,經(jīng)常遇到一個問題就是中間件公司是個什么公司,,中間件是什么,?,金蝶不是做ERP的嗎,?怎么也做中間件,?。這是我以前在金蝶集團(tuán)時無法想象的問題,。因為金蝶,,金蝶ERP的品牌以及大眾對ERP的了解,是無需我解析什么是ERP,,什么是財務(wù)軟件一類的問題的,。 畢竟,中間件在實際的應(yīng)用過程中,,是對應(yīng)用軟件起到支撐作用,,最終用戶并不直接使用中間件,中間件不是大眾消費類軟件產(chǎn)品,。因此,,除非是一個行業(yè)專業(yè)人士,一般不大可能與中間件打交道,,不太了解什么是中間件,。 因此,在系統(tǒng)軟件之中,,操作系統(tǒng)、數(shù)據(jù)庫,、中間件的三駕馬車,,中間件是最神秘的。因為,,好歹大家通過Windows基本上會了解操作系統(tǒng)是個什么東西,,盡管不會很全面,,很專業(yè),畢竟是有感覺的,。數(shù)據(jù)庫,,雖然沒有直接見過,但基本上明白數(shù)據(jù)是要一個倉庫來儲存的,,因此,,也大致知道數(shù)據(jù)庫管理系統(tǒng)是干什么的。 長期以來,,中間件是一個專業(yè)化非常強的細(xì)分產(chǎn)業(yè),。因為中間件的技術(shù)門檻比較高,玩家也不多,,無論是國外還是國內(nèi)都是如此,。因此,行業(yè)內(nèi)對什么是中間件并不特別在意,。而公司名稱直接叫中間件的就更少了,,金蝶中間件應(yīng)該是國內(nèi)外直接在公司名稱中冠以中間件字眼最早,也是很少的公司之一,。另一方面,,因為中間件軟件還處于發(fā)展階段,還沒有完全成熟,,因此對中間件的定義也就沒有深究,,或者權(quán)威的說法。 但現(xiàn)在情況有點變化,,其中一個原因在于2008年底,,國家啟動了核高基重大科技專項,在基礎(chǔ)軟件領(lǐng)域明確提出重點支持操作系統(tǒng),、數(shù)據(jù)庫,、中間件、文字處理等基礎(chǔ)軟件產(chǎn)業(yè)的自主創(chuàng)新,,幾乎一夜之間大大小小的軟件公司都宣稱是做中間件的了,,只要不是做最終應(yīng)用軟件的,他們的產(chǎn)品都叫中間件了,,一時間,,中間件變得蓬勃發(fā)展起來了。 作為中間件行業(yè)內(nèi)的專業(yè)化和領(lǐng)先企業(yè)來說,,大家都重視起中間件來了,,這是好事,說明社會上重視了。對行業(yè)的發(fā)展和繁榮固然重要,,但這也隱含了重大的風(fēng)險,。中間件名字被濫用,無論是對用戶,,對這個產(chǎn)業(yè),,對政府和投資人來說,都會有負(fù)面的影響,。魚目混珠,,泥沙俱下的局面,對中間件產(chǎn)業(yè)的正常發(fā)展未必就是好事情了,,也可能對真正的中間件自主創(chuàng)新帶來許多困擾,,模糊了中間件的本質(zhì),可能會弱化中間件核心技術(shù)的創(chuàng)新和發(fā)展,。 因此,,在這種情況下,無論是對行業(yè)內(nèi),,還是行業(yè)外,,突然什么是中間件的問題變成了一個大問題了。 本文試圖就中間件的來龍去脈,,外延內(nèi)涵和前世今生,,來一個全面的闡釋。一家之言,,權(quán)作業(yè)界參考,,希望帶動大家做一些深入的思考。 2. 中間件的起源 2.1 中間件發(fā)展的歷史 事情從1946年說起,,世界上第一臺電子計算機埃尼阿克誕生,,人類進(jìn)入信息時代。1955年,,約翰巴克斯發(fā)明了最早的程序語言Fortran,,現(xiàn)代意義上的軟件就誕生了。 1964年,,IBM發(fā)布OS/360操作系統(tǒng),,軟件與硬件分離,同時,,軟件成為一個獨立的產(chǎn)業(yè)正式登上產(chǎn)業(yè)界的舞臺,。中間件就是軟件產(chǎn)業(yè)不斷發(fā)展過程中自然產(chǎn)生的。 90年代,,文頓·瑟夫這位互聯(lián)網(wǎng)之父的發(fā)明成為改變IT業(yè)的重大革命性創(chuàng)新,?;ヂ?lián)網(wǎng)促使分布式系統(tǒng)和網(wǎng)絡(luò)應(yīng)用的誕生,中間件就是伴隨網(wǎng)絡(luò)技術(shù)的產(chǎn)生,、發(fā)展而興起的,可以說沒有網(wǎng)絡(luò)就沒有現(xiàn)代意義上的中間件,。因為,,網(wǎng)絡(luò)環(huán)境需要解決異構(gòu)分布網(wǎng)絡(luò)環(huán)境下軟件系統(tǒng)的通信、互操作,、協(xié)同,、事務(wù)、安全等共性問題,,提高異構(gòu)分布網(wǎng)絡(luò)環(huán)境下軟件系統(tǒng)的互操作性,、可移植性、適應(yīng)性,、可靠性等問題,。 1968年IBM發(fā)布CICS交易事務(wù)控制系統(tǒng),使得應(yīng)用軟件與系統(tǒng)服務(wù)分離,,這是中間件技術(shù)萌芽的標(biāo)志,,因為CICS還不是分布式環(huán)境的產(chǎn)物,因此我們往往還不將CICS作為正式的中間件系統(tǒng),。 一般來說,,我們將1990年誕生于ATT公司的BELL實驗室的Tuxedo系統(tǒng)(后來被NOVELL從ATT公司隨著UNIX系統(tǒng)一起買走,后來又賣給了BEA公司,,現(xiàn)在歸于ORACLE公司旗下了)作為中間件的誕生標(biāo)志,。Tuxedo解決了分布式交易事務(wù)控制問題,中間件開始成為網(wǎng)絡(luò)應(yīng)用的基礎(chǔ)設(shè)施,,中間件正式成型,,這是最早的交易中間件。 1994年IBM發(fā)布消息隊列服務(wù)MQ系列產(chǎn)品,,解決分布式系統(tǒng)異步,、可靠、傳輸?shù)耐ㄓ嵎?wù)問題,,消息中間件誕生,。 1995年,JAVA之父James Gosling發(fā)明JAVA語言,,JAVA提供了跨平臺的通用的網(wǎng)絡(luò)應(yīng)用服務(wù),,成為今天中間件的核心技術(shù)。JAVA是第一個天生的網(wǎng)絡(luò)應(yīng)用平臺,,特別是J2EE發(fā)布以來,,JAVA從一個編程語言,,演變?yōu)榫W(wǎng)絡(luò)應(yīng)用架構(gòu),成為應(yīng)用服務(wù)平臺的事實標(biāo)準(zhǔn),。應(yīng)用服務(wù)器中間件,,成為中間件技術(shù)的集大成者,也成為事實上的中間件的核心,。 2001年,,微軟發(fā)布.NET,中間件演變?yōu)?NET和JAVA兩大技術(shù)陣營,。但由于.NET還不是一個完全開放的技術(shù)體系,,只有一個玩家,因此,,雖然.NET也是一種中間件,,但由于IBM/ORACLE/SUN/SAP等巨頭都無一例外成了JAVA陣營的支持者,因此,,我們習(xí)慣上提到中間件時,,往往不包括.NET中間件體系。 以上談的是歷史,,但透過歷史事實背后,,為什么會出現(xiàn)中間件,這其中的本質(zhì)因素是什么,? 2.2 中間件發(fā)展的驅(qū)動力 中間件出現(xiàn)的驅(qū)動力主要來自軟件研發(fā)過程碰到的種種問題,。從軟件出現(xiàn)最早是用于科學(xué)計算,然后是計算機輔助設(shè)計,、輔助制造等等工業(yè)應(yīng)用,。在企業(yè)管理領(lǐng)域大規(guī)模應(yīng)用后,業(yè)務(wù)需求不斷的變化,、系統(tǒng)不斷增加,、流程更復(fù)雜、系統(tǒng)越來越不堪重負(fù),,出現(xiàn)了需求交付方面的重大挑戰(zhàn),,以至于人們用軟件危機來描述軟件工業(yè)所面臨的困境。 總結(jié)起來,,軟件工業(yè)面臨的主要問題是四個方面:質(zhì)量問題,、效率問題、互操作問題,、靈活應(yīng)變問題,。這些問題今天依然困擾著這個行業(yè)。 造成這個局面的原因是異構(gòu)性和標(biāo)準(zhǔn)規(guī)范的滯后,。
異構(gòu)性表現(xiàn)在計算機的軟硬件之間的異構(gòu)性,,包括硬件(CPU和指令集,、硬件結(jié)構(gòu)、驅(qū)動程序等),,操作系統(tǒng)(不同操作系統(tǒng)的API和開發(fā)環(huán)境),、數(shù)據(jù)庫(不同的存儲和訪問格式)等等。長期以來,,高級語言依賴于特定的編譯器和操作系統(tǒng)API來編程,,而他們是不兼容的,因此軟件必須依賴于開發(fā)和運行的環(huán)境,。 造成異構(gòu)的原因源自市場競爭、技術(shù)升級以及保護(hù)投資等因素,。希望屏蔽異構(gòu)平臺的差異性問題是促成中間件發(fā)展的驅(qū)動力之一,。
因為異構(gòu)性,產(chǎn)生的結(jié)果是軟件依賴于計算環(huán)境,,使得各種不同軟件之間在不同平臺之間不能移植,,或者移植非常困難。而且,,因為網(wǎng)絡(luò)協(xié)議和通信機制的不同,,這些系統(tǒng)之間還不能有效地相互集成。 造成互操作性不好的原因,,主要是標(biāo)準(zhǔn)的滯后,。解決軟件之間的互操作性問題也是促成中間件發(fā)展的驅(qū)動力之一。
軟件應(yīng)用領(lǐng)域越來越多,,相同領(lǐng)域的應(yīng)用系統(tǒng)之間許多基礎(chǔ)功能和結(jié)構(gòu)是有相似性的,,每次開發(fā)系統(tǒng)都從零開始絕對不是一種好的方法,也是對質(zhì)量和效率的很大的傷害,。 盡可能多地凝練共性并復(fù)用以提高軟件開發(fā)效率和質(zhì)量,,通過中間件通過提供簡單、一致,、集成的開發(fā)和運行環(huán)境,,簡化分布式系統(tǒng)的設(shè)計、編程和管理,,這也是中間件發(fā)展的重要驅(qū)動力,。 在長期的探索過程中,解決軟件的四個問題的辦法總結(jié)起來兩個方面:工程方法,、平臺與技術(shù),。 工程方法就是用工業(yè)工程、系統(tǒng)工程的理論,、方法和體系來解決軟件研發(fā)過程中的管理問題,,包括團(tuán)隊管理,、項目管理、質(zhì)量控制等等,,這就是軟件工程,。除了軟件工程方法之外,我們發(fā)明了更多的架構(gòu)規(guī)劃,、設(shè)計和實施的方法,,不斷累積領(lǐng)域的知識與經(jīng)驗等等。 更好的技術(shù)手段,,包括更好的程序設(shè)計語言,、更好的平臺和軟件開發(fā)技術(shù),如面向?qū)ο?、組件開發(fā),、面向服務(wù)等等。而這方面,,在技術(shù)上逐漸發(fā)展的成果大部分都凝聚在今天的中間件平臺之中,。 而這些更好的技術(shù)手段,從本質(zhì)上是通過復(fù)用,、松耦合,、互操作(標(biāo)準(zhǔn))等機制來提高軟件質(zhì)量、加快軟件研發(fā)效率,、使研發(fā)出來的產(chǎn)品能夠相互集成并靈活適應(yīng)變化,。 3. 中間件的概念 講了這么多,,究竟什么是中間件,,也就是中間件的定義是什么? 針對這個問題,,應(yīng)該說還沒有一個標(biāo)準(zhǔn)的定義,,或者說還沒有完全取得學(xué)術(shù)界和產(chǎn)業(yè)界的共識。 顧名思義,,中間件就是處于中間的軟件,。但這種不是從功能,或者特性來定義的概念,,而是用位置來定義的名字,,就容易被不同的人從不同角度賦予其不同的含義。 IDC曾經(jīng)給中間件下的定義是中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序,,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,,中間件位于客戶機服務(wù)器的操作系統(tǒng)之上,管理計算資源和網(wǎng)絡(luò)通信,。 我國學(xué)術(shù)界一般認(rèn)可的定義是中間件是指網(wǎng)絡(luò)環(huán)境下處于操作系統(tǒng),、數(shù)據(jù)庫等系統(tǒng)軟件和應(yīng)用軟件之間的一種起連接作用的分布式軟件,,主要解決異構(gòu)網(wǎng)絡(luò)環(huán)境下分布式應(yīng)用軟件的互連與互操作問題,提供標(biāo)準(zhǔn)接口,、協(xié)議,,屏蔽實現(xiàn)細(xì)節(jié),提高應(yīng)用系統(tǒng)易移植性(北京大學(xué)梅宏),。 中科院軟件所研究員仲萃豪形象地把中間件定義為平臺+通信,。這個定義限定了只有用于分布式系統(tǒng)中的此類軟件才能被稱為中間件,同時此定義還可以把中間件與支撐軟件和實用軟件區(qū)分開來,。 中間件處于操作系統(tǒng)軟件與用戶的應(yīng)用軟件的中間,。中間件在操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫之上,,應(yīng)用軟件的下層,,總的作用是為處于自己上層的應(yīng)用軟件提供運行與開發(fā)的環(huán)境,幫助用戶靈活,、高效地開發(fā)和集成復(fù)雜的應(yīng)用軟件。形象地說就是上下之間的中間,。 此外,,中間件主要為網(wǎng)絡(luò)分布式計算環(huán)境提供通信服務(wù)、交換服務(wù),、語義互操作服務(wù)等系統(tǒng)之間的協(xié)同集成服務(wù),,解決系統(tǒng)之間的互連互通問題。形象地說就是所謂左右之間的中間,。 要深入理解什么是中間件,,形式化的定義固然重要,我們還得從概念本身去深入理解其核心特征才是最重要的,。要理解一個概念,,從內(nèi)涵和外延兩個方面去描述是哲學(xué)上非常重要的一套方法體系。 3.1 中間件的特征(內(nèi)涵) 總結(jié)分析,,中間件有幾個非常重要的特征是必須具備的:
所謂平臺就是能夠獨立運行并自主存在,,為其所支撐的上層系統(tǒng)和應(yīng)用提供運行所依賴的環(huán)境。顯然,,不是所有的系統(tǒng)或者應(yīng)用都可以稱之為平臺的,。中間件是一個平臺,因此中間件是必須獨立存在,,是運行時刻的系統(tǒng)軟件,,它為上層的網(wǎng)絡(luò)應(yīng)用系統(tǒng)提供一個運行環(huán)境,并通過標(biāo)準(zhǔn)的接口和API來隔離其支撐的系統(tǒng),,實現(xiàn)其獨立性,,也就是平臺性,。 因此,目前許多的開發(fā)語言,、組件庫和各種報表設(shè)計之類的軟件,,很難滿足平臺性,將這類軟件叫中間件,,是很不合適的,。例如,JAVA是一種語言,,這種語言的開發(fā)工具和開發(fā)框架,,如Eclipse、JBuilder,、Struts,,Hibernate等等就不能稱為中間件,充其量叫中間件開發(fā)工具,,而不能叫中間件本身,,就如同各種建筑工程設(shè)備和機械,如吊臂,、攪拌機等不能叫建筑,,而只能成為建筑工具一樣。而J2EE應(yīng)用服務(wù)器提供JAVA應(yīng)用的運行環(huán)境,,就是經(jīng)典的中間件,。
中間件的最終目的是解決上層應(yīng)用系統(tǒng)的問題,而且也是軟件技術(shù)發(fā)展到今天對應(yīng)用軟件提供最完善徹底的解決方案,。 高級程序設(shè)計語言的發(fā)明,,使得軟件開發(fā)變成一個獨立的科學(xué)和技術(shù)體系,而操作系統(tǒng)平臺的出現(xiàn),,使得應(yīng)用軟件通過標(biāo)準(zhǔn)的API接口,,實現(xiàn)了軟件與硬件的分離。 現(xiàn)代面向服務(wù)的中間件在軟件的模型,、結(jié)構(gòu),、互操作以及開發(fā)方法等四個方面提供了更強的應(yīng)用支撐能力: 模型:構(gòu)件模型彈性粒度化,即通過抽象層度更高的構(gòu)件模型,,實現(xiàn)具備更高結(jié)構(gòu)獨立性,、內(nèi)容自包含性和業(yè)務(wù)完整性的可復(fù)用構(gòu)件,即服務(wù),。并且在細(xì)粒度服務(wù)基礎(chǔ)上,,提供了更粗粒度的服務(wù)封裝方式,即業(yè)務(wù)層面的封裝,形成業(yè)務(wù)組件,,就可以實現(xiàn)從組件模型到業(yè)務(wù)模型的全生命周期企業(yè)建模的能力,。 結(jié)構(gòu):結(jié)構(gòu)松散化,即,,將完整分離服務(wù)描述和服務(wù)功能實現(xiàn)以及服務(wù)的使用者和提供者,,從而避免分布式應(yīng)用系統(tǒng)構(gòu)建和集成時常見的技術(shù)、組織,、時間等不良約束,。 互操作:交互過程標(biāo)準(zhǔn)化,即,,將與互操作相關(guān)的內(nèi)容進(jìn)行標(biāo)準(zhǔn)化定義,,如服務(wù)封裝、描述,、發(fā)布,、發(fā)現(xiàn)、調(diào)用等契約,,通信協(xié)議以及數(shù)據(jù)交換格式等等,。最終實現(xiàn)訪問互操作、連接互操作和語義互操作,。 開發(fā)集成方法:應(yīng)用系統(tǒng)的構(gòu)建方式由代碼編寫轉(zhuǎn)為主要通過服務(wù)間的快捷組合及編排,,完成更為復(fù)雜的業(yè)務(wù)邏輯的按需提供和改善,從而大大簡化和加速應(yīng)用系統(tǒng)的搭建及重構(gòu)過程,。 而要最終解決軟件的質(zhì)量問題、效率問題,、互操作問題,、靈活應(yīng)變問題這四大問題,需要在軟件技術(shù)的內(nèi)在結(jié)構(gòu)(Structure),、架構(gòu)(Architecture)層面進(jìn)行思考,。 解決這些問題,技術(shù)的本質(zhì)是復(fù)用,、松耦合,、互操作(標(biāo)準(zhǔn))等軟件技術(shù)的內(nèi)在機制。這也是中間件技術(shù)和產(chǎn)品的本質(zhì)特征,。
軟件復(fù)用,,即軟件的重用,也叫再用,,是指同一事物不作修改或稍加改動就多次重復(fù)使用,。從軟件復(fù)用技術(shù)的發(fā)展來看,就是不斷提升抽象級別,擴大復(fù)用范圍,。最早的復(fù)用技術(shù)是子程序,,人們發(fā)明子程序,就可以在不同系統(tǒng)之間進(jìn)行復(fù)用了,。但是,,子程序是最原始的復(fù)用,因為這種復(fù)用范圍是一個可執(zhí)行程序內(nèi)復(fù)用,,靜態(tài)開發(fā)期復(fù)用,,如果子程序修改,意味著所有調(diào)用這個子程序的程序必須重新編譯,、測試和發(fā)布,。 復(fù)用對象復(fù)用范圍
為了解決這個問題,,發(fā)明了組件(或者叫控件),如MS操作系統(tǒng)下的DLL組件,。組件將復(fù)用提升了一個層次,,因為組件可以在一個系統(tǒng)內(nèi)復(fù)用(同一種操作系統(tǒng)),而且是動態(tài),、運行期復(fù)用,。這樣組件可以單獨發(fā)展,組件與組件調(diào)用者之間的耦合度降低,。 為解決分布式網(wǎng)絡(luò)計算之間的組件復(fù)用,,人們發(fā)明了企業(yè)對象組件,如(COM+, .NET, EJB等),,或者叫分布式組件,。通過遠(yuǎn)程對象代理,來實現(xiàn)企業(yè)網(wǎng)絡(luò)內(nèi)復(fù)用,,不同系統(tǒng)之間復(fù)用,。 傳統(tǒng)中間件的核心是組件對象的管理。但分布式組件也是嚴(yán)重依賴其受控環(huán)境,,由于構(gòu)件實現(xiàn)和運行支撐技術(shù)之間存在著較大的異構(gòu)性,,不同技術(shù)設(shè)計和實現(xiàn)的構(gòu)件之間無法直接組裝式復(fù)用。 而現(xiàn)代中間件的發(fā)展重要趨勢就是以服務(wù)為核心,,如WebService, SCA/SDO等,。通過服務(wù),或者服務(wù)組件來實現(xiàn)更高層次的復(fù)用、解耦和互操作,,即SOA架構(gòu)中間件,。 因為服務(wù)是通過標(biāo)準(zhǔn)封裝,服務(wù)組件之間的組裝,、編排和重組,,來實現(xiàn)服務(wù)的復(fù)用。而且這種復(fù)用,,可以在不同企業(yè)之間,,全球復(fù)用,達(dá)到復(fù)用的最高級別,,并且是動態(tài)可配置的復(fù)用,。
基于SOA架構(gòu)的中間件,在松耦合解耦過程也發(fā)展到了最后的境界,。傳統(tǒng)軟件將軟件之中核心三部分——網(wǎng)絡(luò)連接,、數(shù)據(jù)轉(zhuǎn)換、業(yè)務(wù)邏輯全部耦合在一個整體之中,,形成鐵板一塊的軟件,,牽一發(fā)而動全身,軟件就難以適應(yīng)變化,。分布式對象技術(shù)將“連接邏輯”進(jìn)行分離,,消息中間件將“連接邏輯”進(jìn)行異步處理,增加了更大的靈活性,。消息代理和一些分布式對象中間件將數(shù)據(jù)轉(zhuǎn)換也進(jìn)行了分離,。而SOA架構(gòu),通過服務(wù)的封裝,,實現(xiàn)了業(yè)務(wù)邏輯與網(wǎng)絡(luò)連接,、數(shù)據(jù)轉(zhuǎn)換等進(jìn)行完全的解耦。 軟件技術(shù)的不斷解耦的過程
傳統(tǒng)軟件互操作技術(shù)也存在問題,?;ヂ?lián)網(wǎng)前所未有的開放性意味著各節(jié)點可采用不同的中間件技術(shù),,對技術(shù)細(xì)節(jié)進(jìn)行了私有化的約束,,構(gòu)件模型和架構(gòu)沒有統(tǒng)一標(biāo)準(zhǔn),,從而導(dǎo)致中間件平臺自身在構(gòu)件描述,、發(fā)布,、發(fā)現(xiàn),、調(diào)用,、互操作協(xié)議及數(shù)據(jù)傳輸?shù)确矫娉尸F(xiàn)出巨大的異構(gòu)性。各種不良技術(shù)約束的結(jié)果是軟件系統(tǒng)跨互聯(lián)網(wǎng)進(jìn)行交互變得困難重重,,最終導(dǎo)致了跨企業(yè)/部門的業(yè)務(wù)集成和重組難以靈活快速的進(jìn)行,。 在軟件的互操作方面,,傳統(tǒng)中間件只是實現(xiàn)了訪問互操作,,即通過標(biāo)準(zhǔn)化的API實現(xiàn)了同類系統(tǒng)之間的調(diào)用互操作,而連接互操作還是依賴于特定的訪問協(xié)議,,如JAVA使用RMI,,CORBA使用IIOP等,。而SOA通過標(biāo)準(zhǔn)的、支持Internet,、與操作系統(tǒng)無關(guān)的SOAP協(xié)議實現(xiàn)了連接互操作,。而且,,服務(wù)的封裝是采用XML協(xié)議,,具有自解析和自定義的特性,,這樣,,基于SOA的中間件還可以實現(xiàn)語義互操作。
基于服務(wù)的中間件 總之,,服務(wù)化體現(xiàn)的是中間件在完整業(yè)務(wù)復(fù)用、靈活業(yè)務(wù)組織方面的發(fā)展趨勢,,其核心目標(biāo)是提升IT基礎(chǔ)設(shè)施的業(yè)務(wù)敏捷性,。因此,中間件將成為SOA的主要實現(xiàn)平臺,。 3.2 中間件的分類(外延) 中間件所包括的范圍十分廣泛,,針對不同的應(yīng)用需求涌現(xiàn)出多種各具特色的中間件產(chǎn)品,。從功能性外延來看,,中間件包括交易中間件,、消息中間件,、集成中間件等各種功能性的中間件技術(shù)和產(chǎn)品,。 現(xiàn)在,,中間件已經(jīng)成為網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)、集成,、部署,、運行和管理必不可少的工具,。由于中間件技術(shù)涉及網(wǎng)絡(luò)應(yīng)用的各個層面,,涵蓋從基礎(chǔ)通訊,、數(shù)據(jù)訪問到應(yīng)用集成等眾多的環(huán)節(jié),,因此,,中間件技術(shù)呈現(xiàn)出多樣化的發(fā)展特點。 根據(jù)中間件在軟件支撐和架構(gòu)的定位來看,,基本上可以分為三大類產(chǎn)品:應(yīng)用服務(wù)類中間件,、應(yīng)用集成類中間件,、業(yè)務(wù)架構(gòu)類中間件。
為應(yīng)用系統(tǒng)提供一個綜合的計算環(huán)境和支撐平臺,,包括對象請求代理(ORB)中間件,、事務(wù)監(jiān)控交易中間件,、JAVA應(yīng)用服務(wù)器中間件等,。 隨著對象技術(shù)與分布式計算技術(shù)的發(fā)展,兩者相互結(jié)合形成了分布對象計算,并發(fā)展為當(dāng)今軟件技術(shù)的主流方向,。1990年底,對象管理組織OMG首次推出對象管理結(jié)構(gòu)OMA(Object Management Architecture),,對象請求代理(Object Request Broker)是這個模型的核心組件,。它的作用在于提供一個通信框架,,透明地在異構(gòu)的分布計算環(huán)境中傳遞對象請求,。CORBA規(guī)范包括了ORB的所有標(biāo)準(zhǔn)接口,,是對象請求代理的典型代表,。 隨著分布計算技術(shù)的發(fā)展,分布應(yīng)用系統(tǒng)對大規(guī)模的事務(wù)處理提出了需求,,比如商業(yè)活動中大量的關(guān)鍵事務(wù)處理,。事務(wù)處理監(jiān)控界于Client和Server之間,,進(jìn)行事務(wù)管理與協(xié)調(diào)、負(fù)載平衡,、失敗恢復(fù)等,,以提高系統(tǒng)的整體性能。它可以被看作是事務(wù)處理應(yīng)用程序的操作系統(tǒng),。這類被稱為交易中間件,,適用于聯(lián)機交易處理系統(tǒng),主要功能是管理分布于不同計算機上的數(shù)據(jù)的一致性,,保障系統(tǒng)處理能力的效率與均衡負(fù)載,。交易中間件所遵循的主要標(biāo)準(zhǔn)是X/open DTP模型,典型的產(chǎn)品是Tuxedo,。 JAVA從2.0企業(yè)版之后,,不僅僅是一種編程語言,而且演變?yōu)橐粋€完整的計算環(huán)境和企業(yè)架構(gòu),。為JAVA應(yīng)用提供組件容器,,用來構(gòu)造Internet應(yīng)用和其它分布式構(gòu)件應(yīng)用,是企業(yè)實施電子商務(wù)的基礎(chǔ)設(shè)施,,這種應(yīng)用服務(wù)器中間件發(fā)展到為企業(yè)應(yīng)用提供數(shù)據(jù)訪問,、部署、遠(yuǎn)程對象調(diào)用,、消息通信,、安全服務(wù)、監(jiān)控服務(wù),、集群服務(wù)等強化應(yīng)用支撐的服務(wù),。使得JAVA應(yīng)用服務(wù)器成為了事實上的應(yīng)用服務(wù)器工業(yè)標(biāo)準(zhǔn)。由于它的開放性,使得交易中間件和對象請求代理逐漸融合到應(yīng)用服務(wù)器之中,。典型的應(yīng)用服務(wù)器產(chǎn)品包括IBM Websphere Application Server,、Oracle Weblogic Application Server和金蝶Apusic Application Server等。
應(yīng)用集成類中間件是提供各種不同網(wǎng)絡(luò)應(yīng)用系統(tǒng)之間的消息通信,、服務(wù)集成和數(shù)據(jù)集成的功能,,包括常見的消息中間件、企業(yè)集成EAI,、企業(yè)服務(wù)總線以及相配套的適配器等,。 消息中間件指的是利用高效可靠的消息傳遞機制進(jìn)行平臺無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進(jìn)行分布式系統(tǒng)的集成,。通過提供消息傳遞和消息排隊模型,,它可在分布環(huán)境下擴展進(jìn)程間的通信,,并支持多通訊協(xié)議,、語言、應(yīng)用程序,、硬件和軟件平臺,,實現(xiàn)應(yīng)用系統(tǒng)之間的可靠異步消息通信,能夠保障數(shù)據(jù)在復(fù)雜的網(wǎng)絡(luò)中高效,、穩(wěn)定,、安全、可靠的傳輸,,并確保傳輸?shù)臄?shù)據(jù)不錯,、不重、不漏,、不丟,。目前流行的消息中間件產(chǎn)品有IBM的MQSeries、 BEA的MessageQ,、金蝶Apusic MQ等,。 企業(yè)應(yīng)用整合,僅指企業(yè)內(nèi)部不同應(yīng)用系統(tǒng)之間的互連,,以期通過應(yīng)用整合實現(xiàn)數(shù)據(jù)在多個系統(tǒng)之間的同步和共享,。這種類似集線器的架構(gòu)模式是在基于消息的基礎(chǔ)上,引入了前置機-服務(wù)器的概念,,使用一種集線器/插頭(hub-and-spoke)的架構(gòu),,將消息路由信息的管理和維護(hù)從前置機遷移到了服務(wù)器上,巧妙的把集成邏輯和業(yè)務(wù)邏輯分離開來,,大大增加了系統(tǒng)彈性,。由于前置機和服務(wù)器之間不再直接通信,每個前置機只通過消息和服務(wù)器之間通信,將復(fù)雜的網(wǎng)狀結(jié)構(gòu)變成了簡單的星型結(jié)構(gòu),。典型的企業(yè)應(yīng)用集成EAI的產(chǎn)品包括Tibico和Informatica等公司產(chǎn)品,。 隨著SOA思想和技術(shù)的逐漸成熟,EAI發(fā)展到透過業(yè)務(wù)服務(wù)的概念來提供IT的各項基本應(yīng)用功能,,讓這些服務(wù)可以自由地被排列組合、融會貫通,,以便在未來能隨時彈性配合新的需求而調(diào)整。Web Services是SOA的一種具體實現(xiàn)方式,,SOA的世界是由服務(wù)提供者(Service Provider),、服務(wù)請求者(Service Requester) 以及服務(wù)代理者(Service Broker)所組成,,目標(biāo)是將所有具備價值的IT資源,不論是舊的或新的,,通通都能夠透過Web Services的包裝,成為隨取即用的IT資產(chǎn),,并可將各種服務(wù)快速匯整,開發(fā)出組合式應(yīng)用,達(dá)到整合即開發(fā)的目的,。SOA的架構(gòu)只是實現(xiàn)和解決了服務(wù)模塊間調(diào)用的互操作問題,,為了更好的服務(wù)于企業(yè)應(yīng)用,引入了企業(yè)服務(wù)總線的應(yīng)用架構(gòu)(Enterprise Service Bus,,ESB),。這一構(gòu)架是基于消息通信、智能路由,、數(shù)據(jù)轉(zhuǎn)換等技術(shù)實現(xiàn)的,。ESB提供了一個基于標(biāo)準(zhǔn)的松散應(yīng)用耦合模式,,這就是企業(yè)服務(wù)總線中間件,,是一種綜合的企業(yè)集成中間件,。典型的ESB產(chǎn)品包括IBM Websphere ESB,、Oracle公司的Weblogic ESB以及金蝶Apusic ESB等,。
作為共性的凝練,,中間件不僅要從底層的技術(shù)入手,將共性技術(shù)的特征抽象進(jìn)中間層,,還要更多地把目光投向到業(yè)務(wù)層面上來,,根據(jù)業(yè)務(wù)的需要,,驅(qū)動自身能力的不斷演進(jìn),,即,,不斷出現(xiàn)的新的業(yè)務(wù)需要驅(qū)動了應(yīng)用模式和信息系統(tǒng)能力的不斷演進(jìn),,進(jìn)而要求中間件不斷地凝練更多的業(yè)務(wù)共性,,提供針對性支撐機制。近年來,,這一需求趨勢愈發(fā)明顯,,越來越多的業(yè)務(wù)和應(yīng)用模式被不斷地抽象進(jìn)入中間件的層次,,如業(yè)務(wù)流程流,、業(yè)務(wù)模型、業(yè)務(wù)規(guī)則,、交互應(yīng)用等等,,其結(jié)果是中間件凝練的共性功能越來越多,中間件的業(yè)務(wù)化和領(lǐng)域化的趨勢非常明顯,。 業(yè)務(wù)架構(gòu)類中間件包括業(yè)務(wù)流程,、業(yè)務(wù)管理和業(yè)務(wù)交互等幾個業(yè)務(wù)領(lǐng)域的中間件。 業(yè)務(wù)流程是處理業(yè)務(wù)模型的非常重要方法,。管理流程與各職能部門和業(yè)務(wù)單元有密切關(guān)系,,須藉各部門間的緊密協(xié)調(diào),以達(dá)到企業(yè)運營和管理功能的目標(biāo),。在業(yè)務(wù)流程支持方面,,從早期的WfMC定義的工作流,,到基于服務(wù)的業(yè)務(wù)流程規(guī)范BPEL,由業(yè)務(wù)流程的支撐,,逐漸形成了完整的業(yè)務(wù)流程架構(gòu)模型,,包括流程建模、流程引擎,、流程執(zhí)行,、流程監(jiān)控和流程分析等。有名的業(yè)務(wù)流程中間件包括基于工作流的IBM Lotus Workflow,,基于BPEL的IBM Webshpere Process Server以及同時支持工作流和BPEL的金蝶Apusic BPM等,。 業(yè)務(wù)管理就是對業(yè)務(wù)對象的建模和業(yè)務(wù)規(guī)則的定義、運行和監(jiān)控的中間件平臺,。策略管理員和開發(fā)人員將業(yè)務(wù)邏輯捕獲為業(yè)務(wù)規(guī)則,。使用規(guī)則管理器可以將規(guī)則輕松地嵌入 Web、現(xiàn)有應(yīng)用程序和后臺辦公應(yīng)用程序,。常見的業(yè)務(wù)管理中間件包括IBM Websphere ILOG 業(yè)務(wù)規(guī)則管理系統(tǒng),,金蝶BOS等。 業(yè)務(wù)交互的中間件平臺提供組織的合作伙伴,、員工和客戶通過WEB和移動設(shè)備等交互工具,,實現(xiàn)基于角色、上下文,、操作,、位置、偏好和團(tuán)隊協(xié)作需求的個性化的用戶體驗,。這種門戶服務(wù)器軟件基于標(biāo)準(zhǔn)Portlet組合的應(yīng)用程序訪問框架,,實現(xiàn)用戶集成和交互集成,構(gòu)建靈活,、基于 SOA 的應(yīng)用架構(gòu),。典型的門戶中間件有IBM Websphere Portal Server和金蝶Apusic Portal Server等。 4. 中間件的未來 中間件是互聯(lián)網(wǎng)時代的IT基礎(chǔ)設(shè)施,,提供業(yè)務(wù)的靈活性,,消除信息孤島,提高IT的研發(fā)和運營效率,。作為網(wǎng)絡(luò)計算的核心基礎(chǔ)設(shè)施,,中間件正在呈現(xiàn)出服務(wù)化、自治化,、業(yè)務(wù)化,、一體化等諸多新的發(fā)展趨勢,中間件進(jìn)入2.0時代,,將極大提升互聯(lián)網(wǎng)統(tǒng)一計算平臺的敏,、睿,、融、和能力,。
以互聯(lián)網(wǎng)為核心的多網(wǎng)融合產(chǎn)生了豐富多樣的新型網(wǎng)絡(luò)應(yīng)用模式,,作為主流的應(yīng)用運行支撐環(huán)境,中間件無處不在,,越來越多的應(yīng)用模式被抽象到中間件層,,中間件將變寬變厚。
隨著SOA技術(shù)逐漸成為主流,,以及異構(gòu)系統(tǒng)的集成問題日益嚴(yán)峻,中間件將向面向服務(wù),、易于集成的方向發(fā)展,。
中間件產(chǎn)品的種類日趨多樣(如交易中間件、消息中間件,、應(yīng)用服務(wù)器,、集成中間件、業(yè)務(wù)中間件等),,但其技術(shù)架構(gòu)將向一體化的方向發(fā)展,,主要包括: 統(tǒng)一內(nèi)核,易于演化:各大廠商的中間件產(chǎn)品將構(gòu)建在統(tǒng)一內(nèi)核之上,,使其易于平臺演化,。 統(tǒng)一編程模型,易于開發(fā):不同中間件產(chǎn)品提供了不同的編程模型,,這些編程模型將趨向統(tǒng)一,,從而達(dá)到易于開發(fā)的目的。 統(tǒng)一管理模型,,易于系統(tǒng)維護(hù):不同中間件產(chǎn)品提供了不同的管理工具與管理手段,,這些管理工具與手段將趨向統(tǒng)一,使其易于管理,,降低運維成本,。
中間件產(chǎn)品將成為云計算的支撐平臺,,使應(yīng)用易于交付。
一個大膽的設(shè)想是:未來五年,,瀏覽器將統(tǒng)一前端,,而后端平臺(中間件、操作系統(tǒng),、 數(shù)據(jù)庫)走向深度融合,。(對中間件的未來發(fā)展趨勢的詳細(xì)介紹參加另文《中間件技術(shù)的發(fā)展趨勢分析》,,在此不做詳細(xì)論述。) 綜上所述,,我們可以認(rèn)為中間件是一種獨立的系統(tǒng)軟件平臺,,為網(wǎng)絡(luò)應(yīng)用軟件提供綜合的服務(wù)和完整的計算環(huán)境,借助這種軟件使得網(wǎng)絡(luò)應(yīng)用能夠?qū)崿F(xiàn)集成,,達(dá)到業(yè)務(wù)的協(xié)同,,實現(xiàn)業(yè)務(wù)的靈活性。 ?。ū疚挠山鸬虚g件有限公司總經(jīng)理 奉繼承 博士 撰寫) |
|