標籤:rest 成熟度等級 情境 prot 應用 中標 remote web服務 strong
三種主流的Web服務實現方案為:
REST:表象化狀態轉變 (軟體架構風格)
SOAP:簡易物件存取通訊協定 (SOAP)
XML-RPC:遠端程序呼叫協議
下面分別作簡單介紹:
REST:表徵狀態轉移(Representational State Transfer),採用Web 服務使用標準的 HTTP 方法 (GET/PUT/POST/DELETE) 將所有 Web 系統的服務抽象為資源,REST從資源的角度來觀察整個網路,分布在各處的資源由URI確定,而用戶端的應用通過URI來擷取資源的表徵。Http協議所抽象的get,post,put,delete就好比資料庫中最基本的增刪改查,而互連網上的各種資源就好比資料庫中的記錄(可能這麼比喻不是很好),對於各種資源的操作最後總是能抽象成為這四種基本操作,在定義了定位資源的規則以後,對於資源的操作通過標準的Http協議就可以實現,開發人員也會受益於這種輕量級的協議。REST是一種軟體架構風格而非協議也非規範,是一種針對網路應用的開發方式,可以降低開發的複雜性,提高系統的延展性。
SOAP:簡易物件存取通訊協定 (SOAP)(Simple Object Access Protocol)是一種標準化的通訊規範,主要用於Web服務(web service)中。用一個簡單的例子來說明 SOAP 使用過程,一個 SOAP 訊息可以發送到一個具有 Web Service 功能的 Web 網站,例如,一個含有樓價資訊的資料庫,訊息的參數中標明這是一個查詢訊息,此網站將返回一個 XML 格式的資訊,其中包含了查詢結果(價格,位置,特點,或者其他資訊)。由於資料是用一種標準化的可分析的結構來傳遞的,所以可以直接被第三方網站所利用。
XML-RPC:一個遠端程序呼叫(remote procedure call,RPC)的分散式運算協議,通過XML將調用函數封裝,並使用HTTP協議作為傳送機制。後來在新的功能不斷被引入下,這個標準慢慢演變成為今日的SOAP協定。XML-RPC協定是已登記的專利項目。XML-RPC透過向裝置了這個協定的伺服器發出HTTP請求。發出請求的使用者端一般都是需要向遠端系統要求呼叫的軟體。
三種方案的簡單比較
XML-RPC已慢慢的被SOAP所取代,現在很少採用了,但它還是有著作權的,我在此就不作多介紹
成熟度等級上:SOAP在成熟度等級上優於REST
效率和易用性上:REST更勝一籌
安全性上:SOAP安全性高於REST,因為REST更關注的是效率和效能問題
總體上,因為REST模式的Web服務與複雜的SOAP和XML-RPC對比來講明顯的更加簡潔,越來越多的web服務開始採用REST風格設計和實現。例如,Amazon.com提供接近REST風格的Web服務進行圖書尋找;雅虎提供的Web服務也是REST風格的。REST對於資源型服務介面來說很合適,同時特別適合對於效率要求很高,但是對於安全要求不高的情境。而SOAP的成熟性可以給需要提供給多開發語言的,對於安全性要求較高的介面設計帶來便利。所以我覺得純粹說什麼設計模式將會佔據主導地位沒有什麼意義,關鍵還是看應用情境,正是那句老話:適合的才是最好的
同時很重要一點就是不要扭曲了REST現在很多網站都跟風去開發REST風格的介面,其實都是在學其形,不知其心,最後弄得不倫不類,效能上不去,安全又保證不了,徒有一個看似象摸象樣的皮囊。
三種主流的Web服務實現