第3部分: 在WebSphere中使用REST體繫結構樣式構建可使用的Web服務
本系列討論如何開發組合應用程式來支援商務服務,本文是其中的第三篇文章。本文的重 點是代表性狀態傳輸(Representational State Transfer,REST)體繫結構樣式。通過使用 Facade 組件作為 REST 樣式的介面,現有的 SOAP 樣式的 Web 服務支援可自訂的 URL、 多資源格式表示、瀏覽器響應緩衝、大型附件的流化以及使用 HTTP 方法來操作資源。
引言
代表性狀態 (REST) 體繫結構樣式提供了壁壘較低的使用 Web 服務門檻。典型 REST 樣 式應用程式的外部介面包括大量統一資源識別項(Uniform Resource Identifier,URI)可 定址資源和一些操作,如建立、讀取、更新和刪除 (CRUD) 等。這樣的體繫結構樣式的優勢 是其簡單性。
開發人員兼作家 Paul Prescod 將 REST Web 服務定義為“使用 HTTP 協議的文法 和語義將其功能完全作為一組 URI 可定址資源提供的 Web 服務”(請參見參考資料) 。可以將全球資訊網本身視為 REST 樣式的例子。位於 Web 底層的 HTTP 協議使用統一資源定位 符Uniform Resource Locator,URL)來表示資源和一些廣泛使用的 HTTP 方法,如用於操作 資源的 GET、POST、PUT、HEAD 和 DELETE。這個簡單的體繫結構樣式通過重用 Web 的鬆散 耦合與分布式基礎設施來提供延展性和互動能力。
本文給出了一個銀行商務服務樣本,該服務將貸款利率發布到類似於 Bankrate 的彙總器 網站(請參見參考資料)。彙總器網站通常從多個不同的供應商收集資訊,並將其彙總為客 戶端 Mashup。這也稱為透明地組合,可以將其視為組合應用程式。為了方便地建立此類 Mashup,服務提供者需要公開一個簡化介面。REST 體繫結構樣式可很好地滿足此要求。
本文建議使用Facade 組件 來向現有 SOAP 樣式的 Web 服務提供 REST 樣式的介面。本 文描述組件所需的功能,並將這些功能捕獲在 Rational® Software Architect 可重用 資產規範(Reusable Asset Specification,RAS)模式中。此模式由端點和現有 Web 服務 的操作進行參數化。可以將此模式轉換為可部署的 Java™ 2 Enterprise Edition (J2EE) Servlet 實現,以調用現有 Web 服務。這個產生的 Servlet 支援所需的 REST 樣式 功能,如瀏覽器緩衝、資源內容格式協商和使用 SOAP Attachment for Java (SAAJ) 標準進 行大型附件的 HTTP 流化。
REST 樣式的 Facade 組件所需的功能
在 REST 樣式的 Web 服務 Facade 組件中需要以下功能:
用於指示 REST 樣式的資源的可自訂 URL REST 體繫結構樣式支援採用 URL 來提供對 細粒度資源的訪問。例如,在貸款應用程式中,銀行在特定日期提供的貸款利率就是一個必 需的資源。通過使用不同的 URL 表示每個細粒度資源,可允許其他應用程式(如電子郵件) 方便地引用這些資源。這還同時支援使用 Web 2.0 技術(如 Ajax)進行用戶端資源群組合。 因此,Web 服務 Facade 組件允許應用程式開發人員自訂表格示資源的 URL。
用於操作資源的 HTTP 方法,如 GET、POST、DELETE、PUT、TRACE 和 OPTIONS。 REST 樣式的 Web 服務允許通過數量較少的常用操作訪問資源,如用於擷取資源的表示形式、擷取 關於資源的資訊以及操作資源的各個獨立操作。HTTP 協議已經定義了這樣的操作集(GET、 POST、PUT 等等)。(有關 HTTP 方法的更多資訊,請參見參考資料。)Facade 組件支援使 用這些 HTTP 方法。請注意,針對 SOAP Web 服務的 Web 服務描述語言(Web Service Description Language,WSDL)1.1 僅支援 HTTP POST 方法。WSDL 2.0 通過包括對 HTTP GET 綁定的支援對此進行了補充,但在 WebSphere® Application Server V6.1 中尚不 支援 WSDL 2.0。另請注意,HTTP DELETE、PUT、TRACE 和 OPTIONS 方法使用並不頻繁,而 且經常被防火牆阻止。
資源表示形式和內容格式協商 URL 所訪問的每個資源都可以使用不同的形式加以表示, 具體取決於訪問資源的客戶機。客戶機可以是台式電腦上的 HTML 瀏覽器或其他 SOAP Web 服務或 Ajax 或 JavaScript Object Notation (JSON) 客戶機(請參見參考資料)。Facade 組件查詢 HTTP 要求的 Accept Header 欄位來確定客戶機所需的響應格式,並隨後以所需的 格式提供資源。
資源表示形式的瀏覽器與網關代理緩衝 REST 樣式的結果最常用於使用 HTTP GET 方法訪 問資源。對於 HTTP GET 請求,REST 樣式的 Web 服務可以設定 HTTP 響應 Header 欄位來 提供指示資訊,以確定 網頁瀏覽器是否緩衝返回的資源表示形式以及緩衝多長時間、要緩衝 的資源表示形式的有效或失效策略是什麼。通過支援響應緩衝,可提高應用程式的延展性 。Facade 組件會相應地將 HTTP Header Cache-Control 響應指令設定為 PUBLIC、PRIVATE 等。
使用 SAAJ 來調用 SOAP 樣式的 Web 服務 SOAP 樣式的 Web 服務以 XML 形式返迴響應 ,而此格式通常是 REST 樣式客戶機需要的資源表示形式。所以,Facade 組件可避免由於直 接訪問 XML 格式的 SOAP 響應訊息而造成的不必要的解除封送處理開銷。為此,Facade 組件使 用 SAAJ 來調用現有的 Web 服務。SAAJ 還可以通過 HTTP 對 Web 服務響應中附件內的大量 資料進行流化。
REST 樣式的 Web 服務 Facade 的 RAS 模式
簡單而言,RAS 模式是一種可重用資產,描述給定上下文中重複出現的問題的解決方案( 請參見參考資料部分,其中提供了指向 IBM Pattern Solution 網站的連結)。可以使用 IBM Rational Software Architect (RSA) 之類的工具來捕獲模式,以自動化解決方案開發 工作。下面的部分將對 RAS 模式進行描述,用以捕獲 REST 樣式的 Web 服務 Facade 的所 需功能。
下載和安裝模式
請參見下載部分,其中提供了打包為可重用資產的一個 REST 模式和一個轉換外掛程式。通過 以下步驟將此資產安裝到 RSA 中: