中間件(Middleware)

中間件

Middleware一般指本詞條

中間件是一種獨立的系統軟體或服務程式,分散式套用軟體藉助這種軟體在不同的技術之間共享資源。中間件位於客戶機/ 伺服器的作業系統之上,管理計算機資源和網路通訊。是連線兩個獨立應用程式或獨立系統的軟體。相連線的系統,即使它們具有不同的接口,但通過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞。通過中間件,應用程式可以工作於多平台或OS環境。

基本介紹

  • 中文名:中間件
  • 外文名:middleware
  • 實質:獨立的系統軟體或服務程式
  • 性質:計算機用語
  • 相關概念:企業服務匯流排
基本概念,相關概念,基本特點,3.1 特長,3.2 局限,發展沿革,4.1 CICS,4.2 伺服器,發展現狀,分類,趨勢展望,7.1 趨勢特徵,7.2 需求發展,7.3 負載均衡,

基本概念

英文釋義
Middleware is computer software that connects software components and applications. The software consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network. This technology evolved to provide for interoperability in support of the move to coherent distributed architectures, which are used most often to support and simplify complex, distributed applications. It includes web servers, transaction monitors, and messaging-and-queueing software.
中間件是一類連線軟體組件和套用的計算機軟體,它包括一組服務。以便於運行在一台或多台機器上的多個軟體通過網路進行互動。該技術所提供的互操作性,推動了一致分散式體系架構的演進,該架構通常用於支持並簡化那些複雜的分散式應用程式,它包括web伺服器、事務監控器訊息佇列軟體
中間件(middleware)是基礎軟體的一大類,屬於可復用軟體的範疇。顧名思義,中間件處於作業系統軟體與用戶的套用軟體的中間。
中間件在作業系統、網路和資料庫之上,套用軟體的下層,總的作用是為處於自己上層的套用軟體提供運行與開發的環境,幫助用戶靈活、高效地開發和集成複雜的套用軟體。在眾多關於中間件的定義中,比較普遍被接受的是IDC表述的:中間件是一種獨立的系統軟體或服務程式,分散式套用軟體藉助這種軟體在不同的技術之間共享資源,中間件位於客戶機伺服器的作業系統之上,管理計算資源和網路通信
IDC對中間件的定義表明,中間件是一類軟體,而非一種軟體;中間件不僅僅實現互連,還要實現套用之間的互操作;中間件是基於分散式處理的軟體,最突出的特點是其網路通信功能。
中間件是位於平台(硬體和作業系統)和套用之間的通用服務,如圖1所示,這些服務具有標準的程式接口和協定。針對不同的作業系統和硬體平台,它們可以有符合接口和協定規範的多種實現。
中間件
圖1 中間件概念模型圖
也許很難給中間件一個嚴格的定義,但中間件應具有如下一些特點:
①滿足大量套用的需要;
②運行於多種硬體和OS平台;
③支持分布計算,提供跨網路、硬體和OS平台的透明性的套用或服務的互動;
④支持標準的協定;
⑤支持標準的接口。
由於標準接口對於可移植性、標準協定對於互操作性的重要性,中間件已成為許多標準化工作的主要部分。對於套用軟體開發,中間件遠比作業系統和網路服務更為重要,中間件提供的程式接口定義了一個相對穩定的高層套用環境,不管底層的計算機硬體和系統軟體怎樣更新換代,只要將中間件升級更新,並保持中間件對外的接口定義不變,套用軟體就幾乎不需任何修改,從而保護了企業在套用軟體開發和維護中的重大投資。

相關概念

