每當一些
web 應用服務提供方提出允許開發者整合他們的服務的 web 服務 api 時,大家都非常關心由 api 實現的互操作設計模式。如果 api 使用的是 rest 樣式的互操作,rest 方法的擁護者就會將該 api 作為說明為什麼 rest 樣式服務比 soap 樣式服務更優越的重要例子而加以稱讚;同樣地,如果 api 使用 soap 樣式 web 服務模式,情況也類似。似乎很少有人關心這樣的乙個事實,模式的選擇主要取決於正在被執行的應用程式的型別,並且像所有優秀的體系結構決策一樣,開發者應該將他們的選擇基於正在被開發的應用程式的特定技術需求和特性,而不是基於針對單一體系結構方法的一些特殊偏好。
資源還是活動?
從基本原理層次上說,
rest 樣式和 soap 樣式 web 服務的區別取決於應用程式是面向 資源的還是面向 活動的。
面向資源服務
集中於明確的資料物件,一些基本、標準的操作可以依據這些資料物件而執行。如權威的
gang of four(gof) 設計模式這本書所述,對於熟悉物件導向設計模式概念的開發者來說,面向資源服務與基本 memento 模式類似。實際上,服務提供方維護一組資源,並且公開一組基本操作來執行以下任務:
根據定義,
rest 樣式 web 服務是面向資源的服務。您可以通過統一資源識別符號(universal resource identifier,uri)來識別和定位資源,並且針對這些資源而執行的操作是通過 http 規範定義的。其核心操作包括:
在許多方面,
rest 樣式 web 服務與 sql、元組空間(tuple spaces)、簡單訊息列隊等技術相似。它們都使用普通的簡單操作針對明確的資源起作用。
在每乙個案例中,服務介面的設計允許您移動關於資源的資訊,讓其依賴於請求方來指出希望通過這些資訊來做什麼。
與此相對的是 面向活動的資源。該型別的應用程式集中於您可能執行的操作,而不是集中於操作所依靠的資源。活動服務的乙個簡單的例子就是銀行事務,在那裡使用者可以把錢從乙個賬戶轉移到另乙個賬戶上。使用者不想直接操作資源(錢、銀行賬戶等等),他們只想告訴銀行他們想要達到的目的,並且讓銀行根據他們的利益對資源進行處理。用
gof 術語來描述應用程式:
面向資源服務不管資源的型別怎樣,執行的操作可以保持相對不變,與面向資源服務不同,面向活動服務的操作完全依賴於正在執行的活動型別。例如,銀行服務可以公開乙個名為transferfunds
的操作,該操作不同的輸入將完全決定服務的資金轉移功能。
在面向資源的服務中,一組普通操作擔當支援性的工作角色,為客戶端提供訪問和操作資源。然而,資源是關注的中心,如下面
圖 1
所示。圖 1. 面向資源服務與面向活動服務的比較
soap 樣式 web 服務通常是面向活動的。 wsdl 文件定義並描述特定於服務的操作。操作由特定於服務的訊息交換組成。每乙個操作都是乙個可以執行的活動。那些正在被執行的操作所針對的內容通常是不相關的。正如 web 服務資源框架系列規範所描述的,資源可以隱含在活動之中,但是這種隱含與活動的定義不相關,並且只是為了改進執行活動所依賴的上下文。與針對資源而執行活動的面向資源服務相比,它和用來訪問資源的服務介面互不相關。
來自:
面向資源與面向活動的 Web 服務
每當一些 web 應用服務提供方提出允許開發者整合他們的服務的 web 服務 api 時,大家都非常關心由 api 實現的互操作設計模式。如果 api 使用的是 rest 樣式的互操作,rest 方法的擁護者就會將該 api 作為說明為什麼 rest 樣式服務比 soap 樣式服務更優越的重要例子而...
Web服務與面向服務的體系結構
soa service oriented architecture 面向服務的體系結構 是由元件 服務 業務過程組成的可以滿足機構業務需求的體系結構,是一種非常好的建立複雜系統的體系架構的模型。soa有助於 重用 降低成本 風險,還可縮短產品進入市場的時間。從某種意義上說,soa更多是一些指導原則,...
REST與面向資源的Web開發 李錕 讀書筆記
1 什麼是web 從技術角度理解web有三大基石,第一是uri,標識資源,第二個http操作資源,第三個hypertext超文字,描述資源的狀態,超文字也可以有xml json或者純文字。下面我們給web應用下乙個定義,究竟什麼是web應用?首先要使用三大技術,其次是執行在英特耐特環境中,而不是執行...