Web Service概念:
根據W3C的定義,Web服務(Web service)應當是一個軟件系統,用以支持網絡間不同機器的互動操作。網絡服務通常是許多應用程序接口(API)所組成的,它們通過網絡的遠程服務器端,執行客戶所提交服務的請求。簡單的來說就是服務器端向客戶端提供服務。
Web Service實現方式:
(1)遠程過程調用(RPC)
RPC協議就是為了解決不同的客戶端跨平台的訪問服務器而產生的,最初的Web Service都是采用RPC部署,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。 rpc不依賴於具體的網絡傳輸協議,tcp、udp、http等都可以。由於存在各式各樣的變換和細節差異,相應的rpc也派生出了各式遠程過程通信協議。由於它的緊耦合性,未來將不會大有作為。
(2)面向服務架構(SOA)
在服務導向架構中,通訊由消息驅動,而不再是某個動作(方法調用)。這種WEB服務也被稱作面向消息的服務。
(3)表述性狀態轉移(REST)
REST的架構設計
REST(Representational State Transfer)是一種輕量級的Web Service架構風格,其實現和操作明顯比SOAP和XML-RPC更為簡潔,可以完全通過HTTP協議實現,還可以利用緩存Cache來提高響應速度,性能、效率和易用性上都優於SOAP協議。
REST架構遵循了CRUD原則,CRUD原則對於資源只需要四種行為:Create(創建)、Read(讀取)、Update(更新)和Delete(刪除)就可以完成對其操作和處理。這四個操作是一種原子操作,即一種無法再分的操作,通過它們可以構造復雜的操作過程,正如數學上四則運算是數字的最基本的運算一樣。
REST架構讓人們真正理解我們的網絡協議HTTP本來面貌,對資源的操作包括獲取、創建、修改和刪除資源的操作正好對應HTTP協議提供的GET、POST、PUT和DELETE方法,因此REST把HTTP對一個URL資源的操作限制在GET、POST、PUT和DELETE這四個之內。這種針對網絡應用的設計和開發方式,可以降低開發的復雜性,提高系統的可伸縮性。
REST的設計准則
REST架構是針對Web應用而設計的,其目的是為了降低開發的復雜性,提高系統的可伸縮性。REST提出了如下設計准則:
網絡上的所有事物都被抽象為資源(resource);
每個資源對應一個唯一的資源標識符(resource identifier);
通過通用的連接器接口(generic connector interface)對資源進行操作;
對資源的各種操作不會改變資源標識符;
所有的操作都是無狀態的(stateless)。
使用REST架構
對於開發人員來說,關心的是如何使用REST架構,這裡我們來簡單談談這個問題。REST不僅僅是一種嶄新的架構,它帶來的更是一種全新的Web開發過程中的思維方式:通過URL來設計系統結構。REST是一套簡單的設計原則、一種架構風格(或模式),不是一種具體的標准或架構。REST架構有很多成功案例,如Facebook,Yahoo等