·企業服務匯流排(ESB : Enterprise Service Bus):ESB 是一種開放的、基於標準的分散式同步或異步信息傳遞中間件。通過 XML、Web Service接口以及標準化基於規則的路由選擇文檔等支持,ESB 為企業應用程式提供安全互用性。
·事務處理(TP:Transaction Processing)監控器:為發生在對象間的事務處理提供監控功能,以確保操作成功實現。
·分散式計算環境(DCE:Distributed Computing Environment):指創建運行在不同平台上的分散式應用程式所需的一組技術服務。
·遠程過程調用(RPC:Remote Procedure Call):指客戶機向伺服器傳送關於運行某程式的請求時所需的標準。
·對象請求代理(ORB:Object Request Broker):為用戶提供與其他分散式網路環境中對象通信的接口。
·資料庫訪問中間件(Database Access Middleware):支持用戶訪問各種作業系統或應用程式中的資料庫。SQL 是該類中間件的其中一種。
·信息傳遞(Message Passing):電子郵件系統是該類中間件的其中一種。
·基於XML的中間件(XML-Based Middleware):XML 允許開發人員為實現在Internet中交換結構化信息而創建文檔。

基本特點

3.1 特長

滿足大量套用的需要 ;
運行於多種硬體和OS平台 ;
支持分散式計算,提供跨網路、硬體和OS平台的透明性的套用或服務的互動功能 ;
支持標準的協定 ;
支持標準的接口。

3.2 局限

中間件能夠禁止作業系統和網路協定的差異,為應用程式提供多種通訊機制;並提供相應的平台以滿足不同領域的需要。因此,中間件為應用程式提供了一個相對穩定的高層套用環境。然而,中間件服務也並非“萬能藥”。中間件所應遵循的一些原則離實際還有很大距離。多數流行的中間件服務使用專有的API和專有的協定,使得套用建立於單一廠家的產品,來自不同廠家的實現很難互操作。有些中間件服務只提供一些平台的實現,從而限制了套用在異構系統之間的移植。套用開發者在這些中間件服務之上建立自己的套用還要承擔相當大的風險,隨著技術的發展他們往往還需重寫他們的系統。儘管中間件服務提高了分布計算的抽象化程度,但套用開發者還需面臨許多艱難的設計選擇,例如,開發者還需決定分布套用在client方和server方的功能分配。通常將表示服務放在client以方便使用顯示設備,將數據服務放在server以靠近資料庫,但也並非總是如此,何況其它套用功能如何分配也是不容易確定的。

發展沿革

4.1 CICS

最早具有中間件技術思想及功能的軟體是IBM的CICS,但由於CICS不是分散式環境的產物,因此人們一般把Tuxedo作為第一個嚴格意義上的中間件產品。Tuxedo是1984年在當時屬於AT&T的貝爾實驗室開發完成的,但由於分散式處理當時並沒有在商業套用上獲得像今天一樣的成功,Tuxedo在很長一段時期里只是實驗室產品,後來被Novell收購,在經過Novell並不成功的商業推廣之後,1995年被BEA公司收購。儘管中間件的概念很早就已經產生,但中間件技術的廣泛運用卻是在10年之中。BEA公司1995年成立後收購Tuxedo才成為一個真正的中間件廠商,IBM的中間件MQSeries也是90年代的產品,其它許多中間件產品也都是最近幾年才成熟起來。
1998年IDC公司對於中間件有一個定義,並根據用途將其劃分為6個類別。如今所保留下來的只有訊息中間件和交易中間件,其他的已經被逐步融合到其他產品中了,被包裹進去了,在市場上已經沒有單獨的產品形態出現了。例如,當時有一個叫螢幕數據轉換的中間件,其主要是針對IBM大機終端而設計產品,用於將IBM大機終端的字元界面轉化為用戶所喜歡的圖形界面,類似的東西當時都稱為中間件。但隨著IBM大機環境越來越少,當時盛行一時的此類中間件如今已經很少再被單獨提及。

4.2 伺服器

2000年前後,網際網路盛行起來,隨之產生了一個新的東西,就是套用伺服器。實際上,交易中間件也屬於是套用伺服器,為了區分,人們把傳統的交易中間件稱為分布交易中間件,因它主要套用在分散式環境下,而將新的套用伺服器,稱為J2EE中間件,到目前為止,這都是市場上非常熱門的產品。
EAI概念出來之後,市場上又推出了一些新的軟體產品,例如工作流、Portal等,但從分類上不知道怎么歸類,向上不能夠劃歸套用,往下又不能歸入作業系統,於是就把它歸入了中間件,如此中間件的概念更加擴大了。市場上對於中間件,各家的說法不一,客觀上也導致了理解上的複雜性。

