天天看點

中間件

中間件(Middleware)是處于作業系統和應用程式之間的軟體,也有人認為它應該屬于作業系統中的一部分。人們在使用中間件時,往往是一組中間件內建在一起,構成一個平台(包括開發平台和運作平台),但在這組中間件中必需要有一個通信中間件,即中間件=平台+通信,這個定義也限定了隻有用于分布式系統中才能稱為中間件,同時還可以把它與支撐軟體和實用軟體區分開來。

目錄

一 什麼是中間件?
二、主要中間件的分類
  1. 1、遠端過程調用
  2. 2、面向消息的中間件
  3. 3、對象請求代理
  4. 4、事務處理監控
三 面臨的一些問題
展開

編輯本段一 什麼是中間件?

  

為什麼要使用中間件?

  具體地說,中間件屏蔽了底層作業系統的複雜性,使程式開發人員面對一個簡單而統一的開發環境,減少程式設計的複雜性,将注意力集中在自己的業務上,不必再為程式在不同系統軟體上的移植而重複工作,進而大大減少了技術上的負擔。中間件帶給應用系統的,不隻是開發的簡便、開發周期的縮短,也減少了系統的維護、運作和管理的工作量,還減少了計算機總體費用的投入。

中間件定義及分類

  為解決分布異構問題,人們提出了中間件(middleware)的概念。中間件是位于平台(硬體和作業系統)和應用之間的通用服務,如圖1所示,這些服務具有标準的程式接口和協定。針對不同的作業系統和硬體平台,它們可以有符合接口和協定規範的多種實作。

中間件

也許很難給中間件一個嚴格的定義,但中間件應具有如下的一些特點:

  滿足大量應用的需要

  運作于多種硬體和OS平台

  支援分布計算,提供跨網絡、硬體和OS平台的透明性的應用或服務的互動

  支援标準的協定

  支援标準的接口

  由于标準接口對于可移植性和标準協定對于互操作性的重要性,中間件已成為許多标準化工作的主要部分。對于應用軟體開發,中間件遠比作業系統和網絡服務更為重要,中間件提供的程式接口定義了一個相對穩定的高層應用環境,不管底層的計算機硬體和系統軟體怎樣更新換代,隻要将中間件更新更新,并保持中間件對外的接口定義不變,應用軟體幾乎不需任何修改,進而保護了企業在應用軟體開發和維護中的重大投資。

編輯本段二、主要中間件的分類

  中間件所包括的範圍十分廣泛,針對不同的應用需求湧現出多種各具特色的中間件産品。但至今中間件還沒有一個比較精确的定義,是以,在不同的角度或不同的層次上,對中間件的分類也會有所不同。由于中間件需要屏蔽分布環境中異構的作業系統和網絡協定,它必須能夠提供分布環境下的通訊服務,我們将這種通訊服務稱之為平台。基于目的和實作機制的不同,我們将平台分為以下主要幾類:

  遠端過程調用(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等。消息傳遞和排隊技術有以下三個主要特點:

  通訊程式可在不同的時間運作:程式不在網絡上直接互相通話,而是間接地将消息放入消息隊列,因為程式間沒有直接的聯系。是以它們不必同時運作。消息放入适當的隊列時,目标程式甚至根本不需要正在運作;即使目标程式在運作,也不意味着要立即處理該消息。

  對應用程式的結構沒有限制:在複雜的應用場合中,通訊程式之間不僅可以是一對一的關系,還可以進行一對多和多對一方式,甚至是上述多種方式的組合。多種通訊方式的構造并沒有增加應用程式的複雜性。

  程式與網絡複雜性相隔離: 程式将消息放入消息隊列或從消息隊列中取出消息來進行通訊,與此關聯的全部活動,比如維護消息隊列、維護程式和隊列之間的關系、處理網絡的重新啟動和在網絡中移動消息等是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在有限的系統資源下能夠高效地為大規模的客戶提供服務。

中間件

編輯本段三 面臨的一些問題

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

上一篇: 中間件
下一篇: 中間件

繼續閱讀