簡介
為什麼要使用中間件?
具體地說,中間件禁止了底層作業系統的複雜性,使程式開發人員面對一個簡單而統一的開發環境,減少程式設計的複雜性,將注意力集中在自己的業務上,不必再為程式在不同系統軟體上的移植而重複工作,從而大大減少了技術上的負擔。中間件帶給套用系統的,不只是開發的簡便、開發周期的縮短,也減少了系統的維護、運行和管理的工作量,還減少了計算機總體費用的投入。
中間件定義及分類
為解決分布異構問題,人們提出了中間件(middleware)的概念。中間件是位於平台(硬體和作業系統)和套用之間的通用服務,如圖1所示,這些服務具有標準的程式接口和協定。針對不同的作業系統和硬體平台,它們可以有符合接口和協定規範的多種實現。
也許很難給中間件一個嚴格的定義,但中間件應具有如下的一些特點:
滿足大量套用的需要
運行於多種硬體和OS平台
支持分布計算,提供跨網路、硬體和OS平台的透明性的套用或服務的互動
支持標準的協定
支持標準的接口
由於標準接口對於可移植性和標準協定對於互操作性的重要性,中間件已成為許多標準化工作的主要部分。對於套用軟體開發,中間件遠比作業系統和網路服務更為重要,中間件提供的程式接口定義了一個相對穩定的高層套用環境,不管底層的計算機硬體和系統軟體怎樣更新換代,只要將中間件升級更新,並保持中間件對外的接口定義不變,套用軟體幾乎不需任何修改,從而保護了企業在套用軟體開發和維護中的重大投資。
主要分類
中間件所包括的範圍十分廣泛,針對不同的套用需求湧現出多種各具特色的中間件產品。但至今中間件還沒有一個比較精確的定義,因此,在不同的角度或不同的層次上,對中間件的分類也會有所不同。由於中間件需要禁止分布環境中異構的作業系統和網路協定,它必須能夠提供分布環境下的通訊服務,我們將這種通訊服務稱之為平台。基於目的和實現機制的不同,我們將平台分為以下主要幾類:
遠程過程調用(Remote Procedure Call)
遠程過程調用是一種廣泛使用的分散式應用程式處理方法。一個應用程式使用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必須是活動的等等。
面向訊息的中間件(Message-Oriented Middleware)
MOM指的是利用高效可靠的訊息傳遞機制進行平台無關的數據交流,並基於數據通信來進行分散式系統的集成。通過提供訊息傳遞和訊息排隊模型,它可在分布環境下擴展進程間的通信,並支持多通訊協定、語言、應用程式、硬體和軟體平台。流行的MOM中間件產品有IBM的MQSeries、BEA的MessageQ等。訊息傳遞和排隊技術有以下三個主要特點:
通訊程式可在不同的時間運行:程式不在網路上直接相互通話,而是間接地將訊息放入訊息佇列,因為程式間沒有直接的聯繫。所以它們不必同時運行。訊息放入適當的佇列時,目標程式甚至根本不需要正在運行;即使目標程式在運行,也不意味著要立即處理該訊息。
對應用程式的結構沒有約束:在複雜的套用場合中,通訊程式之間不僅可以是一對一的關係,還可以進行一對多和多對一方式,甚至是上述多種方式的組合。多種通訊方式的構造並沒有增加應用程式的複雜性。
程式與網路複雜性相隔離: 程式將訊息放入訊息佇列或從訊息佇列中取出訊息來進行通訊,與此關聯的全部活動,比如維護訊息佇列、維護程式和佇列之間的關係、處理網路的重新啟動和在網路中移動訊息等是MOM的任務,程式不直接與其它程式通話,並且它們不涉及網路通訊的複雜性。
對象請求代理(Object Request Brokers)
它們可向上提供不同形式的通訊服務,包括同步、排隊、訂閱發布、廣播等等,在這些基本的通訊平台之上,可構築各種框架,為應用程式提供不同領域內的服務,如事務處理監控器、分布數據訪問、對象事務管理器OTM等。平台為上層套用禁止了異構平台的差異,而其上的框架又定義了相應領域內的套用的系統結構、標準的服務組件等,用戶只需告訴框架所關心的事件,然後提供處理這些事件的代碼。當事件發生時,框架則會調用用戶的代碼。用戶代碼不用調用框架,用戶程式也不必關心框架結構、執行流程、對系統級API的調用等,所有這些由框架負責完成。因此,基於中間件開發的套用具有良好的可擴充性、易管理性、高可用性和可移植性。
隨著對象技術與分散式計算技術的發展,兩者相互結合形成了分布對象計算,並發展為當今軟體技術的主流方向。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在有限的系統資源下能夠高效地為大規模的客戶提供服務。
問題
中間件能夠禁止作業系統和網路協定的差異,為應用程式提供多種通訊機制;並提供相應的平台以滿足不同領域的需要。因此,中間件為應用程式提供了一個相對穩定的高層套用環境。然而,中間件服務也並非“萬能藥”。中間件所應遵循的一些原則離實際還有很大距離。多數流行的中間件服務使用專有的API和專有的協定,使得套用建立於單一廠家的產品,來自不同廠家的實現很難互操作。有些中間件服務只提供一些平台的實現,從而限制了套用在異構系統之間的移植。套用開發者在這些中間件服務之上建立自己的套用還要承擔相當大的風險,隨著技術的發展他們往往還需重寫他們的系統。儘管中間件服務提高了分布計算的抽象化程度,但套用開發者還需面臨許多艱難的設計選擇,例如,開發者還需決定分布套用在client方和server方的功能分配。通常將表示服務放在client以方便使用顯示設備,將數據服務放在server以靠近資料庫,但也並非總是如此,何況其它套用功能如何分配也是不容易確定的。
概況
中間件是軟體技術發展的一種潮流,被譽為發展最快的軟體品種,近年來勢頭強勁,這也是源於市場在全球範圍內對中間件的支持。毫無疑問,中間件正在成為軟體行業新的技術與經濟成長點。
1999年,Nasdaq股市上投資回報率最高的並非某些名聲顯赫的網站,而是全球最大的獨立中間件廠商BEA公司,其股票升幅高達884.6%。時至今日,BEA的營業收入已連續18個季度保持高速增長。
國際數據集團(IDC)在日前發表的一份報告中預計今後五年中間件市場將快速成長。IDC預計全球中間件和商業軟體收入將從1999年的27億美元增長到2004年的近97億美元,增長255%。據GlobalSight公司預計,全球電子商務市場到2001年將達到1.2萬億美元。 ForresterResearch則估計,僅僅是BtoB電子商務,到2003年的年收入就將達到1.3萬億美元。而業內人士認為,未來基於 Internet的電子商務業務將有79%建築在中間件的基礎之上。無疑,這將帶來一個潛力巨大的市場。
在中國,有關數字同樣讓人興奮,1998年中間件市場總值達12.34億美元;1999年為17億美元;預測到2004年將達到90.3億美元,年增長率為39.7%,遠遠高於軟體業的平均增長水平。
介紹
IBM MQSeries是IBM的訊息處理中間件。MQSeries提供一個具有工業標準、安全、可靠的訊息傳輸系統。
它的功能是控制和管理一個集成的系統,使得組成這個系統的多個分支套用(模組)之間通過傳遞訊息完成整個工作流程。MQSeries基本由一個信息傳輸系統和一個應用程式接口組成,其資源是訊息和佇列。
MQSeries的關鍵功能之一是確保信息可靠傳輸,即使在網路通信不可靠或出現異常時也能保證信息的傳輸。MQSeries的異步訊息處理技術能夠保證當網路或者通信應用程式本身處於“忙 "狀態或發生故障時,系統之間的信息不會丟失,也不會阻塞。
TongLINK/Q是面向訊息的中間件。TongLINK/Q的主要功能是在不同的網路協定、不同的作業系統和不同的應用程式之間提供可靠的訊息傳送。
* 高效、可靠、靈活的傳輸功能
通過預建連線、多路復用、流量控制、壓縮傳輸、斷點重傳、傳輸優先權管理、服務(類)驅動等機制來保證實現。
* 事件代理機制
事件代理機制提供了一種異步套用開發模型,用戶只需要定義一個事件及怎么處理,TongLINK/Q自動完成操作。利用事件代理機制,可以實現事件訂閱與發布,實現策略管理。
* 會話管理
TongLINK/Q通過一個簡單的會話標識來描述一種複雜的通信關係,實現了更高層次、更抽象的通信服務。
* 良好的易用性和可管理性
TongLINK/Q實現了實時監控和管理,提供了日誌機制、動態配置、遠程管理功能。並提供多層次安全管理,支持多種開發工具。
BEA TUXEDO是目前最成功的中間件產品,它有以下特點:
* 高速數據甬道機制,減少客戶機與主機和資料庫的聯接,降低整個系統的負擔
* 提供名字服務和數據依賴路由機制,提高系統設計的靈活性
* 提供7種客戶機/伺服器通訊方式,使套用開發靈活方便
* 提供多個層面的系統負載均衡機制,能最有效地運用系統資源
* 提供服務優先權機制,區分服務的不同級別,使重要服務得到最快的回響
* 提供網路通訊壓縮和加密機制,使通訊性能和安全性大大提高
* 提供動態伸縮機制,方便套用系統的擴充和維護
* 提供故障恢復等機制,保證套用的高可用性
* 提供多個層面的安全機制,保證套用的安全性
* 支持XA協定,保證涉及多場地、異構數據源交易和數據的一致性
* 提供多個層面的套用管理機制,使套用管理方便容易
* 提供網路調度功能,實現網路資源的充分利用並支持通訊失敗的自動恢復
* 與其他多種系統互聯,保護用戶投資
* 支持異構系統數據格式的透明轉換,方便系統擴展
* 支持包括聲音、圖象在內的多種數據類型,不同程式語言數據格式的區別由TUXEDO自動轉換(如C和COBOL),其中FML類型更支持網上只傳輸有效數據和可改變的多種數據類型組合等功能
* 提供域的劃分與管理功能,使超大規模套用成為可能
* 提供DES(Data Entry System)功能,支持字元界面的開發
* 支持國際化,可用中文顯示診斷和系統訊息