發展現狀

技術現狀
中間件技術是在克服複雜網路套用的共性問題中不斷發展和壯大起來的,這些問題可以歸納為四個方面:
1、從計算環境來看:中間件面對的是一個複雜、不斷變化的計算環境,要求中間件技術具有足夠的靈活性和可成長性;
2、從資源管理的角度來看:作業系統和資料庫管理系統管理的是有限資源,資源種類有限,資源量也有限,而中間件需要管理的資源類型(數據、服務、套用)更豐富,且資源擴展的邊界是發散的;
3、從套用支撐角度來看:中間件需要提供分布套用開發、集成、部署和運行管理的整個生命周期的總體運行模型;
4、從套用的角度來看:利用中間件完成的往往是複雜、大範圍的企業級套用,其關係錯綜複雜,流程交織。例如客戶關係管理系統需要集成多個企業內部套用,而供應鏈管理則涉及企業之間的套用集成
因此,由於網路套用的複雜性,特別是分布、異構和自治等特點,決定了中間件技術和產品的形態多樣性。中間件技術已經形成一個豐富的譜系(圖1),並正在向上(套用框架和普適服務)和向下(融合作業系統、資料庫管理系統的功能)兩個方向不斷延伸,並在向更寬廣的套用領域拓展。
圖 1中間件技術譜系
在國內,國防科技大學北京大學、北航、中科院軟體所、東南大學等大學和院所很早就投入到中間件技術的研究中,並形成了一系列的成果。在國家發改委、信息產業部電子發展基金和國家科技部863計畫和政府其他基金資助下,通過各項目研究單位和國內骨幹軟體企業多年的不懈努力,國內在基礎中間件領域已經形成豐富的技術積累,並在CORBA技術(國防科技大學中創軟體)、訊息中間件技術(中科院軟體所)、J2EE套用伺服器(北京大學)、Web Service(北航)等方面在技術上基本與國外保持同步發展的水平。
以CORBA技術為例,國防科技大學與中創軟體對象管理組織發布的CORBA及MDA標準體系為依據,並結合J2EE、XML、Web Service等標準,對ORB、CORBA 構件模型及其運行支撐技術、企業協同框架(CCA)、EAI Profile等進行了深入的研究,近3年在國內一級刊物和國際會議上發表50多篇文章,向對象管理組織(OMG)提交9項標準提案,已經從標準跟從階段進入參與階段,研究論文和成果在國際上得到廣泛引用,國防科技大學CORBA研究成果StarBus並獲得國家科技進步二等獎。
產品與市場現狀
中間件作為基礎軟體的重要組成,已與作業系統、資料庫齊頭並進,在世界範圍內呈現出迅猛發展的勢頭,已經形成一個巨大的產業。中間件在國內整個軟體行業中應該是發展速度最快的市場之一。中國軟體產業經過20年的發展,很多部門的信息化建設都走過了關鍵業務套用和部門級套用的階段,現在開始向企業級套用轉變。所謂企業級套用,最為人們所重視的就是各類信息資源之間如何關聯、整合、協同、互動和按需服務,這些都是中間件能夠發揮巨大作用的空間所在。當然,中國軟體產業整體上還比較弱,整個社會信息化的程度無論在廣度、深度方面都還不夠,這些自然也限制了國內軟體產業及中間件的市場規模。隨著國家信息化建設的不斷深入,社會對套用軟體,特別是對網路套用起支撐作用的中間件產品的巨大需求是不爭的事實,國內中間件的市場才剛剛開始啟動,存在巨大的發展機會和空間。
網路套用中間件逐漸在基礎中間件、套用中間件、套用框架等三個層面形成激烈的產品競爭和市場競爭格局。從三個方面的產品來分析,國外廠商仍然占主導地位,主流廠商包括IBM,BEA,ORACLE,HP,Iona等,而一些新型的中間件公司,如Tibco,webMethod,Vitria也開始攜其套用集成中間件或業務流程管理中間件進入中國市場。而國內一些規模較大的軟體公司也開始進入此領域,形成了包括中創軟體商用中間件、金蝶Apusic東方通科技中關村科技、北京匯金科技、中和威等在內的一批中間件專業廠商,東軟、用友、信雅達等套用集成商也大量投入中間件產品的研發,國產中間件已經形成了比較完整產品體系,例如,中創軟體、中和威推出了基於CORBA標準的通信中間件產品;中創軟體、金蝶軟體、東方通技、北京匯金科技等公司分別推出了遵循J2EE規範的套用伺服器產品;中創軟體、中科院軟體所、東方通科技、北京匯金科技推出了訊息中間件產品;中創軟體推出了符合OMG標準的企業套用集成套件InforEAI;此外,還有大量的公司投入到中間件開發平台和構件庫的建設中。國產中間件已經廣泛成功套用於我國政府、交通、金融、證券、保險、稅務、電信、移動、教育、軍事等行業或領域的信息化建設,並成為大型套用系統建設不可缺少的一環。
同國外廠商比較,國內中間件廠商的整體實力還存在很大的差距。如果僅僅從產品的功能上看,我們似乎並不比別人缺什麼,但圍繞中間件產品從研發到成功套用的全周期來看,我們還缺很多東西,暫時也很難對國外產品形成真正的競爭威脅。應該說國內中間件產品的成熟度應該是沒有問題的,但要市場普遍接受國產中間件產品,卻還有一個相當長的過程。以中創軟體Infor系列中間件為例,我們提供的產品可在各類主流作業系統平台和主流資料庫上穩定可靠地運行,並可與通行的各種開發工具緊密融合,產品都具備豐富的系統管理功能,並已經在大量行業中獲得了成功套用經驗,即使如此,要真正形成具有號召力的中間件品牌,還有艱巨的路需要一步步去走。同國外優秀中間件產品相比,我們還有大量需要借鑑和學習的地方,例如在產品的發展方向把握、持續開發能力、產品化工作、市場運作等方面,我們都還要繼續加強,不斷完善。當然,國內中間件廠商及其產品也具有非常明顯的優勢,我們貼近國家信息化的現實需求,已經積累了豐富的領域問題和中間件套用經驗,我們的中間件產品可以在實用性和易用性方面更加貼近本地化市場需求,在技術支持和服務方面也具有相當的優勢。

