中間件是伴隨著網絡應用的發展而逐漸成長起來的技術體系。最初的中間件發展驅動力是需要有一個公共的標準的應用開發平臺來屏蔽不同操作系統之間的環境和API差異,也就是所謂操作系統與應用程序之間“中間”的這一層叫中間件。但隨著網絡應用的需求,解決不同系統之間的網絡通信、安全、事務的性能、傳輸的可靠性、語義的解析、數據和應用的整合這些問題,變成中間件的更重要的驅動因素。因此,相繼出現了解決網絡應用的交易中間件、消息中間件、集成中間件等各種功能性的中間件技術和產品。
現在,中間件已經成為網絡應用系統開發、集成、部署、運行和管理必不可少的工具。由于中間件技術涉及網絡應用的各個層面,涵蓋從基礎通訊、數據訪問到應用集成等眾多的環節,因此,中間件技術呈現出多樣化的發展特點。
傳統中間件在支持相對封閉、靜態、穩定、易控的企業網絡環境中的企業計算和信息資源共享方面取得了巨大成功,但在新時期以開放、動態、多變的互聯網(Internet)為代表的網絡技術沖擊下,還是顯露出了它的固有局限性,如功能較為專一化,產品和技術之間存在著較大的異構性,跨互聯網的集成和協同工作能力不足,僵化的基礎設施缺乏隨需應變能力等等,在互聯網計算帶來的巨大挑戰面前顯得力不從心,時代要求新的技術變革。
中間件技術的發展方向,將聚焦于消除信息孤島,推動無邊界信息流,支撐開放、動態、多變的互聯網環境中的復雜應用系統,實現對分布于互聯網之上的各種自治信息資源(計算資源、數據資源、服務資源、軟件資源)的簡單、標準、快速、靈活、可信、高效能及低成本的集成、協同和綜合利用,提高組織的IT基礎設施的業務敏捷性,降低總體運維成本,促進IT與業務之間的匹配。中間件技術正在呈現出業務化、服務化、一體化、虛擬化等諸多新的重要發展趨勢。
1.業務化:中間件正在“變厚變寬”
中間件的本質特征是對計算環境的抽象和對應用共性的凝煉。十年來,中間件的發展多在計算環境的抽象上。目前的中間件可以在不同操作系統、不同網絡環境下提供各種應用服務。
抽取分布系統構造中的共性問題,封裝這些共性問題的解決機制,對外提供簡單統一的接口,從而減少開發人員在解決這些共性問題時的難度和工作量。因此,其顯著特點之一就是自底向上的技術導向,它典型地是對操作系統、網絡、編程語言等基礎軟件能力的抽象和封裝,其關注主要聚焦于分布式應用構建的技術細節。
越來越多的網絡應用將被抽象形成標準的平臺服務,加入到中間件之中,成為重要的技術特征。
業務化代表了中間件對復雜業務支持方面的發展趨勢,即,從自底向上技術驅動轉變為更多自頂向下的應用層的業務驅動,凝練更多的應用和業務模式,支持復雜業務的開放式多方協同和按需集成能力。
眾所周知,對組織而言,通過IT對信息進行有效的管理及利用是其業務成功的關鍵因素,IT是要為業務服務的。中間件技術作為企業計算的核心基礎設施之一,僅僅關注技術本身是不夠的,尤其是在當今全球化趨勢之中謀求生存和發展,IT信息系統及其基礎設施對戰略和業務的有效支持是至關重要的。因此,作為共性的凝練,中間件不僅要從底層的技術入手,將共性技術的特征抽象進中間層,還要更多地把目光投向到業務層面上來,根據業務的需要,驅動自身能力的不斷演進,即,不斷出現的新的業務需要驅動了應用模式和信息系統能力的不斷演進,進而要求中間件不斷地凝練更多的業務共性,提供針對性支撐機制。近年來,這一需求趨勢愈發明顯,越來越多的業務和應用模式被不斷地抽象進入中間件的層次,如業務流程流、業務模型、業務規則、交互應用等等,其結果是中間件凝練的共性功能越來越多,形象的看,中間件的發展趨勢之一就是變得越來越“厚”。
此外,在以互聯網為代表的新技術推動下,伴隨全球化的腳步以及國民經濟和國家信息化建設的高速發展,企業/政府的業務合作和資源共享的廣度、深度和頻度都在不斷的拓展,企業競爭本身已經從單純的個體間行為演變為產業鏈層面上的激烈競爭,而電子商務的建設也呈現出從邊沿向縱深的發展趨勢。企業信息化在ERP打破企業內部界限,形成企業內部無邊界信息流的情況下,全程電子商務將實現企業、伙伴、供應商和客戶的互聯互通,打破企業間的界限,形成跨行業/組織/部門之間無邊界信息流,復雜業務協同往往需要將原本零散、片段的業務流程(人工/自動)和信息優化進一個集成的環境,多個業務實體在互聯網提供的廣泛連通性基礎之上進行開放、靈活、可信的信息交換和互操作,實現企業間的業務協同,及時響應變化并有效的支持業務戰略的交付,從而快速形成新的競爭力優勢。因此,從支持基于互聯網廣泛連通性的復雜業務協同和集成的角度來看,形象地說,中間件的另一發展趨勢是變得越來越“寬”。
2.服務化:中間件將面向服務,易于集成
服務化代表了中間件在提升IT基礎設施的業務敏捷性方面的發展趨勢,即支持對基于互聯網的數據存儲、軟件和服務資源進行標準化的抽象和能力提供,橋接不同業務平臺之間的技術異構性,并提供業務按需靈活組織的能力,讓IT與業務密切匹配,提升組織的業務敏捷性。
企業最根本的痛點在于其易變的業務和僵化的IT基礎設施之間的尖銳矛盾。業務的易變性是企業試圖通過業務差異化而謀求利益最大化的必然結果,是激烈的市場競爭的產物。問題在于,企業常常發現:業務需要改變,但IT卻不能迅速地加以響應。為什么?根本原因就在于目前最重要的軟件開發技術上存在著嚴重問題未能解決。
解決這些問題,技術的本質是復用、松耦合、互操作(標準)等軟件技術的內在機制。軟件復用,即軟件的重用,也叫再用,是指同一事物不作修改或稍加改動就多次重復使用。從軟件復用技術的發展來看,就是不斷提升抽象級別,擴大復用范圍。最早的復用技術是子程序,人們發明子程序,就可以在不同系統之間進行復用了。但是,子程序是最原始的復用,因為這種復用范圍是一個可執行程序內復用,靜態開發期復用,如果子程序修改,意味著所有調用這個子程序的程序必須重新編譯、測試和發布。
為了解決這個問題,發明了組件(或者叫控件),如MS操作系統下的DLL組件。組件將復用提升了一個層次,因為組件可以在一個系統內復用(同一種操作系統),而且是動態、運行期復用。這樣組件可以單獨發展,組件與組件調用者之間的耦合度降低。
為解決分布式網絡計算之間的組件復用,人們發明了企業對象組件,如(Com+,.NET,EJB等),或者叫分布式組件。通過遠程對象代理,來實現企業網絡內復用,不同系統之間復用。
傳統中間件的核心是組件對象的管理。但分布式組件也是嚴重依賴其受控環境,由于構件實現和運行支撐技術之間存在著較大的異構性,不同技術設計和實現的構件之間無法直接組裝式復用。
而現代中間件的發展重要趨勢就是以服務為核心,如WebService,SCA/SDO等。通過服務,或者服務組件來實現更高層次的復用、解耦和互操作,即SOA架構中間件。
因為服務是通過標準封裝,服務組件之間的組裝、編排和重組,來實現服務的復用。而且這種復用,可以在不同企業之間,全球復用,達到復用的最高級別,并且是動態可配置的復用。
SOA架構在松耦合,將中間件的解耦過程也發展到了最后的境界。傳統軟件將軟件之中核心三部分網絡連接、數據轉換、業務邏輯全部耦合在一個整體之中,形成“鐵板一塊”的軟件,“牽一發而動全身”,軟件就難以適應變化。分布式對象技術將連接邏輯進行分離,消息中間件將連接邏輯進行異步處理,增加了更大的靈活性。消息代理和一些分布式對象中間件將數據轉換也進行了分離。而SOA架構,通過服務的封裝,實現了業務邏輯與網絡連接、數據轉換等進行完全的解耦。
軟件互操作技術也存在問題?;ヂ摼W前所未有的開放性意味著各節點可采用不同的中間件技術,對技術細節進行了私有化的約束,構件模型和架構沒有統一標準,從而導致中間件平臺自身在構件描述、發布、發現、調用、互操作協議及數據傳輸等方面呈現出巨大的異構性。各種不良技術約束的結果是軟件系統跨互聯網進行交互變得困難重重,最終導致了跨企業/部門的業務集成和重組難以靈活快速的進行。
在軟件的互操作方面,傳統中間件只是實現了訪問互操作,即通過標準化的API實現了同類系統之間的互操作,而連接互操作還是依賴于特定的訪問協議,如JAVA使用RMI,CORBA使用IIOP等。而SOA通過標準的、支持Internet、與操作系統無關的SOAP協議實現了連接互操作。而且,服務的封裝是采用XML協議,具有自解析和自定義的特性,這樣,基于SOA的中間件還可以實現語義互操作。
因此,下一代的中間件將在軟件的模型、結構、互操作以及開發方法等四個方面進行優化:
模型:構件模型彈性粒度化,即通過抽象層度更高的構件模型,實現具備更高結構獨立性、內容自包含性和業務完整性的可復用構件,即服務。并且在細粒度服務基礎上,提供了更粗粒度的服務封裝方式,即業務層面的封裝,形成業務組件,就可以實現從組件模型到業務模型的全生命周期企業建模的能力。
結構:結構松散化,即,將完整分離服務描述和服務功能實現以及服務的使用者和提供者,從而避免分布式應用系統構建和集成時常見的技術、組織、時間等不良約束。
互操作:交互過程標準化,即,將與互操作相關的內容進行標準化定義,如服務封裝、描述、發布、發現、調用等契約,通信協議以及數據交換格式等等。最終實現訪問互操作、連接互操作和語義互操作。
開發集成方法:應用系統的構建方式由代碼編寫轉為主要通過服務間的快捷組合及編排,完成更為復雜的業務邏輯的按需提供和改善,從而大大簡化和加速應用系統的搭建及重構過程。
總之,服務化體現的是中間件在完整業務復用、靈活業務組織方面的發展趨勢,其核心目標是提升IT基礎設施的業務敏捷性。因此,中間件將成為SOA的主要實現平臺。