之前作過關於中間件的開發,可是一直不知道中間件的具體概念是什麼?這裏轉了一篇網上的文章。原文網址:http://kb.cnblogs.com/page/196448/前端
事情從1946年提及,世界上第一臺電子計算機埃尼阿克誕生,人類進入信息時代。1955年,約翰巴克斯發明了最先的程序語言Fortran,現代意義上的軟件就誕生了。數據庫
1964年,IBM發佈OS/360操做系統,軟件與硬件分離,同時,軟件成爲一個獨立的產業正式登上產業界的舞臺。中間件就是軟件產業不斷髮展過程當中天然產生的。編程
90年代,文頓·瑟夫這位互聯網之父的發明成爲改變IT業的重大革命性創新。互聯網促使分佈式系統和網絡應用的誕生,中間件就是伴隨網絡技術的產生、發展而興起的,能夠說沒有網絡就沒有現代意義上的中間件。由於,網絡環境須要解決異構分佈網絡環境下軟件系統的通訊、互操做、協同、事務、安全等共性問題,提升異構分佈網絡環境下軟件系統的互操做性、可移植性、適應性、可靠性等問題。後端
1968年IBM發佈CICS交易事務控制系統,使得應用軟件與系統服務分離,這是中間件技術萌芽的標誌,由於CICS還不是分佈式環境的產物,所以咱們每每還不將CICS做爲正式的中間件系統。瀏覽器
通常來講,咱們將1990年誕生於ATT公司的BELL實驗室的Tuxedo系統(後來被NOVELL從ATT公司隨着UNIX系統一塊兒買走,後來又賣給了BEA公司,如今歸於ORACLE公司旗下了)做爲中間件的誕生標誌。Tuxedo解決了分佈式交易事務控制問題,中間件開始成爲網絡應用的基礎設施,中間件正式成型,這是最先的交易中間件。安全
1994年IBM發佈消息隊列服務MQ系列產品,解決分佈式系統異步、可靠、傳輸的通信服務問題,消息中間件誕生。服務器
1995年,JAVA之父James Gosling發明JAVA語言,JAVA提供了跨平臺的通用的網絡應用服務,成爲今天中間件的核心技術。JAVA是第一個天生的網絡應用平臺,特別是J2EE發佈以來,JAVA從一個編程語言,演變爲網絡應用架構,成爲應用服務平臺的事實標準。應用服務器中間件,成爲中間件技術的集大成者,也成爲事實上的中間件的核心。網絡
2001年,微軟發佈.NET,中間件演變爲.NET和JAVA兩大技術陣營。但因爲.NET還不是一個徹底開放的技術體系,只有一個玩家,所以,雖然.NET也是一種中間件,但因爲IBM/ORACLE/SUN/SAP等巨頭都無一例外成了JAVA陣營的支持者,所以,咱們習慣上提到中間件時,每每不包括.NET中間件體系。架構
以上談的是歷史,但透過歷史事實背後,爲何會出現中間件,這其中的本質因素是什麼?併發
中間件出現的驅動力主要來自軟件研發過程碰到的種種問題。從軟件出現最先是用於科學計算,而後是計算機輔助設計、輔助製造等等工業應用。在企業管理領域大規模應用後,業務需求不斷的變化、系統不斷增長、流程更復雜、系統愈來愈不堪重負,出現了需求交付方面的重大挑戰,以致於人們用軟件危機來描述軟件工業所面臨的困境。
總結起來,軟件工業面臨的主要問題是四個方面:質量問題、效率問題、互操做問題、靈活應變問題。這些問題今天依然困擾着這個行業。
形成這個局面的緣由是異構性和標準規範的滯後。
異構性表如今計算機的軟硬件之間的異構性,包括硬件(CPU和指令集、硬件結構、驅動程序等),操做系統(不一樣操做系統的API和開發環境)、數據庫(不一樣的存儲和訪問格式)等等。長期以來,高級語言依賴於特定的編譯器和操做系統API來編程,而他們是不兼容的,所以軟件必須依賴於開發和運行的環境。
形成異構的緣由源自市場競爭、技術升級以及保護投資等因素。但願屏蔽異構平臺的差別性問題是促成中間件發展的驅動力之一。
由於異構性,產生的結果是軟件依賴於計算環境,使得各類不一樣軟件之間在不一樣平臺之間不能移植,或者移植很是困難。並且,由於網絡協議和通訊機制的不一樣,這些系統之間還不能有效地相互集成。
形成互操做性很差的緣由,主要是標準的滯後。解決軟件之間的互操做性問題也是促成中間件發展的驅動力之一。
軟件應用領域愈來愈多,相同領域的應用系統之間許多基礎功能和結構是有類似性的,每次開發系統都從零開始絕對不是一種好的方法,也是對質量和效率的很大的傷害。
儘量多地凝練共性並複用以提升軟件開發效率和質量,經過中間件經過提供簡單、一致、集成的開發和運行環境,簡化分佈式系統的設計、編程和管理,這也是中間件發展的重要驅動力。
在長期的探索過程當中,解決軟件的四個問題的辦法總結起來兩個方面:工程方法、平臺與技術。
工程方法就是用工業工程、系統工程的理論、方法和體系來解決軟件研發過程當中的管理問題,包括團隊管理、項目管理、質量控制等等,這就是軟件工程。除了軟件工程方法以外,咱們發明了更多的架構規劃、設計和實施的方法,不斷累積領域的知識與經驗等等。
更好的技術手段,包括更好的程序設計語言、更好的平臺和軟件開發技術,如面向對象、組件開發、面向服務等等。而這方面,在技術上逐漸發展的成果大部分都凝聚在今天的中間件平臺之中。
而這些更好的技術手段,從本質上是經過複用、鬆耦合、互操做(標準)等機制來提升軟件質量、加快軟件研發效率、使研發出來的產品可以相互集成並靈活適應變化。
這些因素逐漸促成了中間件軟件的造成和發展。
異構性表如今計算機的軟硬件之間的異構性,包括硬件(CPU和指令集、硬件結構、驅動程序等),操做系統(不一樣操做系統的API和開發環境)、數據庫(不一樣的存儲和訪問格式)等等。長期以來,高級語言依賴於特定的編譯器和操做系統API來編程,而他們是不兼容的,所以軟件必須依賴於開發和運行的環境。
形成異構的緣由源自市場競爭、技術升級以及保護投資等因素。但願屏蔽異構平臺的差別性問題是促成中間件發展的驅動力之一。
由於異構性,產生的結果是軟件依賴於計算環境,使得各類不一樣軟件之間在不一樣平臺之間不能移植,或者移植很是困難。並且,由於網絡協議和通訊機制的不一樣,這些系統之間還不能有效地相互集成。
形成互操做性很差的緣由,主要是標準的滯後。解決軟件之間的互操做性問題也是促成中間件發展的驅動力之一。
軟件應用領域愈來愈多,相同領域的應用系統之間許多基礎功能和結構是有類似性的,每次開發系統都從零開始絕對不是一種好的方法,也是對質量和效率的很大的傷害。
儘量多地凝練共性並複用以提升軟件開發效率和質量,經過中間件經過提供簡單、一致、集成的開發和運行環境,簡化分佈式系統的設計、編程和管理,這也是中間件發展的重要驅動力。
在長期的探索過程當中,解決軟件的四個問題的辦法總結起來兩個方面:工程方法、平臺與技術。
工程方法就是用工業工程、系統工程的理論、方法和體系來解決軟件研發過程當中的管理問題,包括團隊管理、項目管理、質量控制等等,這就是軟件工程。除了軟件工程方法以外,咱們發明了更多的架構規劃、設計和實施的方法,不斷累積領域的知識與經驗等等。
更好的技術手段,包括更好的程序設計語言、更好的平臺和軟件開發技術,如面向對象、組件開發、面向服務等等。而這方面,在技術上逐漸發展的成果大部分都凝聚在今天的中間件平臺之中。
而這些更好的技術手段,從本質上是經過複用、鬆耦合、互操做(標準)等機制來提升軟件質量、加快軟件研發效率、使研發出來的產品可以相互集成並靈活適應變化。
這些因素逐漸促成了中間件軟件的造成和發展。
講了這麼多,究竟什麼是中間件,也就是中間件的定義是什麼?
針對這個問題,應該說尚未一個標準的定義,或者說尚未徹底取得學術界和產業界的共識。
顧名思義,中間件就是處於中間的軟件。但這種不是從功能,或者特性來定義的概念,而是用位置來定義的名字,就容易被不一樣的人從不一樣角度賦予其不一樣的含義。
IDC曾經給中間件下的定義是中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不一樣的技術之間共享資源,中間件位於客戶機服務器的操做系統之上,管理計算資源和網絡通訊。
我國學術界通常承認的定義是中間件是指網絡環境下處於操做系統、數據庫等系統軟件和應用軟件之間的一種起鏈接做用的分佈式軟件,主要解決異構網絡環境下分佈式應用軟件的互連與互操做問題,提供標準接口、協議,屏蔽實現細節,提升應用系統易移植性(北京大學梅宏)。
中科院軟件所研究員仲萃豪形象地把中間件定義爲平臺+通訊。這個定義限定了只有用於分佈式系統中的此類軟件才能被稱爲中間件,同時此定義還能夠把中間件與支撐軟件和實用軟件區分開來。
中間件處於操做系統軟件與用戶的應用軟件的中間。中間件在操做系統、網絡和數據庫之上,應用軟件的下層,總的做用是爲處於本身上層的應用軟件提供運行與開發的環境,幫助用戶靈活、高效地開發和集成複雜的應用軟件。形象地說就是上下之間的中間。
此外,中間件主要爲網絡分佈式計算環境提供通訊服務、交換服務、語義互操做服務等系統之間的協同集成服務,解決系統之間的互連互通問題。形象地說就是所謂左右之間的中間。
要深刻理解什麼是中間件,形式化的定義當然重要,咱們還得從概念自己去深刻理解其核心特徵纔是最重要的。要理解一個概念,從內涵和外延兩個方面去描述是哲學上很是重要的一套方法體系。
總結分析,中間件有幾個很是重要的特徵是必須具有的:
所謂平臺就是可以獨立運行並自主存在,爲其所支撐的上層系統和應用提供運行所依賴的環境。顯然,不是全部的系統或者應用均可以稱之爲平臺的。中間件是一個平臺,所以中間件是必須獨立存在,是運行時刻的系統軟件,它爲上層的網絡應用系統提供一個運行環境,並經過標準的接口和API來隔離其支撐的系統,實現其獨立性,也就是平臺性。
所以,目前許多的開發語言、組件庫和各類報表設計之類的軟件,很難知足平臺性,將這類軟件叫中間件,是很不合適的。例如,JAVA是一種語言,這種語言的開發工具和開發框架,如Eclipse、JBuilder、Struts,Hibernate等等就不能稱爲中間件,充其量叫中間件開發工具,而不能叫中間件自己,就如同各類建築工程設備和機械,如弔臂、攪拌機等不能叫建築,而只能成爲建築工具同樣。而J2EE應用服務器提供JAVA應用的運行環境,就是經典的中間件。
中間件的最終目的是解決上層應用系統的問題,並且也是軟件技術發展到今天對應用軟件提供最完善完全的解決方案。
高級程序設計語言的發明,使得軟件開發變成一個獨立的科學和技術體系,而操做系統平臺的出現,使得應用軟件經過標準的API接口,實現了軟件與硬件的分離。
現代面向服務的中間件在軟件的模型、結構、互操做以及開發方法等四個方面提供了更強的應用支撐能力:
模型:構件模型彈性粒度化,即經過抽象層度更高的構件模型,實現具有更高結構獨立性、內容自包含性和業務完整性的可複用構件,即服務。而且在細粒度服務基礎上,提供了更粗粒度的服務封裝方式,即業務層面的封裝,造成業務組件,就能夠實現從組件模型到業務模型的全生命週期企業建模的能力。
結構:結構鬆散化,即,將完整分離服務描述和服務功能實現以及服務的使用者和提供者,從而避免分佈式應用系統構建和集成時常見的技術、組織、時間等不良約束。
互操做:交互過程標準化,即,將與互操做相關的內容進行標準化定義,如服務封裝、描述、發佈、發現、調用等契約,通訊協議以及數據交換格式等等。最終實現訪問互操做、鏈接互操做和語義互操做。
開發集成方法:應用系統的構建方式由代碼編寫轉爲主要經過服務間的快捷組合及編排,完成更爲複雜的業務邏輯的按需提供和改善,從而大大簡化和加速應用系統的搭建及重構過程。
而要最終解決軟件的質量問題、效率問題、互操做問題、靈活應變問題這四大問題,須要在軟件技術的內在結構(Structure)、架構(Architecture)層面進行思考。
解決這些問題,技術的本質是複用、鬆耦合、互操做(標準)等軟件技術的內在機制。這也是中間件技術和產品的本質特徵。
軟件複用,即軟件的重用,也叫再用,是指同一事物不做修改或稍加改動就屢次重複使用。從軟件複用技術的發展來看,就是不斷提高抽象級別,擴大複用範圍。最先的複用技術是子程序,人們發明子程序,就能夠在不一樣系統之間進行復用了。可是,子程序是最原始的複用,由於這種複用範圍是一個可執行程序內複用,靜態開發期複用,若是子程序修改,意味着全部調用這個子程序的程序必須從新編譯、測試和發佈。
複用對象複用範圍
複用對象 | 複用範圍 |
---|---|
子程序 | 一個可執行程序內複用,靜態開發期 複用 |
組件(DLL,Com等) | 系統內複用,動態運行期複用 |
企業對象組件(Com+,.NET,EJB等) | 企業網絡內複用,不一樣系統之間複用 |
服務 (如WebService,SCA/SDO) | 不一樣企業之間,全球複用,動態可配置 |
爲了解決這個問題,發明了組件(或者叫控件),如MS操做系統下的DLL組件。組件將複用提高了一個層次,由於組件能夠在一個系統內複用(同一種操做系統),並且是動態、運行期複用。這樣組件能夠單獨發展,組件與組件調用者之間的耦合度下降。
爲解決分佈式網絡計算之間的組件複用,人們發明了企業對象組件,如(COM+, .NET, EJB等),或者叫分佈式組件。經過遠程對象代理,來實現企業網絡內複用,不一樣系統之間複用。
傳統中間件的核心是組件對象的管理。但分佈式組件也是嚴重依賴其受控環境,因爲構件實現和運行支撐技術之間存在着較大的異構性,不一樣技術設計和實現的構件之間沒法直接組裝式複用。
而現代中間件的發展重要趨勢就是以服務爲核心,如WebService, SCA/SDO等。經過服務,或者服務組件來實現更高層次的複用、解耦和互操做,即SOA架構中間件。
由於服務是經過標準封裝,服務組件之間的組裝、編排和重組,來實現服務的複用。並且這種複用,能夠在不一樣企業之間,全球複用,達到複用的最高級別,而且是動態可配置的複用。
基於SOA架構的中間件,在鬆耦合解耦過程也發展到了最後的境界。傳統軟件將軟件之中核心三部分——網絡鏈接、數據轉換、業務邏輯所有耦合在一個總體之中,造成鐵板一塊的軟件,牽一髮而動全身,軟件就難以適應變化。分佈式對象技術將「鏈接邏輯」進行分離,消息中間件將「鏈接邏輯」進行異步處理,增長了更大的靈活性。消息代理和一些分佈式對象中間件將數據轉換也進行了分離。而SOA架構,經過服務的封裝,實現了業務邏輯與網絡鏈接、數據轉換等進行徹底的解耦。
軟件技術的不斷解耦的過程
傳統軟件互操做技術也存在問題。互聯網史無前例的開放性意味着各節點可採用不一樣的中間件技術,對技術細節進行了私有化的約束,構件模型和架構沒有統一標準,從而致使中間件平臺自身在構件描述、發佈、發現、調用、互操做協議及數據傳輸等方面呈現出巨大的異構性。各類不良技術約束的結果是軟件系統跨互聯網進行交互變得困難重重,最終致使了跨企業/部門的業務集成和重組難以靈活快速的進行。
在軟件的互操做方面,傳統中間件只是實現了訪問互操做,即經過標準化的API實現了同類系統之間的調用互操做,而鏈接互操做仍是依賴於特定的訪問協議,如JAVA使用RMI,CORBA使用IIOP等。而SOA經過標準的、支持Internet、與操做系統無關的SOAP協議實現了鏈接互操做。並且,服務的封裝是採用XML協議,具備自解析和自定義的特性,這樣,基於SOA的中間件還能夠實現語義互操做。
基於服務的中間件
總之,服務化體現的是中間件在完整業務複用、靈活業務組織方面的發展趨勢,其核心目標是提高IT基礎設施的業務敏捷性。所以,中間件將成爲SOA的主要實現平臺。
中間件所包括的範圍十分普遍,針對不一樣的應用需求涌現出多種各具特點的中間件產品。從功能性外延來看,中間件包括交易中間件、消息中間件、集成中間件等各類功能性的中間件技術和產品。
如今,中間件已經成爲網絡應用系統開發、集成、部署、運行和管理必不可少的工具。因爲中間件技術涉及網絡應用的各個層面,涵蓋從基礎通信、數據訪問到應用集成等衆多的環節,所以,中間件技術呈現出多樣化的發展特色。
根據中間件在軟件支撐和架構的定位來看,基本上能夠分爲三大類產品:應用服務類中間件、應用集成類中間件、業務架構類中間件。
爲應用系統提供一個綜合的計算環境和支撐平臺,包括對象請求代理(ORB)中間件、事務監控交易中間件、JAVA應用服務器中間件等。
隨着對象技術與分佈式計算技術的發展,二者相互結合造成了分佈對象計算,並發展爲當今軟件技術的主流方向。1990年末,對象管理組織OMG首次推出對象管理結構OMA(Object Management Architecture),對象請求代理(Object Request Broker)是這個模型的核心組件。它的做用在於提供一個通訊框架,透明地在異構的分佈計算環境中傳遞對象請求。CORBA規範包括了ORB的全部標準接口,是對象請求代理的典型表明。
隨着分佈計算技術的發展,分佈應用系統對大規模的事務處理提出了需求,好比商業活動中大量的關鍵事務處理。事務處理監控界於Client和Server之間,進行事務管理與協調、負載平衡、失敗恢復等,以提升系統的總體性能。它能夠被看做是事務處理應用程序的操做系統。這類被稱爲交易中間件,適用於聯機交易處理系統,主要功能是管理分佈於不一樣計算機上的數據的一致性,保障系統處理能力的效率與均衡負載。交易中間件所遵循的主要標準是X/open DTP模型,典型的產品是Tuxedo。
JAVA從2.0企業版以後,不只僅是一種編程語言,並且演變爲一個完整的計算環境和企業架構。爲JAVA應用提供組件容器,用來構造Internet應用和其它分佈式構件應用,是企業實施電子商務的基礎設施,這種應用服務器中間件發展到爲企業應用提供數據訪問、部署、遠程對象調用、消息通訊、安全服務、監控服務、集羣服務等強化應用支撐的服務。使得JAVA應用服務器成爲了事實上的應用服務器工業標準。因爲它的開放性,使得交易中間件和對象請求代理逐漸融合到應用服務器之中。典型的應用服務器產品包括IBM Websphere Application Server、Oracle Weblogic Application Server和金蝶Apusic Application Server等。
應用集成類中間件是提供各類不一樣網絡應用系統之間的消息通訊、服務集成和數據集成的功能,包括常見的消息中間件、企業集成EAI、企業服務總線以及相配套的適配器等。
消息中間件指的是利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通訊來進行分佈式系統的集成。經過提供消息傳遞和消息排隊模型,它可在分佈環境下擴展進程間的通訊,並支持多通信協議、語言、應用程序、硬件和軟件平臺,實現應用系統之間的可靠異步消息通訊,可以保障數據在複雜的網絡中高效、穩定、安全、可靠的傳輸,並確保傳輸的數據不錯、不重、不漏、不丟。目前流行的消息中間件產品有IBM的MQSeries、 BEA的MessageQ、金蝶Apusic MQ等。
企業應用整合,僅指企業內部不一樣應用系統之間的互連,以期經過應用整合實現數據在多個系統之間的同步和共享。這種相似集線器的架構模式是在基於消息的基礎上,引入了前置機-服務器的概念,使用一種集線器/插頭(hub-and-spoke)的架構,將消息路由信息的管理和維護從前置機遷移到了服務器上,巧妙的把集成邏輯和業務邏輯分離開來,大大增長了系統彈性。因爲前置機和服務器之間再也不直接通訊,每一個前置機只經過消息和服務器之間通訊,將複雜的網狀結構變成了簡單的星型結構。典型的企業應用集成EAI的產品包括Tibico和Informatica等公司產品。
隨着SOA思想和技術的逐漸成熟,EAI發展到透過業務服務的概念來提供IT的各項基本應用功能,讓這些服務能夠自由地被排列組合、融會貫通,以便在將來能隨時彈性配合新的需求而調整。Web Services是SOA的一種具體實現方式,SOA的世界是由服務提供者(Service Provider)、服務請求者(Service Requester) 以及服務代理者(Service Broker)所組成,目標是將全部具有價值的IT資源,不管是舊的或新的,統統都可以透過Web Services的包裝,成爲隨取即用的IT資產,並可將各類服務快速彙整,開發出組合式應用,達到整合即開發的目的。SOA的架構只是實現和解決了服務模塊間調用的互操做問題,爲了更好的服務於企業應用,引入了企業服務總線的應用架構(Enterprise Service Bus,ESB)。這一構架是基於消息通訊、智能路由、數據轉換等技術實現的。ESB提供了一個基於標準的鬆散應用耦合模式,這就是企業服務總線中間件,是一種綜合的企業集成中間件。典型的ESB產品包括IBM Websphere ESB、Oracle公司的Weblogic ESB以及金蝶Apusic ESB等。
做爲共性的凝練,中間件不只要從底層的技術入手,將共性技術的特徵抽象進中間層,還要更多地把目光投向到業務層面上來,根據業務的須要,驅動自身能力的不斷演進,即,不斷出現的新的業務須要驅動了應用模式和信息系統能力的不斷演進,進而要求中間件不斷地凝練更多的業務共性,提供針對性支撐機制。近年來,這一需求趨勢愈發明顯,愈來愈多的業務和應用模式被不斷地抽象進入中間件的層次,如業務流程流、業務模型、業務規則、交互應用等等,其結果是中間件凝練的共性功能愈來愈多,中間件的業務化和領域化的趨勢很是明顯。
業務架構類中間件包括業務流程、業務管理和業務交互等幾個業務領域的中間件。
業務流程是處理業務模型的很是重要方法。管理流程與各職能部門和業務單元有密切關係,須藉各部門間的緊密協調,以達到企業運營和管理功能的目標。在業務流程支持方面,從早期的WfMC定義的工做流,到基於服務的業務流程規範BPEL,由業務流程的支撐,逐漸造成了完整的業務流程架構模型,包括流程建模、流程引擎、流程執行、流程監控和流程分析等。有名的業務流程中間件包括基於工做流的IBM Lotus Workflow,基於BPEL的IBM Webshpere Process Server以及同時支持工做流和BPEL的金蝶Apusic BPM等。
業務管理就是對業務對象的建模和業務規則的定義、運行和監控的中間件平臺。策略管理員和開發人員將業務邏輯捕獲爲業務規則。使用規則管理器能夠將規則輕鬆地嵌入 Web、現有應用程序和後臺辦公應用程序。常見的業務管理中間件包括IBM Websphere ILOG 業務規則管理系統,金蝶BOS等。
業務交互的中間件平臺提供組織的合做夥伴、員工和客戶經過WEB和移動設備等交互工具,實現基於角色、上下文、操做、位置、偏好和團隊協做需求的個性化的用戶體驗。這種門戶服務器軟件基於標準Portlet組合的應用程序訪問框架,實現用戶集成和交互集成,構建靈活、基於 SOA 的應用架構。典型的門戶中間件有IBM Websphere Portal Server和金蝶Apusic Portal Server等。
中間件是互聯網時代的IT基礎設施,提供業務的靈活性,消除信息孤島,提升IT的研發和運營效率。做爲網絡計算的核心基礎設施,中間件正在呈現出服務化、自治化、業務化、一體化等諸多新的發展趨勢,中間件進入2.0時代,將極大提高互聯網統一計算平臺的敏、睿、融、和能力。
以互聯網爲核心的多網融合產生了豐富多樣的新型網絡應用模式,做爲主流的應用運行支撐環境,中間件無處不在,愈來愈多的應用模式被抽象到中間件層,中間件將變寬變厚。
隨着SOA技術逐漸成爲主流,以及異構系統的集成問題日益嚴峻,中間件將向面向服務、易於集成的方向發展。
中間件產品的種類日趨多樣(如交易中間件、消息中間件、應用服務器、集成中間件、業務中間件等),但其技術架構將向一體化的方向發展,主要包括:
統一內核,易於演化:各大廠商的中間件產品將構建在統一內核之上,使其易於平臺演化。
統一編程模型,易於開發:不一樣中間件產品提供了不一樣的編程模型,這些編程模型將趨向統一,從而達到易於開發的目的。
統一管理模型,易於系統維護:不一樣中間件產品提供了不一樣的管理工具與管理手段,這些管理工具與手段將趨向統一,使其易於管理,下降運維成本。
中間件產品將成爲雲計算的支撐平臺,使應用易於交付。
一個大膽的設想是:將來五年,瀏覽器將統一前端,然後端平臺(中間件、操做系統、 數據庫)走向深度融合。(對中間件的將來發展趨勢的詳細介紹參加另文《中間件技術的發展趨勢分析》,在此不作詳細論述。)
綜上所述,咱們能夠認爲中間件是一種獨立的系統軟件平臺,爲網絡應用軟件提供綜合的服務和完整的計算環境,藉助這種軟件使得網絡應用可以實現集成,達到業務的協同,實現業務的靈活性。
異構性表如今計算機的軟硬件之間的異構性,包括硬件(CPU和指令集、硬件結構、驅動程序等),操做系統(不一樣操做系統的API和開發環境)、數據庫(不一樣的存儲和訪問格式)等等。長期以來,高級語言依賴於特定的編譯器和操做系統API來編程,而他們是不兼容的,所以軟件必須依賴於開發和運行的環境。
形成異構的緣由源自市場競爭、技術升級以及保護投資等因素。但願屏蔽異構平臺的差別性問題是促成中間件發展的驅動力之一。
由於異構性,產生的結果是軟件依賴於計算環境,使得各類不一樣軟件之間在不一樣平臺之間不能移植,或者移植很是困難。並且,由於網絡協議和通訊機制的不一樣,這些系統之間還不能有效地相互集成。
形成互操做性很差的緣由,主要是標準的滯後。解決軟件之間的互操做性問題也是促成中間件發展的驅動力之一。
軟件應用領域愈來愈多,相同領域的應用系統之間許多基礎功能和結構是有類似性的,每次開發系統都從零開始絕對不是一種好的方法,也是對質量和效率的很大的傷害。
儘量多地凝練共性並複用以提升軟件開發效率和質量,經過中間件經過提供簡單、一致、集成的開發和運行環境,簡化分佈式系統的設計、編程和管理,這也是中間件發展的重要驅動力。
在長期的探索過程當中,解決軟件的四個問題的辦法總結起來兩個方面:工程方法、平臺與技術。
工程方法就是用工業工程、系統工程的理論、方法和體系來解決軟件研發過程當中的管理問題,包括團隊管理、項目管理、質量控制等等,這就是軟件工程。除了軟件工程方法以外,咱們發明了更多的架構規劃、設計和實施的方法,不斷累積領域的知識與經驗等等。
更好的技術手段,包括更好的程序設計語言、更好的平臺和軟件開發技術,如面向對象、組件開發、面向服務等等。而這方面,在技術上逐漸發展的成果大部分都凝聚在今天的中間件平臺之中。
而這些更好的技術手段,從本質上是經過複用、鬆耦合、互操做(標準)等機制來提升軟件質量、加快軟件研發效率、使研發出來的產品可以相互集成並靈活適應變化。
這些因素逐漸促成了中間件軟件的造成和發展。