
本文發(fā)布于2009年10月30日
1. 由來(lái)
因為工作的原因,我從金蝶集團調入金蝶中間件公司工作以來(lái),經(jīng)常遇到一個(gè)問(wèn)題就是中間件公司是個(gè)什么公司,中間件是什么?,金蝶不是做ERP的嗎?怎么也做中間件?。這是我以前在金蝶集團時(shí)無(wú)法想象的問(wèn)題。因為金蝶,金蝶ERP的品牌以及大眾對ERP的了解,是無(wú)需我解析什么是ERP,什么是財務(wù)軟件一類(lèi)的問(wèn)題的。
畢竟,中間件在實(shí)際的應用過(guò)程中,是對應用軟件起到支撐作用,最終用戶(hù)并不直接使用中間件,中間件不是大眾消費類(lèi)軟件產(chǎn)品。因此,除非是一個(gè)行業(yè)專(zhuān)業(yè)人士,一般不大可能與中間件打交道,不太了解什么是中間件。
因此,在系統軟件之中,操作系統、數據庫、中間件的三駕馬車(chē),中間件是最神秘的。因為,好歹大家通過(guò)Windows基本上會(huì )了解操作系統是個(gè)什么東西,盡管不會(huì )很全面,很專(zhuān)業(yè),畢竟是有感覺(jué)的。數據庫,雖然沒(méi)有直接見(jiàn)過(guò),但基本上明白數據是要一個(gè)倉庫來(lái)儲存的,因此,也大致知道數據庫管理系統是干什么的。
長(cháng)期以來(lái),中間件是一個(gè)專(zhuān)業(yè)化非常強的細分產(chǎn)業(yè)。因為中間件的技術(shù)門(mén)檻比較高,玩家也不多,無(wú)論是國外還是國內都是如此。因此,行業(yè)內對什么是中間件并不特別在意。而公司名稱(chēng)直接叫中間件的就更少了,金蝶中間件應該是國內外直接在公司名稱(chēng)中冠以中間件字眼最早,也是很少的公司之一。另一方面,因為中間件軟件還處于發(fā)展階段,還沒(méi)有完全成熟,因此對中間件的定義也就沒(méi)有深究,或者權威的說(shuō)法。
但現在情況有點(diǎn)變化,其中一個(gè)原因在于2008年底,國家啟動(dòng)了核高基重大科技專(zhuān)項,在基礎軟件領(lǐng)域明確提出重點(diǎn)支持操作系統、數據庫、中間件、文字處理等基礎軟件產(chǎn)業(yè)的自主創(chuàng )新,幾乎一夜之間大大小小的軟件公司都宣稱(chēng)是做中間件的了,只要不是做最終應用軟件的,他們的產(chǎn)品都叫中間件了,一時(shí)間,中間件變得蓬勃發(fā)展起來(lái)了。
作為中間件行業(yè)內的專(zhuān)業(yè)化和領(lǐng)先企業(yè)來(lái)說(shuō),大家都重視起中間件來(lái)了,這是好事,說(shuō)明社會(huì )上重視了。對行業(yè)的發(fā)展和繁榮固然重要,但這也隱含了重大的風(fēng)險。中間件名字被濫用,無(wú)論是對用戶(hù),對這個(gè)產(chǎn)業(yè),對政府和投資人來(lái)說(shuō),都會(huì )有負面的影響。魚(yú)目混珠,泥沙俱下的局面,對中間件產(chǎn)業(yè)的正常發(fā)展未必就是好事情了,也可能對真正的中間件自主創(chuàng )新帶來(lái)許多困擾,模糊了中間件的本質(zhì),可能會(huì )弱化中間件核心技術(shù)的創(chuàng )新和發(fā)展。
因此,在這種情況下,無(wú)論是對行業(yè)內,還是行業(yè)外,突然什么是中間件的問(wèn)題變成了一個(gè)大問(wèn)題了。
本文試圖就中間件的來(lái)龍去脈,外延內涵和前世今生,來(lái)一個(gè)全面的闡釋。一家之言,權作業(yè)界參考,希望帶動(dòng)大家做一些深入的思考。
2. 中間件的起源
2.1 中間件發(fā)展的歷史
事情從1946年說(shuō)起,世界上第一臺電子計算機埃尼阿克誕生,人類(lèi)進(jìn)入信息時(shí)代。1955年,約翰巴克斯發(fā)明了最早的程序語(yǔ)言Fortran,現代意義上的軟件就誕生了。
1964年,IBM發(fā)布OS/360操作系統,軟件與硬件分離,同時(shí),軟件成為一個(gè)獨立的產(chǎn)業(yè)正式登上產(chǎn)業(yè)界的舞臺。中間件就是軟件產(chǎn)業(yè)不斷發(fā)展過(guò)程中自然產(chǎn)生的。
90年代,文頓·瑟夫這位互聯(lián)網(wǎng)之父的發(fā)明成為改變IT業(yè)的重大革命性創(chuàng )新?;ヂ?lián)網(wǎng)促使分布式系統和網(wǎng)絡(luò )應用的誕生,中間件就是伴隨網(wǎng)絡(luò )技術(shù)的產(chǎn)生、發(fā)展而興起的,可以說(shuō)沒(méi)有網(wǎng)絡(luò )就沒(méi)有現代意義上的中間件。因為,網(wǎng)絡(luò )環(huán)境需要解決異構分布網(wǎng)絡(luò )環(huán)境下軟件系統的通信、互操作、協(xié)同、事務(wù)、安全等共性問(wèn)題,提高異構分布網(wǎng)絡(luò )環(huán)境下軟件系統的互操作性、可移植性、適應性、可靠性等問(wèn)題。
1968年IBM發(fā)布CICS交易事務(wù)控制系統,使得應用軟件與系統服務(wù)分離,這是中間件技術(shù)萌芽的標志,因為CICS還不是分布式環(huán)境的產(chǎn)物,因此我們往往還不將CICS作為正式的中間件系統。
一般來(lái)說(shuō),我們將1990年誕生于A(yíng)TT公司的BELL實(shí)驗室的Tuxedo系統(后來(lái)被NOVELL從ATT公司隨著(zhù)UNIX系統一起買(mǎi)走,后來(lái)又賣(mài)給了BEA公司,現在歸于ORACLE公司旗下了)作為中間件的誕生標志。Tuxedo解決了分布式交易事務(wù)控制問(wèn)題,中間件開(kāi)始成為網(wǎng)絡(luò )應用的基礎設施,中間件正式成型,這是最早的交易中間件。
1994年IBM發(fā)布消息隊列服務(wù)MQ系列產(chǎn)品,解決分布式系統異步、可靠、傳輸的通訊服務(wù)問(wèn)題,消息中間件誕生。
1995年,JAVA之父James Gosling發(fā)明JAVA語(yǔ)言,JAVA提供了跨平臺的通用的網(wǎng)絡(luò )應用服務(wù),成為今天中間件的核心技術(shù)。JAVA是第一個(gè)天生的網(wǎng)絡(luò )應用平臺,特別是J2EE發(fā)布以來(lái),JAVA從一個(gè)編程語(yǔ)言,演變?yōu)榫W(wǎng)絡(luò )應用架構,成為應用服務(wù)平臺的事實(shí)標準。應用服務(wù)器中間件,成為中間件技術(shù)的集大成者,也成為事實(shí)上的中間件的核心。
2001年,微軟發(fā)布.NET,中間件演變?yōu)?NET和JAVA兩大技術(shù)陣營(yíng)。但由于.NET還不是一個(gè)完全開(kāi)放的技術(shù)體系,只有一個(gè)玩家,因此,雖然.NET也是一種中間件,但由于IBM/ORACLE/SUN/SAP等巨頭都無(wú)一例外成了JAVA陣營(yíng)的支持者,因此,我們習慣上提到中間件時(shí),往往不包括.NET中間件體系。
以上談的是歷史,但透過(guò)歷史事實(shí)背后,為什么會(huì )出現中間件,這其中的本質(zhì)因素是什么?
2.2 中間件發(fā)展的驅動(dòng)力
中間件出現的驅動(dòng)力主要來(lái)自軟件研發(fā)過(guò)程碰到的種種問(wèn)題。從軟件出現最早是用于科學(xué)計算,然后是計算機輔助設計、輔助制造等等工業(yè)應用。在企業(yè)管理領(lǐng)域大規模應用后,業(yè)務(wù)需求不斷的變化、系統不斷增加、流程更復雜、系統越來(lái)越不堪重負,出現了需求交付方面的重大挑戰,以至于人們用軟件危機來(lái)描述軟件工業(yè)所面臨的困境。
總結起來(lái),軟件工業(yè)面臨的主要問(wèn)題是四個(gè)方面:質(zhì)量問(wèn)題、效率問(wèn)題、互操作問(wèn)題、靈活應變問(wèn)題。這些問(wèn)題今天依然困擾著(zhù)這個(gè)行業(yè)。
造成這個(gè)局面的原因是異構性和標準規范的滯后。
異構性表現在計算機的軟硬件之間的異構性,包括硬件(CPU和指令集、硬件結構、驅動(dòng)程序等),操作系統(不同操作系統的API和開(kāi)發(fā)環(huán)境)、數據庫(不同的存儲和訪(fǎng)問(wèn)格式)等等。長(cháng)期以來(lái),高級語(yǔ)言依賴(lài)于特定的編譯器和操作系統API來(lái)編程,而他們是不兼容的,因此軟件必須依賴(lài)于開(kāi)發(fā)和運行的環(huán)境。
造成異構的原因源自市場(chǎng)競爭、技術(shù)升級以及保護投資等因素。希望屏蔽異構平臺的差異性問(wèn)題是促成中間件發(fā)展的驅動(dòng)力之一。
因為異構性,產(chǎn)生的結果是軟件依賴(lài)于計算環(huán)境,使得各種不同軟件之間在不同平臺之間不能移植,或者移植非常困難。而且,因為網(wǎng)絡(luò )協(xié)議和通信機制的不同,這些系統之間還不能有效地相互集成。
造成互操作性不好的原因,主要是標準的滯后。解決軟件之間的互操作性問(wèn)題也是促成中間件發(fā)展的驅動(dòng)力之一。
軟件應用領(lǐng)域越來(lái)越多,相同領(lǐng)域的應用系統之間許多基礎功能和結構是有相似性的,每次開(kāi)發(fā)系統都從零開(kāi)始絕對不是一種好的方法,也是對質(zhì)量和效率的很大的傷害。
盡可能多地凝練共性并復用以提高軟件開(kāi)發(fā)效率和質(zhì)量,通過(guò)中間件通過(guò)提供簡(jiǎn)單、一致、集成的開(kāi)發(fā)和運行環(huán)境,簡(jiǎn)化分布式系統的設計、編程和管理,這也是中間件發(fā)展的重要驅動(dòng)力。
在長(cháng)期的探索過(guò)程中,解決軟件的四個(gè)問(wèn)題的辦法總結起來(lái)兩個(gè)方面:工程方法、平臺與技術(shù)。
工程方法就是用工業(yè)工程、系統工程的理論、方法和體系來(lái)解決軟件研發(fā)過(guò)程中的管理問(wèn)題,包括團隊管理、項目管理、質(zhì)量控制等等,這就是軟件工程。除了軟件工程方法之外,我們發(fā)明了更多的架構規劃、設計和實(shí)施的方法,不斷累積領(lǐng)域的知識與經(jīng)驗等等。
更好的技術(shù)手段,包括更好的程序設計語(yǔ)言、更好的平臺和軟件開(kāi)發(fā)技術(shù),如面向對象、組件開(kāi)發(fā)、面向服務(wù)等等。而這方面,在技術(shù)上逐漸發(fā)展的成果大部分都凝聚在今天的中間件平臺之中。
而這些更好的技術(shù)手段,從本質(zhì)上是通過(guò)復用、松耦合、互操作(標準)等機制來(lái)提高軟件質(zhì)量、加快軟件研發(fā)效率、使研發(fā)出來(lái)的產(chǎn)品能夠相互集成并靈活適應變化。
這些因素逐漸促成了中間件軟件的形成和發(fā)展。
3. 中間件的概念
講了這么多,究竟什么是中間件,也就是中間件的定義是什么?
針對這個(gè)問(wèn)題,應該說(shuō)還沒(méi)有一個(gè)標準的定義,或者說(shuō)還沒(méi)有完全取得學(xué)術(shù)界和產(chǎn)業(yè)界的共識。
顧名思義,中間件就是處于中間的軟件。但這種不是從功能,或者特性來(lái)定義的概念,而是用位置來(lái)定義的名字,就容易被不同的人從不同角度賦予其不同的含義。
IDC曾經(jīng)給中間件下的定義是中間件是一種獨立的系統軟件或服務(wù)程序,分布式應用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件位于客戶(hù)機服務(wù)器的操作系統之上,管理計算資源和網(wǎng)絡(luò )通信。
我國學(xué)術(shù)界一般認可的定義是中間件是指網(wǎng)絡(luò )環(huán)境下處于操作系統、數據庫等系統軟件和應用軟件之間的一種起連接作用的分布式軟件,主要解決異構網(wǎng)絡(luò )環(huán)境下分布式應用軟件的互連與互操作問(wèn)題,提供標準接口、協(xié)議,屏蔽實(shí)現細節,提高應用系統易移植性(北京大學(xué)梅宏)。
中科院軟件所研究員仲萃豪形象地把中間件定義為平臺+通信。這個(gè)定義限定了只有用于分布式系統中的此類(lèi)軟件才能被稱(chēng)為中間件,同時(shí)此定義還可以把中間件與支撐軟件和實(shí)用軟件區分開(kāi)來(lái)。
中間件處于操作系統軟件與用戶(hù)的應用軟件的中間。中間件在操作系統、網(wǎng)絡(luò )和數據庫之上,應用軟件的下層,總的作用是為處于自己上層的應用軟件提供運行與開(kāi)發(fā)的環(huán)境,幫助用戶(hù)靈活、高效地開(kāi)發(fā)和集成復雜的應用軟件。形象地說(shuō)就是上下之間的中間。
此外,中間件主要為網(wǎng)絡(luò )分布式計算環(huán)境提供通信服務(wù)、交換服務(wù)、語(yǔ)義互操作服務(wù)等系統之間的協(xié)同集成服務(wù),解決系統之間的互連互通問(wèn)題。形象地說(shuō)就是所謂左右之間的中間。
要深入理解什么是中間件,形式化的定義固然重要,我們還得從概念本身去深入理解其核心特征才是最重要的。要理解一個(gè)概念,從內涵和外延兩個(gè)方面去描述是哲學(xué)上非常重要的一套方法體系。
3.1 中間件的特征(內涵)
總結分析,中間件有幾個(gè)非常重要的特征是必須具備的:
所謂平臺就是能夠獨立運行并自主存在,為其所支撐的上層系統和應用提供運行所依賴(lài)的環(huán)境。顯然,不是所有的系統或者應用都可以稱(chēng)之為平臺的。中間件是一個(gè)平臺,因此中間件是必須獨立存在,是運行時(shí)刻的系統軟件,它為上層的網(wǎng)絡(luò )應用系統提供一個(gè)運行環(huán)境,并通過(guò)標準的接口和API來(lái)隔離其支撐的系統,實(shí)現其獨立性,也就是平臺性。
因此,目前許多的開(kāi)發(fā)語(yǔ)言、組件庫和各種報表設計之類(lèi)的軟件,很難滿(mǎn)足平臺性,將這類(lèi)軟件叫中間件,是很不合適的。例如,JAVA是一種語(yǔ)言,這種語(yǔ)言的開(kāi)發(fā)工具和開(kāi)發(fā)框架,如Eclipse、JBuilder、Struts,Hibernate等等就不能稱(chēng)為中間件,充其量叫中間件開(kāi)發(fā)工具,而不能叫中間件本身,就如同各種建筑工程設備和機械,如吊臂、攪拌機等不能叫建筑,而只能成為建筑工具一樣。而J2EE應用服務(wù)器提供JAVA應用的運行環(huán)境,就是經(jīng)典的中間件。
中間件的最終目的是解決上層應用系統的問(wèn)題,而且也是軟件技術(shù)發(fā)展到今天對應用軟件提供最完善徹底的解決方案。
高級程序設計語(yǔ)言的發(fā)明,使得軟件開(kāi)發(fā)變成一個(gè)獨立的科學(xué)和技術(shù)體系,而操作系統平臺的出現,使得應用軟件通過(guò)標準的API接口,實(shí)現了軟件與硬件的分離。
現代面向服務(wù)的中間件在軟件的模型、結構、互操作以及開(kāi)發(fā)方法等四個(gè)方面提供了更強的應用支撐能力:
模型:構件模型彈性粒度化,即通過(guò)抽象層度更高的構件模型,實(shí)現具備更高結構獨立性、內容自包含性和業(yè)務(wù)完整性的可復用構件,即服務(wù)。并且在細粒度服務(wù)基礎上,提供了更粗粒度的服務(wù)封裝方式,即業(yè)務(wù)層面的封裝,形成業(yè)務(wù)組件,就可以實(shí)現從組件模型到業(yè)務(wù)模型的全生命周期企業(yè)建模的能力。
結構:結構松散化,即,將完整分離服務(wù)描述和服務(wù)功能實(shí)現以及服務(wù)的使用者和提供者,從而避免分布式應用系統構建和集成時(shí)常見(jiàn)的技術(shù)、組織、時(shí)間等不良約束。
互操作:交互過(guò)程標準化,即,將與互操作相關(guān)的內容進(jìn)行標準化定義,如服務(wù)封裝、描述、發(fā)布、發(fā)現、調用等契約,通信協(xié)議以及數據交換格式等等。最終實(shí)現訪(fǎng)問(wèn)互操作、連接互操作和語(yǔ)義互操作。
開(kāi)發(fā)集成方法:應用系統的構建方式由代碼編寫(xiě)轉為主要通過(guò)服務(wù)間的快捷組合及編排,完成更為復雜的業(yè)務(wù)邏輯的按需提供和改善,從而大大簡(jiǎn)化和加速應用系統的搭建及重構過(guò)程。
而要最終解決軟件的質(zhì)量問(wèn)題、效率問(wèn)題、互操作問(wèn)題、靈活應變問(wèn)題這四大問(wèn)題,需要在軟件技術(shù)的內在結構(Structure)、架構(Architecture)層面進(jìn)行思考。
解決這些問(wèn)題,技術(shù)的本質(zhì)是復用、松耦合、互操作(標準)等軟件技術(shù)的內在機制。這也是中間件技術(shù)和產(chǎn)品的本質(zhì)特征。
軟件復用,即軟件的重用,也叫再用,是指同一事物不作修改或稍加改動(dòng)就多次重復使用。從軟件復用技術(shù)的發(fā)展來(lái)看,就是不斷提升抽象級別,擴大復用范圍。最早的復用技術(shù)是子程序,人們發(fā)明子程序,就可以在不同系統之間進(jìn)行復用了。但是,子程序是最原始的復用,因為這種復用范圍是一個(gè)可執行程序內復用,靜態(tài)開(kāi)發(fā)期復用,如果子程序修改,意味著(zhù)所有調用這個(gè)子程序的程序必須重新編譯、測試和發(fā)布。
復用對象復用范圍
| 復用對象 | 復用范圍 |
|---|---|
| 子程序 | 一個(gè)可執行程序內復用,靜態(tài)開(kāi)發(fā)期 復用 |
| 組件(DLL,Com等) | 系統內復用,動(dòng)態(tài)運行期復用 |
| 企業(yè)對象組件(Com+,.NET,EJB等) | 企業(yè)網(wǎng)絡(luò )內復用,不同系統之間復用 |
| 服務(wù) (如WebService,SCA/SDO) | 不同企業(yè)之間,全球復用,動(dòng)態(tài)可配置 |
為了解決這個(gè)問(wèn)題,發(fā)明了組件(或者叫控件),如MS操作系統下的DLL組件。組件將復用提升了一個(gè)層次,因為組件可以在一個(gè)系統內復用(同一種操作系統),而且是動(dòng)態(tài)、運行期復用。這樣組件可以單獨發(fā)展,組件與組件調用者之間的耦合度降低。
為解決分布式網(wǎng)絡(luò )計算之間的組件復用,人們發(fā)明了企業(yè)對象組件,如(COM+, .NET, EJB等),或者叫分布式組件。通過(guò)遠程對象代理,來(lái)實(shí)現企業(yè)網(wǎng)絡(luò )內復用,不同系統之間復用。
傳統中間件的核心是組件對象的管理。但分布式組件也是嚴重依賴(lài)其受控環(huán)境,由于構件實(shí)現和運行支撐技術(shù)之間存在著(zhù)較大的異構性,不同技術(shù)設計和實(shí)現的構件之間無(wú)法直接組裝式復用。
而現代中間件的發(fā)展重要趨勢就是以服務(wù)為核心,如WebService, SCA/SDO等。通過(guò)服務(wù),或者服務(wù)組件來(lái)實(shí)現更高層次的復用、解耦和互操作,即SOA架構中間件。
因為服務(wù)是通過(guò)標準封裝,服務(wù)組件之間的組裝、編排和重組,來(lái)實(shí)現服務(wù)的復用。而且這種復用,可以在不同企業(yè)之間,全球復用,達到復用的最高級別,并且是動(dòng)態(tài)可配置的復用。
基于SOA架構的中間件,在松耦合解耦過(guò)程也發(fā)展到了最后的境界。傳統軟件將軟件之中核心三部分——網(wǎng)絡(luò )連接、數據轉換、業(yè)務(wù)邏輯全部耦合在一個(gè)整體之中,形成鐵板一塊的軟件,牽一發(fā)而動(dòng)全身,軟件就難以適應變化。分布式對象技術(shù)將“連接邏輯”進(jìn)行分離,消息中間件將“連接邏輯”進(jìn)行異步處理,增加了更大的靈活性。消息代理和一些分布式對象中間件將數據轉換也進(jìn)行了分離。而SOA架構,通過(guò)服務(wù)的封裝,實(shí)現了業(yè)務(wù)邏輯與網(wǎng)絡(luò )連接、數據轉換等進(jìn)行完全的解耦。

軟件技術(shù)的不斷解耦的過(guò)程
傳統軟件互操作技術(shù)也存在問(wèn)題?;ヂ?lián)網(wǎng)前所未有的開(kāi)放性意味著(zhù)各節點(diǎn)可采用不同的中間件技術(shù),對技術(shù)細節進(jìn)行了私有化的約束,構件模型和架構沒(méi)有統一標準,從而導致中間件平臺自身在構件描述、發(fā)布、發(fā)現、調用、互操作協(xié)議及數據傳輸等方面呈現出巨大的異構性。各種不良技術(shù)約束的結果是軟件系統跨互聯(lián)網(wǎng)進(jìn)行交互變得困難重重,最終導致了跨企業(yè)/部門(mén)的業(yè)務(wù)集成和重組難以靈活快速的進(jìn)行。
在軟件的互操作方面,傳統中間件只是實(shí)現了訪(fǎng)問(wèn)互操作,即通過(guò)標準化的API實(shí)現了同類(lèi)系統之間的調用互操作,而連接互操作還是依賴(lài)于特定的訪(fǎng)問(wèn)協(xié)議,如JAVA使用RMI,CORBA使用IIOP等。而SOA通過(guò)標準的、支持Internet、與操作系統無(wú)關(guān)的SOAP協(xié)議實(shí)現了連接互操作。而且,服務(wù)的封裝是采用XML協(xié)議,具有自解析和自定義的特性,這樣,基于SOA的中間件還可以實(shí)現語(yǔ)義互操作。