分類

中間件分類(IDC的分類):大致可分為六類:終端仿真/螢幕轉換中間件、數據訪問中間件、遠程過程調用中間件、訊息中間件、交易中間件、對象中間件。
中間件所包括的範圍十分廣泛,針對不同的套用需求湧現出多種各具特色的中間件產品。但至今中間件還沒有一個比較精確的定義,因此,在不同的角度或不同的層次上,對中間件的分類也會有所不同。由於中間件需要禁止分布環境中異構的作業系統和網路協定,它必須能夠提供分布環境下的通訊服務,我們將這種通訊服務稱之為平台。基於目的和實現機制的不同,我們將平台分為以下主要幾類:
遠程過程調用中間件(Remote Procedure Call)
面向訊息的中間件(MesSAge-Oriented Middleware)
對象請求代理中間件(object RequeST Brokers)
它們可向上提供不同形式的通訊服務,包括同步、排隊、訂閱發布、廣播等等,在這些基本的通訊平台之上,可構築各種框架,為應用程式提供不同領域內的服務,如事務處理監控器、分布數據訪問、對象事務管理器OTM等。平台為上層套用禁止了異構平台的差異,而其上的框架又定義了相應領域內的套用的系統結構、標準的服務組件等,用戶只需告訴框架所關心的事件,然後提供處理這些事件的代碼。當事件發生時,框架則會調用用戶的代碼。用戶代碼不用調用框架,用戶程式也不必關心框架結構、執行流程、對系統級API的調用等,所有這些由框架負責完成。因此,基於中間件開發的套用具有良好的可擴充性、易管理性、高可用性和可移植性。
遠程過程調用
遠程過程調用是一種廣泛使用的分散式應用程式處理方法。一個應用程式使用RPC來“遠程”執行一個位於不同地址空間里的過程,並且從效果上看和執行本地調用相同。事實上,一個RPC套用分為兩個部分:server和Client。server提供一個或多個遠程過程;client向server發出遠程調用。server和client可以位於同一台計算機,也可以位於不同的計算機,甚至運行在不同的作業系統之上。它們通過網路進行通訊。相應的stub和運行支持提供數據轉換和通訊服務,從而禁止不同的作業系統和網路協定。在這裡RPC通訊是同步的。採用執行緒可以進行異步調用
在RPC模型中,client和server只要具備了相應的RPC接口,並且具有RPC運行支持,就可以完成相應的互操作,而不必限制於特定的server。因此,RPC為client/server分散式計算提供了有力的支持。同時,遠程過程調用RPC所提供的是基於過程的服務訪問,client與server進行直接連線,沒有中間機構來處理請求,因此也具有一定的局限性。比如,RPC通常需要一些網路細節以定位server;在client發出請求的同時,要求server必須是活動的等等。
面向訊息的中間件
MOM指的是利用高效可靠的訊息傳遞機制進行平台無關的數據交流,並基於數據通信來進行分散式系統的集成。通過提供訊息傳遞和訊息排隊模型,它可在分布環境下擴展進程間的通信,並支持多通訊協定、語言、應用程式、硬體軟體平台。流行的MOM中間件產品有IBM的MQSeries、BEA的MessageQ等。訊息傳遞和排隊技術有以下三個主要特點:
1、通訊程式可在不同的時間運行
程式不在網路上直接相互通話,而是間接地將訊息放入訊息佇列,因為程式間沒有直接的聯繫。所以它們不必同時運行。訊息放入適當的佇列時,目標程式甚至根本不需要正在運行;即使目標程式在運行,也不意味著要立即處理該訊息。
2、對應用程式的結構沒有約束
在複雜的套用場合中,通訊程式之間不僅可以是一對一的關係,還可以進行一對多和多對一方式,甚至是上述多種方式的組合。多種通訊方式的構造並沒有增加應用程式的複雜性。
3、程式與網路複雜性相隔離
程式將訊息放入訊息佇列或從訊息佇列中取出訊息來進行通訊,與此關聯的全部活動,比如維護訊息佇列、維護程式和佇列之間的關係、處理網路的重新啟動和在網路中移動訊息等是MOM的任務,程式不直接與其它程式通話,並且它們不涉及網路通訊的複雜性。
對象請求代理
隨著對象技術與分散式計算技術的發展,兩者相互結合形成了分布對象計算,並發展為當今軟體技術的主流方向。1990年底,對象管理集團OMG首次推出對象管理結構OMA(ObjECt Management Architecture),對象請求代理(Object Request Broker)是這個模型的核心組件。它的作用在於提供一個通信框架,透明地在異構的分布計算環境中傳遞對象請求。CORBA規範包括了ORB的所有標準接口。1991年推出的CORBA 1.1 定義了接口描述語言OMG IDL和支持Client/Server對象在具體的ORB上進行互操作的API。CORBA 2.0 規範描述的是不同廠商提供的ORB之間的互操作。
對象請求代理(ORB)是對象匯流排,它在CORBA規範中處於核心地位,定義異構環境下對象透明地傳送請求和接收回響的基本機制,是建立對象之間client/server關係的中間件。ORB使得對象可以透明地向其他對象發出請求或接受其他對象的回響,這些對象可以位於本地也可以位於遠程機器。ORB攔截請求調用,並負責找到可以實現請求的對象、傳送參數、調用相應的方法、返回結果等。client對象並不知道同server對象通訊、激活或存儲server對象的機制,也不必知道server對象位於何處、它是用何種語言實現的、使用什麼作業系統或其他不屬於對象接口的系統成分。
值得指出的是client和server角色只是用來協調對象之間的相互作用,根據相應的場合,ORB上的對象可以是client,也可以是server,甚至兼有兩者。當對象發出一個請求時,它是處於client角色;當它在接收請求時,它就處於server角色。大部分的對象都是既扮演client角色又扮演server角色。另外由於ORB負責對象請求的傳送和server的管理,client和server之間並不直接連線,因此,與RPC所支持的單純的Client/Server結構相比,ORB可以支持更加複雜的結構。
事務處理監控
事務處理監控(Transaction processing monitors)最早出現在大型機上,為其提供支持大規模事務處理的可靠運行環境。隨著分布計算技術的發展,分布套用系統對大規模的事務處理提出了需求,比如商業活動中大量的關鍵事務處理。事務處理監控界於client和server之間,進行事務管理與協調、負載平衡、失敗恢復等,以提高系統的整體性能。它可以被看作是事務處理應用程式的“作業系統”。總體上來說,事務處理監控有以下功能:
進程管理,包括啟動server進程、為其分配任務、監控其執行並對負載進行平衡。
事務管理,即保證在其監控下的事務處理的原子性、一致性、獨立性和持久性。
通訊管理,為client和server之間提供了多種通訊機制,包括請求回響、會話、排隊、訂閱發布和廣播等。
事務處理監控能夠為大量的client提供服務,比如飛機定票系統。如果server為每一個client都分配其所需要的資源的話,那server將不堪重負(如圖2所示)。但實際上,在同一時刻並不是所有的client都需要請求服務,而一旦某個client請求了服務,它希望得到快速的回響。事務處理監控在作業系統之上提供一組服務,對client請求進行管理並為其分配相應的服務進程,使server在有限的系統資源下能夠高效地為大規模的客戶提供服務。

