(以下摘自http://www.huihoo.com/application_infrastructure/middleware_ws/)
作者:Allen (allen@huihoo.com)
日期:2003.09
灰狐動力:企業計算研究中心
http://www.huihoo.com
中間件作為一大類系統軟件,與操作系統,數據庫管理系統并稱"三套車",其重要性是不言而語的.
那什么是中間件?
我們來看看以下的幾種定義:
http://middleware.internet2.edu/ 給出了middleware的一個定義:
Middleware, is a layer of software between the network and the applications. This software provides services such as identification, authentication, authorization, directories, and security. In today's Internet, applications usually have to provide these services themselves, which leads to competing and incompatible standards. By promoting standardization and interoperability, middleware will make advanced network applications much easier to use.
同樣,IDC給出的一個定義:中間件是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位于客戶機服務器的操作系統之上,管理計算資源和網絡通信。
從這些定義中可以看出:
– 中間件是一類軟件,而非一種軟件;
– 中間件不僅僅實現互連,還要實現應用之間的互操作;
– 中間件是基于分布式處理的軟件,最突出的特點是其網絡通信功能。
接著,我們再來看看什么是Web Services?
Web Services就是可以通過web描述、發布、定位和調用的模塊化應用。Web Services可以執行任何功能,從簡單的請求到復雜的業務過程。一旦Web Services被部署,其他的應用程序或是Web Services就能夠發現并且調用這個部署的服務。
Web Services通過簡單對象訪問協議 (Simple Object Access Protocol,SOAP)來調用。SOAP是一種輕量級的消息協議,它允許用任何語言編寫的任何類型的對象在任何平臺之上相互通信。SOAP消息采用可擴展標記語言(XML)進行編碼,一般通過HTTP進行傳輸。與其它的分布式計算技術不同,Web Services是松耦合的,而且能夠動態地定位其他在internet上提供服務的組件,并且與它們交互。
Web Services使用諸如SOAP消息這樣的XML消息,通過一種良好定義的消息交換模式來調用。通過描述調用服務所必需的數據,Web Services描述語言 (WSDL)文檔定義了消息交換模式。
一、中間件分類
中間件分類有很多方式和很多種類,在這里我們由底向上從中間件的層次上來劃分,可分為以下三個大的層次:
。集成型中間件
在通用型中間件產品之上整合了Application,Portal,Business Process等技術
主流技術:WorkFlow,EAI
代表產品: BEA WebLogic Integration
。通用型中間件
主流技術:CORBA,J2EE,MOM
代表產品:IONA Orbix,BEA WebLogic,IBM MQSeries
。基礎型中間件
主流技術: JVM,CLR, ACE
代表產品:SUN JVM, Microsoft CLR
400){this.resized=true;this.style.width=400;}">
400){this.resized=true;this.style.width=400;}" resized="true">
當然,在這個大的層次劃分下,中間件還可以細化為以下一些種類:
。分布式對象中間件: 如Orbix,TAO
。J2EE應用服務器: 如WebLogic,Jboss
。消息中間件: 如MQSeries,JMS
。事務(交易)中間件: 如Tuxedo, TXSeries(CICS)
。應用集成中間件: 如BEA WebLogic Integration
。數據庫中間件: 如JDBC
。安全中間件: 如東方通的TongSec
。無線移動中間件
。CTI(呼叫中心)中間件
。。。
二、中間件應用層次
400){this.resized=true;this.style.width=400;}" resized="true">
中間件技術應用層次圖
中間件提供了應用系統基本的運行/執行環境,而中間件服務則提供了更多高級的功能,如名字服務,事件服務,通告服務,日志等服務,在這些服務之上,我們還需要考慮不同行業的需求.不同的應用領域.
三、中間件技術在集成中的應用
中間件技術在集成中扮演著重要的角色,我們可以從不同層次采用不同種類,不同技術的中間件產品進行應用集成
我們可以從傳輸,消息,組件,流程等各個層面分別加以集成.
400){this.resized=true;this.style.width=400;}" resized="true">
從圖中,我們可以看出,為了完成不同層次的集成,我們可以采用不同的技術和不同產品。
如:
。為了完成系統底層傳輸層的集成,我們可以采用CORBA技術,
。為了完成不同系統的信息傳遞,我們可以采用消息中間件產品
以下是一個商業流程處理的例子:
400){this.resized=true;this.style.width=400;}" resized="true">
TIBCO BusinessWorks Designer用戶界面
這樣,我們面對復雜的集成問題,就有了一個大致的應對措施和解決方案。
同樣,目前中間件的競爭焦點也主要集中在集成應用平臺上。以TIBCO為市場領導者的EAI市場遭到了來自傳統中間件廠商BEA等公司的激烈挑戰。大多中間件公司都已經或準備將下一步的工作重點放在了集成市場上。國內中間件公司東方通公司也在努力殺入這個市場。
而在集成市場上,Web Services表現出極強的發展勢頭.
接著,我們了解一些有關Web Services的知識。
四、從中間件到Web Services
從中間件發展到目前的Web Services是一種基于Internet的發展需求。
我們可以將Web Services簡單理解為對已有中間件技術的更高層次的封裝。
其業務邏輯和方法的實現還得依賴于底層的CORBA,J2EE等技術。
我們先看看中間件的發展歷程。
400){this.resized=true;this.style.width=400;}" resized="true">
這是中間件一條大致發展路線圖:
CORBA
400){this.resized=true;this.style.width=400;}">MOM/EAI
400){this.resized=true;this.style.width=400;}">J2EE應用服務器
400){this.resized=true;this.style.width=400;}">應用集成平臺(基于Web Services等技術)
從圖中我們可以看見當前這個時期,中間件的競爭焦點將放在Web Services上
比爾·蓋茨也曾經說過:"世界上所有一切都將包括在互聯網服務中"
未來一切都將通過互聯網實現,那些為互聯網服務提供基礎架構的企業,將成為今后高科技行業真正的霸主。目前的成員有:IBM、微軟、Oracle、SAP
其激烈競爭的焦點將是: 基于Internet的軟件平臺和集成應用平臺
是什么原因促使了這一格局的產生。我們來看看其中的一些原因:
軟件業、軟件服務業正發生著巨大的變革:
通過Internet完成軟件,服務,客戶,供應商,商業流程的互操作,交換和協作將成為一種發展趨勢,主要體現在以下幾個方面:
。軟件模式的變化:軟件即服務(Software as Service) 、應用軟件、套裝軟件將以一種服務的形式向用戶提供。而被封裝成Web Services已成為一種趨勢。
。Web技術,Internet的快速發展,要求軟件和服務能夠通過Internet取得和訪問到.而Web Services標準、技術和應用的迅速發展也加快了這一進程的發展。
。CORBA、J2EE、NETD等復雜的分布式技術需要通過Web Services更方便,簡單得提供給用戶。使復雜,專用的技術變得簡單,通用。
Gartner Group對Web Services的發展也做出了一份研究報告。Y軸表明技術的受關注程度,而X軸則表示技術的應用的成熟度。
從圖中可看到,Web Services已是目前整個IT行業的最亮點.
400){this.resized=true;this.style.width=400;}" resized="true">?
?Web Services構建在一系列核心的標準協議之上,包含:
。SOAP
http://www.w3.org/TR/soap
。WSDL
http://www.w3.org/TR/wsdl
。UDDI
http://www.uddi.org
。ebXML
http://www.ebxml.org
Java由于其跨平臺,面向對象,便于Internet應用開發等特性使它成為開發Web Services的首選語言.
我們可以使用Java API實現Web Services
400){this.resized=true;this.style.width=400;}" resized="true">
SOAP消息傳輸是針對Web服務的協議。JAXP API允許你訪問并解析XML數據。JAXP的主要目標是提供一個接口,允許你不必參考底層實現,就能創建、操縱、和使用XML解析器,允許你創建解析器無關的代碼,并且把解析器的選擇推遲到運行時。
JAX-RPC幫助你創建基于XML的請求,比如SOAP請求,它被用來發送和接收基于XML的協議的方法調用。JAX-RPC API提供了高層的框架來把Java功能暴露為Web服務,這些服務能夠被SOAP客戶端消費,或者作為消費SOAP服務和客戶端的方式。在典型的JAX-RPC使用案例中,開發人員沒必要進行XML和SOAP編程,這樣就能夠快速開發應用。這不僅完成了XML和Java的互相映射,而且避免了直接與調用的XML表示進行交互。
JAXM提供了使這樣的XML數據能夠在兩個應用之間互操作的框架。就是說,JAXM允許在兩個獨立的Web服務之間完成全部XML文件的傳輸。SOAP提供了在兩個應用之間傳輸的消息的底層格式。JAXM作為輕量級的API,抽象了底層的消息基礎結構。因此,開發
利用SOAP包裝的JAXM消息是容易的,SOAP使你能夠快速而且容易地訪問SOAP消息。
SAAJ API使你能夠操縱簡單SOAP消息。它可以與JAX-RPC結合使用,JAX-RPC是用來接收和發送SOAP消息的J2EE標準API,用來表示字面上的XML文件片斷。SAAJ是JAX-RPC的主要部分,但你也可以把它和其他API,比如JAXM,一起使用。
JAXM和JAX-RPC之間的區別在于,JAXM支持面向消息的中間件類型的應用開發,它允許你專注于消息的發送和接收。但是,JAX-RPC支持應用的RPC行為。如同SOAP 中定義的一樣,JAX-RPC為XML RPC調用提供了Java接口。
以下是需要我們密切關注的產品和技術趨勢:
。移動計算中間件
。反射中間件
。自治中間件
。Qos中間件
。網格計算中間件
。CORBA3
。J2EE
。NET
。。。
中間件,Web Services做為軟件的一個發展趨勢,我們不能忽視,更不能放棄這個機會。
期待與大家更多的交流與協作.
參考資料:
。C++ Network Programming Mastering Complexity with ACE & Patterns
。Dr Andy Bond的Middleware and Enterprise Architectures
。SUN公司Sun ONE Application Server 7 Web Services 開發者指南
http://www.huihoo.com/one_and_net/app7/index.htm
。http://www.tibco.com
關于作者:
Allen,研究方向:J2EE、CORBA、WebServices、WorkFlow、EAI等方面,愿意與更多的朋友一起來打造中國人自己的中間件基礎平臺。
http://www.huihoo.com 中間件技術論壇
http://www.huihoo.org 開源中間件項目
個人主頁 http://www.huihoo.org/~allen/