基于服務(wù)的中間件
總之,服務(wù)化體現的是中間件在完整業(yè)務(wù)復用、靈活業(yè)務(wù)組織方面的發(fā)展趨勢,其核心目標是提升IT基礎設施的業(yè)務(wù)敏捷性。因此,中間件將成為SOA的主要實(shí)現平臺。
3.2 中間件的分類(lèi)(外延)
中間件所包括的范圍十分廣泛,針對不同的應用需求涌現出多種各具特色的中間件產(chǎn)品。從功能性外延來(lái)看,中間件包括交易中間件、消息中間件、集成中間件等各種功能性的中間件技術(shù)和產(chǎn)品。
現在,中間件已經(jīng)成為網(wǎng)絡(luò )應用系統開(kāi)發(fā)、集成、部署、運行和管理必不可少的工具。由于中間件技術(shù)涉及網(wǎng)絡(luò )應用的各個(gè)層面,涵蓋從基礎通訊、數據訪(fǎng)問(wèn)到應用集成等眾多的環(huán)節,因此,中間件技術(shù)呈現出多樣化的發(fā)展特點(diǎn)。
根據中間件在軟件支撐和架構的定位來(lái)看,基本上可以分為三大類(lèi)產(chǎn)品:應用服務(wù)類(lèi)中間件、應用集成類(lèi)中間件、業(yè)務(wù)架構類(lèi)中間件。
為應用系統提供一個(gè)綜合的計算環(huán)境和支撐平臺,包括對象請求代理(ORB)中間件、事務(wù)監控交易中間件、JAVA應用服務(wù)器中間件等。
隨著(zhù)對象技術(shù)與分布式計算技術(shù)的發(fā)展,兩者相互結合形成了分布對象計算,并發(fā)展為當今軟件技術(shù)的主流方向。1990年底,對象管理組織OMG首次推出對象管理結構OMA(Object Management Architecture),對象請求代理(Object Request Broker)是這個(gè)模型的核心組件。它的作用在于提供一個(gè)通信框架,透明地在異構的分布計算環(huán)境中傳遞對象請求。CORBA規范包括了ORB的所有標準接口,是對象請求代理的典型代表。
隨著(zhù)分布計算技術(shù)的發(fā)展,分布應用系統對大規模的事務(wù)處理提出了需求,比如商業(yè)活動(dòng)中大量的關(guān)鍵事務(wù)處理。事務(wù)處理監控界于Client和Server之間,進(jìn)行事務(wù)管理與協(xié)調、負載平衡、失敗恢復等,以提高系統的整體性能。它可以被看作是事務(wù)處理應用程序的操作系統。這類(lèi)被稱(chēng)為交易中間件,適用于聯(lián)機交易處理系統,主要功能是管理分布于不同計算機上的數據的一致性,保障系統處理能力的效率與均衡負載。交易中間件所遵循的主要標準是X/open DTP模型,典型的產(chǎn)品是Tuxedo。
JAVA從2.0企業(yè)版之后,不僅僅是一種編程語(yǔ)言,而且演變?yōu)橐粋€(gè)完整的計算環(huán)境和企業(yè)架構。為JAVA應用提供組件容器,用來(lái)構造Internet應用和其它分布式構件應用,是企業(yè)實(shí)施電子商務(wù)的基礎設施,這種應用服務(wù)器中間件發(fā)展到為企業(yè)應用提供數據訪(fǎng)問(wèn)、部署、遠程對象調用、消息通信、安全服務(wù)、監控服務(wù)、集群服務(wù)等強化應用支撐的服務(wù)。使得JAVA應用服務(wù)器成為了事實(shí)上的應用服務(wù)器工業(yè)標準。由于它的開(kāi)放性,使得交易中間件和對象請求代理逐漸融合到應用服務(wù)器之中。典型的應用服務(wù)器產(chǎn)品包括IBM Websphere Application Server、Oracle Weblogic Application Server和金蝶Apusic Application Server等。
應用集成類(lèi)中間件是提供各種不同網(wǎng)絡(luò )應用系統之間的消息通信、服務(wù)集成和數據集成的功能,包括常見(jiàn)的消息中間件、企業(yè)集成EAI、企業(yè)服務(wù)總線(xiàn)以及相配套的適配器等。
消息中間件指的是利用高效可靠的消息傳遞機制進(jìn)行平臺無(wú)關(guān)的數據交流,并基于數據通信來(lái)進(jìn)行分布式系統的集成。通過(guò)提供消息傳遞和消息排隊模型,它可在分布環(huán)境下擴展進(jìn)程間的通信,并支持多通訊協(xié)議、語(yǔ)言、應用程序、硬件和軟件平臺,實(shí)現應用系統之間的可靠異步消息通信,能夠保障數據在復雜的網(wǎng)絡(luò )中高效、穩定、安全、可靠的傳輸,并確保傳輸的數據不錯、不重、不漏、不丟。目前流行的消息中間件產(chǎn)品有IBM的MQSeries、 BEA的MessageQ、金蝶Apusic MQ等。
企業(yè)應用整合,僅指企業(yè)內部不同應用系統之間的互連,以期通過(guò)應用整合實(shí)現數據在多個(gè)系統之間的同步和共享。這種類(lèi)似集線(xiàn)器的架構模式是在基于消息的基礎上,引入了前置機-服務(wù)器的概念,使用一種集線(xiàn)器/插頭(hub-and-spoke)的架構,將消息路由信息的管理和維護從前置機遷移到了服務(wù)器上,巧妙的把集成邏輯和業(yè)務(wù)邏輯分離開(kāi)來(lái),大大增加了系統彈性。由于前置機和服務(wù)器之間不再直接通信,每個(gè)前置機只通過(guò)消息和服務(wù)器之間通信,將復雜的網(wǎng)狀結構變成了簡(jiǎn)單的星型結構。典型的企業(yè)應用集成EAI的產(chǎn)品包括Tibico和Informatica等公司產(chǎn)品。
隨著(zhù)SOA思想和技術(shù)的逐漸成熟,EAI發(fā)展到透過(guò)業(yè)務(wù)服務(wù)的概念來(lái)提供IT的各項基本應用功能,讓這些服務(wù)可以自由地被排列組合、融會(huì )貫通,以便在未來(lái)能隨時(shí)彈性配合新的需求而調整。Web Services是SOA的一種具體實(shí)現方式,SOA的世界是由服務(wù)提供者(Service Provider)、服務(wù)請求者(Service Requester) 以及服務(wù)代理者(Service Broker)所組成,目標是將所有具備價(jià)值的IT資源,不論是舊的或新的,通通都能夠透過(guò)Web Services的包裝,成為隨取即用的IT資產(chǎn),并可將各種服務(wù)快速匯整,開(kāi)發(fā)出組合式應用,達到整合即開(kāi)發(fā)的目的。SOA的架構只是實(shí)現和解決了服務(wù)模塊間調用的互操作問(wèn)題,為了更好的服務(wù)于企業(yè)應用,引入了企業(yè)服務(wù)總線(xiàn)的應用架構(Enterprise Service Bus,ESB)。這一構架是基于消息通信、智能路由、數據轉換等技術(shù)實(shí)現的。ESB提供了一個(gè)基于標準的松散應用耦合模式,這就是企業(yè)服務(wù)總線(xiàn)中間件,是一種綜合的企業(yè)集成中間件。典型的ESB產(chǎn)品包括IBM Websphere ESB、Oracle公司的Weblogic ESB以及金蝶Apusic ESB等。
作為共性的凝練,中間件不僅要從底層的技術(shù)入手,將共性技術(shù)的特征抽象進(jìn)中間層,還要更多地把目光投向到業(yè)務(wù)層面上來(lái),根據業(yè)務(wù)的需要,驅動(dòng)自身能力的不斷演進(jìn),即,不斷出現的新的業(yè)務(wù)需要驅動(dòng)了應用模式和信息系統能力的不斷演進(jìn),進(jìn)而要求中間件不斷地凝練更多的業(yè)務(wù)共性,提供針對性支撐機制。近年來(lái),這一需求趨勢愈發(fā)明顯,越來(lái)越多的業(yè)務(wù)和應用模式被不斷地抽象進(jìn)入中間件的層次,如業(yè)務(wù)流程流、業(yè)務(wù)模型、業(yè)務(wù)規則、交互應用等等,其結果是中間件凝練的共性功能越來(lái)越多,中間件的業(yè)務(wù)化和領(lǐng)域化的趨勢非常明顯。
業(yè)務(wù)架構類(lèi)中間件包括業(yè)務(wù)流程、業(yè)務(wù)管理和業(yè)務(wù)交互等幾個(gè)業(yè)務(wù)領(lǐng)域的中間件。
業(yè)務(wù)流程是處理業(yè)務(wù)模型的非常重要方法。管理流程與各職能部門(mén)和業(yè)務(wù)單元有密切關(guān)系,須藉各部門(mén)間的緊密協(xié)調,以達到企業(yè)運營(yíng)和管理功能的目標。在業(yè)務(wù)流程支持方面,從早期的WfMC定義的工作流,到基于服務(wù)的業(yè)務(wù)流程規范BPEL,由業(yè)務(wù)流程的支撐,逐漸形成了完整的業(yè)務(wù)流程架構模型,包括流程建模、流程引擎、流程執行、流程監控和流程分析等。有名的業(yè)務(wù)流程中間件包括基于工作流的IBM Lotus Workflow,基于BPEL的IBM Webshpere Process Server以及同時(shí)支持工作流和BPEL的金蝶Apusic BPM等。
業(yè)務(wù)管理就是對業(yè)務(wù)對象的建模和業(yè)務(wù)規則的定義、運行和監控的中間件平臺。策略管理員和開(kāi)發(fā)人員將業(yè)務(wù)邏輯捕獲為業(yè)務(wù)規則。使用規則管理器可以將規則輕松地嵌入 Web、現有應用程序和后臺辦公應用程序。常見(jiàn)的業(yè)務(wù)管理中間件包括IBM Websphere ILOG 業(yè)務(wù)規則管理系統,金蝶BOS等。
業(yè)務(wù)交互的中間件平臺提供組織的合作伙伴、員工和客戶(hù)通過(guò)WEB和移動(dòng)設備等交互工具,實(shí)現基于角色、上下文、操作、位置、偏好和團隊協(xié)作需求的個(gè)性化的用戶(hù)體驗。這種門(mén)戶(hù)服務(wù)器軟件基于標準Portlet組合的應用程序訪(fǎng)問(wèn)框架,實(shí)現用戶(hù)集成和交互集成,構建靈活、基于 SOA 的應用架構。典型的門(mén)戶(hù)中間件有IBM Websphere Portal Server和金蝶Apusic Portal Server等。
4. 中間件的未來(lái)
中間件是互聯(lián)網(wǎng)時(shí)代的IT基礎設施,提供業(yè)務(wù)的靈活性,消除信息孤島,提高IT的研發(fā)和運營(yíng)效率。作為網(wǎng)絡(luò )計算的核心基礎設施,中間件正在呈現出服務(wù)化、自治化、業(yè)務(wù)化、一體化等諸多新的發(fā)展趨勢,中間件進(jìn)入2.0時(shí)代,將極大提升互聯(lián)網(wǎng)統一計算平臺的敏、睿、融、和能力。
以互聯(lián)網(wǎng)為核心的多網(wǎng)融合產(chǎn)生了豐富多樣的新型網(wǎng)絡(luò )應用模式,作為主流的應用運行支撐環(huán)境,中間件無(wú)處不在,越來(lái)越多的應用模式被抽象到中間件層,中間件將變寬變厚。
隨著(zhù)SOA技術(shù)逐漸成為主流,以及異構系統的集成問(wèn)題日益嚴峻,中間件將向面向服務(wù)、易于集成的方向發(fā)展。
中間件產(chǎn)品的種類(lèi)日趨多樣(如交易中間件、消息中間件、應用服務(wù)器、集成中間件、業(yè)務(wù)中間件等),但其技術(shù)架構將向一體化的方向發(fā)展,主要包括:
統一內核,易于演化:各大廠(chǎng)商的中間件產(chǎn)品將構建在統一內核之上,使其易于平臺演化。
統一編程模型,易于開(kāi)發(fā):不同中間件產(chǎn)品提供了不同的編程模型,這些編程模型將趨向統一,從而達到易于開(kāi)發(fā)的目的。
統一管理模型,易于系統維護:不同中間件產(chǎn)品提供了不同的管理工具與管理手段,這些管理工具與手段將趨向統一,使其易于管理,降低運維成本。
中間件產(chǎn)品將成為云計算的支撐平臺,使應用易于交付。
一個(gè)大膽的設想是:未來(lái)五年,瀏覽器將統一前端,而后端平臺(中間件、操作系統、 數據庫)走向深度融合。(對中間件的未來(lái)發(fā)展趨勢的詳細介紹參加另文《中間件技術(shù)的發(fā)展趨勢分析》,在此不做詳細論述。)
綜上所述,我們可以認為中間件是一種獨立的系統軟件平臺,為網(wǎng)絡(luò )應用軟件提供綜合的服務(wù)和完整的計算環(huán)境,借助這種軟件使得網(wǎng)絡(luò )應用能夠實(shí)現集成,達到業(yè)務(wù)的協(xié)同,實(shí)現業(yè)務(wù)的靈活性。
?。ū疚挠山鸬虚g件有限公司總經(jīng)理 奉繼承 博士 撰寫(xiě))
聯(lián)系客服