系統(tǒng)API小説
計算機應用軟件系統(tǒng)從未像今天這樣復雜過:數據被存儲在多個相關聯或者并不相關聯的數據庫系統(tǒng)中,分散在不同的地理位置的不同平臺的計算機中,通過多種多樣的通信協(xié)議、方式連接在一起。因此企業(yè)信息系統(tǒng)往往建立在多樣的計算機技術上,大型主機、中型機、客戶機/服務器系統(tǒng),甚至包括單機數據庫系統(tǒng)。這種情況的出現是由于企業(yè)的早期各部門獨立的信息化需求以及企業(yè)的進一步運作如兼并等行為造成的。同時,企業(yè)信息系統(tǒng)的這種多樣性將很大的限制企業(yè)的靈活性,制約企業(yè)的進一步發(fā)展,降低它在多變的市場的競爭力?! ∫虼耍敼驹趯崿F它們的企業(yè)計算機系統(tǒng)時,怎樣進行全公司范圍內的數據訪問是一個很重要的問題。為了解決操作異類環(huán)境、異類操作系統(tǒng)的復雜性,越來越多的企業(yè)開始選擇采用中間件的解決方案,集成異構的系統(tǒng)。中間件和企業(yè)應用集成已是目前IT業(yè)中最頻繁出現的詞匯。 1 中間件 為解決分布異構問題,人們提出了中間件(middleware)的概念。從計算機軟件系統(tǒng)的結構層次來講,中間件是位于平臺(硬件和操作系統(tǒng))和應用之間的一組通用服務,如圖1所示,這些服務具有標準的程序接口和協(xié)議。針對不同的操作系統(tǒng)和硬件平臺,它們可以有符合接口和協(xié)議規(guī)范的多種實現。作為應用支撐軟件,中間件為分布應用以及應用軟件開發(fā)提供了跨網絡、跨平臺(硬件和操作系統(tǒng))的透明性和互操作,構成應用的基礎結構,使得應用可以集成/連接異構的應用和系統(tǒng),共享重要的應用服務和資源。雖然中間件不僅在中國,在而且在整個世界范圍內都是一個正在蓬勃發(fā)展的技術領域,但卻很難給中間件一個嚴格的定義。但無論如何,中間件都是將應用的業(yè)務邏輯和應用的基礎結構分離,使得應用的開發(fā)者可以僅關注應用的業(yè)務任務,而不必關注應用的基礎結構。一般說來,中間件都具有以下的基本特征: 透明性:現代的分布式應用往往構筑在不同的硬件、操作系統(tǒng)、網絡、數據庫之上,利用中間件,我們可以透明地進行應用的開發(fā)、遷移、部署等工作。 高可用性:中間件通常都是以標準服務的形式提供,設計和實現中均考慮了各種故障情況,具有極強的故障處理和恢復能力。 高性能和伸縮性:分布式應用的客戶往往是不可預計的,因此在中間件的設計和實現中,采用了大量的技術和算法以保證中間件能支持不同規(guī)模的應用,具有很好的伸縮性,保證構筑其上的分布式應用在任何情況下均具有良好的性能。 互操作性:中間件具有很強的互操作性,通過標準的協(xié)議、數據格式和接口規(guī)范,提供對多種數據源、其他應用和前端的訪問,這種互操作通常遠遠超出應用的原始需求,因而方便以后的變化和升級; 可移植性:中間件提供了標準的編程接口,屏蔽了網絡和平臺的差異性,基于中間件開發(fā)的應用具有極強的可移植性,極易從一個平臺移植到另一個平臺上。中間件已成為許多標準化工作的主要部分。對于應用軟件開發(fā),中間件遠比操作系統(tǒng)和網絡服務更為重要,中間件提供的程序接口定義了一個相對穩(wěn)定的高層應用環(huán)境,不管底層的計算機硬件和系統(tǒng)軟件怎樣更新換代,只要將中間件升級更新,并保持中間件對外的接口定義不變,應用軟件幾乎不需任何修改,從而保護了企業(yè)在應用軟件開發(fā)和維護中的重大投資。 2 中間件的分類 根據Standish Group的估計,在應用中基礎結構大約占70%,為應用提供了實施業(yè)務任務的必要基礎。適應不同的需要,有不同類型的服務基礎結構,因此有不同類型的中間件,如訂閱/發(fā)布、數據庫復制、遠程過程調用、數據庫訪問、消息排隊、消息復制、消息傳遞、消息交換、事務管理器、事務處理監(jiān)控器、對象請求代理、對象監(jiān)控器、應用服務器、流程控制等。 由于中間件所包括的范圍十分廣泛,而目前對中間件還沒有一個比較精確的定義,因此,在不同的角度或不同的層次上,對中間件的分類也會有所不同。我們基于不同中間件的目的和實現機制的不同,我們將中間件分為以下主要幾類: 遠程過程調用(Remote Procedure Call) 面向消息的中間件(Message-Oriented Middleware) 對象請求代理(Object Request Brokers) 事務處理監(jiān)控器(Transaction Processing Monitor) 數據訪問中間件(Data Access middleware) 工作流中間件(workflow engine) 應用服務器(application server) WEB服務(web service) 前三類中間件屬于通信中間件,它們向上提供了不同形式的通訊服務,包括同步、排隊、訂閱發(fā)布、廣播等等,在這些基本的通訊服務之上,可構筑各種平臺,為應用程序提供不同領域內的服務,如事務處理監(jiān)控器、分布數據訪問等。 下面,針對上述幾類中間件分別加以簡要的介紹。 2.1 遠程過程調用 遠程過程調用是一種最早出現并被廣泛使用的分布式應用程序處理方法。一個應用程序使用RPC來“遠程”執(zhí)行一個位于不同地址空間里的過程,并且從效果上看和執(zhí)行本地調用相同。事實上,一個RPC應用分為兩個部分:server和client。server提供一個或多個遠程過程;client向server發(fā)出遠程調用。server和client可以位于同一臺計算機,也可以位于不同的計算機,甚至運行在不同的操作系統(tǒng)之上。它們通過網絡進行通訊。相應的stub和運行支持提供數據轉換和通訊服務,從而屏蔽不同的操作系統(tǒng)和網絡協(xié)議。RPC通訊是同步的,所提供的是基于過程的服務訪問,client與server進行直接連接,沒有中間機構來處理請求,因此具有一定的局限性。比如,RPC通常需要一些網絡細節(jié)以定位server;在client發(fā)出請求的同時,要求server必須是活動的等等。現代操作系統(tǒng)通常均提供了RPC機制。 2.2 面向消息的中間件 面向消息的中間件(MOM)指的是利用高效可靠的消息傳遞機制進行平臺無關的數據交換,并基于數據通信來進行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊模型,它可在分布環(huán)境下擴展進程間的通信,并支持多通訊協(xié)議、語言、應用程序、硬件和軟件平臺。消息中間件通常包括:底層通訊系統(tǒng)、名字和目錄服務、消息隊列、server注冊和管理等,支持同步、異步、訂閱/發(fā)布等通信模式。目前市場上有許多流行的MOM中間件產品,如IBM的MQSeries。 2.3 對象請求代理 分布對象(或組件)是一些獨立的代碼封裝體,遠程client可以通過操作調用來訪問它。在分布式環(huán)境中的各對象之間通過定義好的接口相互訪問,這些接口構成連接client 和server的協(xié)議。對象之間實現互操作時,client和server表示對象在具體請求中的角色。client不必關心server對象是如何實現的、位于網絡的哪個結點,也不必關心其運行于何種硬件和操作系統(tǒng)平臺之上。client只需知道server對象所提供的接口。分布對象是一些靈敏的軟件模塊,它們可以位置透明、語言獨立和平臺獨立地互相發(fā)送消息,實現請求服務。我們稱這些獨立的對象模塊為組件。為了使得不同廠商所提供的組件可以在同一地址空間相互作用,甚至跨越不同地址空間或網絡進行交互,必須通過對象請求代理來進行,對象請求代理為對象組件提供了標準底層運行環(huán)境的支持,即對象總線和一些系統(tǒng)服務組件。由于對象請求代理負責對象請求的傳送和server的管理,client和server之間并不直接連接,因此,與RPC所支持的單純的Client/Server結構相比,它可以支持更加復雜的結構。 目前,兩個最主要的組件標準是OMG的CORBA和Microsoft的COM/DCOM, 它們采用對象總線結構,提供了工業(yè)組件標準。這些新的組件標準的出現將會極大地改變軟件開發(fā)的現狀,使應用開發(fā)向組合軟件的方向發(fā)展。 2.4 事務處理監(jiān)控器 事務處理監(jiān)控器提供支持大規(guī)模事務處理的可靠運行環(huán)境,為關鍵業(yè)務應用建立server組件實現的框架,該框架對于client是透明的。事務處理監(jiān)控器位于client和server之間,進行事務管理與協(xié)調、負載平衡、失敗恢復等,以提高系統(tǒng)的整體性能。它可以被看作是事務處理應用程序的“操作系統(tǒng)”?! ∈聞仗幚肀O(jiān)控器主要包括:(a)運行控制,與平臺的server管理一起,控制應用程序的運行,包括啟動server進程、為其分配任務、監(jiān)控其執(zhí)行并對負載進行平衡。(b)通訊管理,為client和server之間提供了多種通訊機制,包括請求響應、會話、排隊、訂閱發(fā)布和廣播等。(c)事務管理,即保證在其監(jiān)控下的事務處理的原子性、一致性、獨立性和持久性;支持與X/Open XA接口集成,以方便管理多種異構資源系統(tǒng)(如數據庫系統(tǒng)、消息系統(tǒng)等)的分布事務。典型的事務處理中間件是BEA公司的Tuxedo。 2.5 數據訪問中間件 數據訪問中間件也稱數據訪問代理,負責連接異構的物理數據源(數據庫、文件系統(tǒng)等)、服務請求以及模式轉換等,為各物理數據源提供相應的驅動器,提供對異構信息源的高效、一致的訪問。通過這樣的數據訪問代理可以:(a)減少網絡通信,遠程client通過service來請求數據訪問,避免大量SQL語句傳送;(b)可集中處理事務管理、安全和性能。核心數據源引擎和本地驅動器可進行集中服務和維護,client端不必安裝所請求服務的數據源的“驅動器”,應用邏輯可在應用服務器上有效地管理事務、存取權限和性能等;(c)減低網絡負載。本地數據源從server中分離,而通過消息隊列等機制保持本地數據源與數據資源服務器的同步;(d)減少數據庫的連接,通過共享連接減少同時連接的總數,從而減少開銷。典型的數據訪問中間件有Intersolv公司SequeLink和中科院軟件所的DataAccess。 2.6 工作流服務中間件 工作流針對工作中具有固定程序的常規(guī)活動,通過將工作活動分解成定義良好的任務、角色、規(guī)則和過程來進行執(zhí)行和監(jiān)控,達到提高生產組織水平和工作效率的目的。一個工作流包括一組活動及它們的相互順序關系,還包括過程及活動的啟動和終止條件,以及對每個活動的描述。工作流服務中間件旨在實現企業(yè)工作流的自動化,特別是業(yè)務處理中各項活動的合作、控制和通訊的自動化?! ?工作流服務中間件主要包括:(a)工作流模型與語言接口。(b)工作流引擎,主要包括系統(tǒng)的結構、并發(fā)控制、恢復、協(xié)同工作、代理、腳本(script)、規(guī)則和任務自動化的框架。該框架還包括語義消息服務,定義用于面向任務請求的高層消息機制。(c)各種分析、管理工具。 2.7 應用服務器 應用服務器為建立分布式的可伸縮的Internet/Intranet 應用程序提供了一個基于組件的理想的應用程序框架。它為應用提供如連接管理、負載平衡、組件管理和控制等功能,同時提供如資源管理、事務管理、安全管理、通訊管理、與其它應用的集成等標準化服務和接口,保證應用的交易將被完整地、安全地執(zhí)行,使得應用開發(fā)者集中精力于業(yè)務邏輯的開發(fā)。應用服務器解決的是Internet /Intranet 的應用開發(fā)問題。 典型的應用服務器中間件有IBM的WebSphere和BEA的WebLogic。 2.8 Web服務 Web服務建立在基于XML的SOAP 協(xié)議之上、自適應、自我描述、模塊化的應用程序并通過Web發(fā)布,其它應用程序可以通過 Web 對其進行定位、調用。Web 服務提供的功能可以是從簡單的查詢請求(如股票報價)到復雜的商業(yè)業(yè)務邏輯(如訂單處理)。Web服務提供者將服務部署在 Web 上,通過使用 Web 服務描述語言(WSDL)來描述給定 Web 服務提供的功能,并將自己向注冊UDDI服務器注冊。服務請求者使用 API 向UDDI服務器尋求它所需要的服務。UDDI服務器返回結果時,服務請求者將這些結果與特定服務綁定,雙方經過適當的商討之后,請求者就可以訪問和調用提供者所提供的服務。XML、SOAP、WSDL、UDDI等與Web服務相關的標準都和平臺、實現語言等無關,Web服務為真正垮平臺的應用間的互操作提供基礎。
