Web服務體系結構

      縱觀計算機和軟件領域,我們不難了解爲什麼會產生Web服務。在因特網上有許多系統和平臺,在這些系統和平臺上又有更多的應用程序。說得更明白些就是,存在着許多技術,把客戶端連接到服務器,這其中包括DCOM、CORBA和其它各種技術;而Web服務則是在HTTP、XML和SOAP這樣的開放標準上形成的,它具有更新和更簡單的連接類型。

  我們可以把Web服務想象爲通過因特網或企業內部網連接調用其方法的組件,或者把它想象爲通過Web提供其接口的組件。Web服務建立在對開放標準XML廣泛接受的基礎上,Web服務使用XML序列化其客戶端收發的數據。即使客戶端和Web服務主機使用不同的操作系統,或者應用程序使用不同的程序語言開發,只要客戶端程序可以解析XML,那麼它就可以使用Web服務返回的數據。

  Web服務體系結構概述

  XML Web服務體系結構最重要的優點之一就是允許在不同平臺上使用不同編程語言以一種基於標準的技術開發程序,來與其它應用程序通訊。有兩種使用Web服務的方法,允許訪問內部系統功能,把它們向外部世界展示並且作爲一個外部Web服務的客戶端或者使用者。在這個模型中,Web服務可用來訪問一個應用程序中任一層的應用功能。這樣,因特網上的任何分佈式系統就有可能被整合到一個用戶定製的應用程序中。

  通常,一個Web服務被分爲五個邏輯層:數據層(Data Layer)、數據訪問層(Data Access Layer)、業務層(Business Layer)、業務面(Business Facade)和監聽者(Listener)。離客戶端最近的是監聽者,離客戶端最遠的是數據層。業務層更進一步被分爲兩個子層:業務邏輯(Business logic)和業務面(Business facade)。Web服務需要的任何物理數據都被保存在數據層。在數據層之上是數據訪問層,數據訪問層爲業務層提供數據服務。數據訪問層把業務邏輯從底層數據存儲的改變中分離出來,這樣就能保護數據的完整性。業務面提供一個簡單接口,直接映射到Web服務提供的過程。

  業務面模塊被用來提供一個到底層業務對象的可靠的接口,把客戶端從底層業務邏輯的變化中分離出來。

  業務邏輯層提供業務面使用的服務。所有的業務邏輯都可以通過業務面在一個直接與數據訪問層交互的簡單Web服務中實現。Web服務客戶應用程序與Web服務監聽者交互,監聽者負責接收帶有請求服務的輸入消息、解析這些消息,並把這些請求發送給業務面的相應方法。

  這種體系結構與Windows DNA定義的n層應用程序體系結構非常相似。Web服務監聽者相當於Windows DNA應用程序的表現層。如果服務返回一個響應,那麼監聽者負責把來自業務面的響應封裝到一條消息中,然後把它發回客戶端。監聽者還處理對Web服務協約和其他Web服務文檔的請求。開發者可以添加一個Web服務監聽者到表現層中,並且提供到現有業務面的訪問權限,這樣酒能夠很容易地把一個Windows DNA應用程序移植到Web服務中。雖然Web瀏覽器可以繼續使用表現層,但是Web服務客戶應用程序將與監聽者交互。

  Web服務堆棧

  使用HTTP通信協議,我們可以從因特網上的一個地方向另一個地方發送消息。通過網絡發送的消息可以使用XML結構化,XML協議定義這條消息的格式和語義。SOAP(簡單對象訪問協議)是定義如何從不同環境中的對象調用函數。使用SOAP,就能夠整合不同的操作系統、對象模型和編程語言,使簡化整合不同種類的業務處理過程成爲可能。

  HTTP、XML和SOAP可以看做是Web服務的核心層。這些層定義了Web服務之間交互的方法和途徑。這三個協議已經被W3C(World Wide Web聯盟)接受做爲標準。

  WSDL協議(Web服務描述語言)描述如何與一個Web服務通訊。在WSDL定義中,允許不同類型的通訊(綁定)。它可以用來開發Web服務,同時也可以用來賺錢。爲了實現這個目的,我們需要一個Web服務門戶,我們可以在那裏發佈我們的Web服務,其他的人也能在那裏找到它並使用它。這就需要使用UDDI(Universal Description, Discovery and Integration,統一描述、發現和整合規範)。


(圖1、Web 服務體系結構堆棧)

  Web服務技術通常可以分爲三個關鍵組成部分:描述堆棧(Description Stack)、發現堆棧(Discovery Stack)和線堆棧(Wire Stack)。描述堆棧處理描述Web服務的各種技術,以便促進B2B關係中的業務處理模型和工作流程結構的通用性。發現堆棧處理那些供目錄、發現和審查服務使用的技術。線堆棧由爲Web服務運行期引擎提供信息流的技術組成。

  Web服務的結構單元

  Web服務基於開放的因特網標準,它的結構單元是SOAP、WSDL和UDDI。

  SOAP

  SOAP是序列化調用位於遠程系統上的服務所需信息的標準方法,這些信息可以使用一種遠程系統能夠讀懂的格式通過網絡發送到遠程系統,而不必關心遠程系統運行於何種平臺或者使用何種語言編寫。SOAP以XML格式提供了一個簡單、輕量的用於在分散或分佈環境中交換結構化和類型信息的機制。SOAP本身並沒有定義任何應用程序語義,如編程模型或特定語義的實現;實際上它通過提供一個有標準組件的包模型和在模塊中編碼數據的機制,定義了一個簡單的表示應用程序語義的機制。這使SOAP可用於聯合各種現有的網絡協議和格式,包括HTTP、SMTP和MIME,並可被用於消息傳遞到RPC的各種系統。

  SOAP解決了通過防火牆傳送往返於遠程應用程序的消息的問題。除了通過某些預先設定的作爲特定用途的端口,防火牆通常禁止通過其它端口進行遠程通訊。這就出現了一個問題,大部分分佈式協議不使用分配的端口,而是動態地選擇端口。微軟SOAP技術實現的解決方案是通過HTTP的80端口傳送對遠程進程的調用。這個遠程調用使用XML定義消息請求或響應的格式,把調用附加到HTTP協議的頂部。這個技術的優點之一就是降低通過防火牆傳送消息的複雜性。但是80端口通常還用來作爲Web通信之用,所以可能會降低其效率。
SOAP可以用來解決因特網應用程序的交互性問題。你可以使用一種平臺無關性方式在遠程(或本地)服務器上訪問對象和服務。現在的互聯網世界由不同的操作系統、不同的防火牆、不同的產生遠程過程調用的方法和平臺組成。爲了跨因特網交互,客戶機和服務器都需要了解彼此的安全類型和信任、服務部署模式和實現細節以及平臺語言。使用SOAP,這種平臺特定性的混亂局面就會結束。基於已被業界廣泛接受的HTTP標準和XML標準,SOAP也可與其競爭對象RPC技術連通,並提供用於任何操作系統、程序語言和平臺的輕量級消息格式。

  在SOAP體系結構有四個主要的部分:

   SOAP信封(envelope),用於描述消息內容和處理方法。
 
   SOAP編碼規則:定義了一個編碼機制用於交換應用程序定義的數據類型的實例。

   SOAP RPC表示,定義了一個用於表示遠程過程調用和響應的約定。

   SOAP綁定,定義了一個使用底層傳輸協議來完成在結點間交換SOAP信封的約定。

  簡單的說,SOAP提供了使用完全獨立於平臺的訪問服務、對象和服務器的技術。通過SOAP,你將能夠查詢服務、調用服務、與服務通訊並處理服務,而不用去關心遠程系統的位置、所在的操作系統或平臺到底是什麼樣的。

  SOAP本身提供了與Web服務交換信息的方法,但是它沒有提供查找Web服務消息的方法。而且它還不提供查找Web服務或與之交涉的方法。

  WSDL

  Web服務描述語言(WSDL)和SOAP一起構成了Web服務的核心結構單元。WSDL基於XML格式,用來描述Web服務。它描述了Web服務可以執行的操作以及Web服務可以發送或接收的消息格式。WSDL文檔可以看成是客戶端和服務器之間的一個協約。使用WSDL工具,你可以自動處理這個過程,幾乎不用手工編寫代碼就能夠讓應用程序整合新的服務。因此WSDL是Web服務體系結構的基礎,因爲它提供了一個通用語言,用來描述服務和整合這些服務的平臺。

  雖然大部分WSDL文檔使用RPC風格的要求/應答語句對,但是WSDL也支持單向的消息。WSDL支持四種SOAP消息操作:

   單向 (One-way):端點接收消息。

   請求響應 (Request-response):端點接收消息,然後發送相關消息。

   要求響應 (Solicit-response):端點發送消息,然後接收相關消息。

   通知 (Notification):端點發送消息。

  UDDI

  UDDI(統一描述、發現和整合)建了一個平臺獨立、開放的框架,通過因特網來描述服務,發現業務,並且整合業務服務。它是一套基於Web的、分佈式的、爲Web服務提供的信息註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web服務註冊以使得別的企業能夠發現的訪問協議的實現標準。

  通過使用UDDI的發現服務,企業可以單獨註冊那些希望被別的企業發現的自身提供的Web服務。企業可以通過UDDI商業註冊中心的Web界面,或是使用實現了"UDDI Programmer's API標準"所描述的編程接口的工具,來將信息加入到UDDI的商業註冊中心。UDDI商業註冊中心在邏輯上是集中的,在物理上是分佈式的,由多個根節點組成,相互之間按一定規則進行數據同步。當一個企業在UDDI商業註冊中心的一個實例中實施註冊後,其註冊信息會被自動複製到其它UDDI根節點,於是就能被任何希望發現這些Web服務的人所發現。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章