有時會聽到“中間件”這個詞,不懂,隐約地覺得很高大上。我直覺那是個跟小型機、UNIX/LINUX、JAVA等牽扯在一起的東東。
一、究竟啥是中間件?
網絡上竟然找不到一個确切的定義。總結起來,中間件是一種獨立的軟體,位于兩個或多個系統之間,起聯結通信、資料處理作用。(在衆多關于中間件的定義中,比較普遍被接受的是IDC表述的:中間件是一種獨立的系統軟體或服務程式,分布式應用軟體借助這種軟體在不同的技術之間共享資源,中間件位于客戶機伺服器的作業系統之上,管理計算資源和網絡通信。)
IDC對中間件的定義表明,中間件是一類軟體,而非一種軟體;中間件不僅僅實作互連,還要實作應用之間的互操作;中間件是基于分布式處理的軟體,最突出的特點是其網絡通信功能。
二、中間件有以下特征或優點:
1、獨立性。
中間件獨立存在。是運作時刻的系統軟體,為上層的網絡應用系統提供一個運作環境,并通過标準的接口和API來隔離其支撐的系統,實作獨立性。
例如j2ee應用伺服器,提供JAVA應用的運作環境,是經典的中間件。
2、應用支撐
中間件在作業系統、網絡和資料庫之上,應用軟體的下層,總的作用是為處于自己上層的應用軟體提供運作與開發的環境,幫助使用者靈活、高效地開發和內建複雜的應用軟體。
3、複用
這個好了解。
4、松耦合
利于整個系統結構邏輯分離,解耦。
5、互操作性
中間件通過标準化API和接口,實作了不同系統(同類或異構)之間的調用互操作。

三、中間件與SOA的關系
基于中間件的定義和作用,讓人覺得它很像SOA。那麼二者是啥關系?
SOA與中間件的關系最為緊密,可以了解為魚與水的關系。這種關系包括兩層意思:一是說采用中間件産品可以很好的建構SOA的應用;再就是采用中間件産品開發出來的應用,将很容易被整合進SOA架構。