趨勢展望

7.1 趨勢特徵

中間件技術的發展方向,將聚焦於消除信息孤島,推動無邊界信息流,支撐開放、動態、多變的網際網路環境中的複雜套用系統,實現對分布於網際網路之上的各種自治信息資源(計算資源、數據資源、服務資源、軟體資源)的簡單、標準、快速、靈活、可信、高效能及低成本的集成、協同和綜合利用,提高組織的IT基礎設施的業務敏捷性,降低總體運維成本,促進IT與業務之間的匹配。中間件技術正在呈現出業務化、服務化、一體化、虛擬化等諸多新的重要發展趨勢。

7.2 需求發展

由於網路世界是開放的、可成長的和多變的,分布性、自治性、異構性已經成為信息系統的固有特徵。實現信息系統的綜合集成,已經成為國家信息化建設的普遍需求,並直接反映了整個國家信息化建設的水平,中間件通過網路互連、數據集成、套用整合、流程銜接、用戶互動等形式,已經成為大型網路套用系統開發、集成、部署、運行與管理的關鍵支撐軟體
隨著中間件在我國信息化建設中的廣泛套用,中間件套用需求也表現出一些新的特點:
可成長性
Internet是無邊界的,中間件必須支持建立在Internet之上的網路套用系統的生長與代謝,維護相對穩定的套用視圖
適應性
環境和套用需求不斷變化,套用系統需要不斷演進,作為企業計算的基礎設施,中間件需要感知、適應變化,提供對下列環境的支持:
■ 支持移動、無線環境下的分布套用,適應多樣性的設備特性以及不斷變化的網路環境
■ 支持流媒體套用,適應不斷變化的訪問流量和頻寬約束
■ 在DRE(DIstributed Real-time Enbeded)環境下,適應強QoS的分布套用的軟硬體約束
■ 能適應未來還未確定的套用要求
可管理性
領域問題越來越複雜、IT套用系統越來越龐大,其自身管理維護則變得越來越複雜,中間件必須具有自主管理能力,簡化系統管理成本。
■ 面對新的套用目標和變化的環境,支持複雜套用系統的自主再配置
■ 支持複雜套用系統的自我診斷和恢復
■ 支持複雜套用系統的自主最佳化
■ 支持複雜套用系統的自主防護
高可用性
提供安全、可信任的信息服務
■ 支持大規模的並發客戶訪問
■ 提供99.99%以上的系統可用性
■ 提供安全、可信任的信息服務

7.3 負載均衡

■負載均衡是當一個套用的負載過大,超出自己的負載,就會把相應的進程分發給與之共同承擔任務的伺服器,從而不影回響用進程的運行。
■大多數中間件都支持負載均衡,實現負載均衡大大降低了系統的崩潰現象,從而減少對企業帶來的損失。

相關詞條

熱門詞條

聯絡我們