常常聽到公司同事談論resf,rpc,最近花時間瞭解了下 resf,rpc,soap這些都是 WebService提供服務的實現方法 隨着應用的不斷壯大,須要將服務獨立出來,給客戶端提供服務。目前經常使用的方法就是: RPC 所謂的遠程過程調用 (面向方法) SOA 所謂的面向服務的架構(面向消息) REST 所謂的 Representational state transfer (面向資源) 若是說 RPC 是基於方法調用(method),那麼 SOA 則是基於 消息, 基於方法調用一般會與特定的程序語言 耦合起來,然後者則與具體的實現語言無關, 因此在必定程度上獲得大公司的支持。 RPC即遠程過程調用,簡單的說就是像調用本地服務(方法)同樣調用服務器的服務(方法). 一般的實現有 XML-RPC , JSON-RPC , 通訊方式基本相同, 所不一樣的只是傳輸數據的格式.緩存
REST不是一種協議,它是一種架構,一種WebService若是可以知足REST的幾個條件,則它一般稱這個系統爲Restful的 REST架構風格最重要的架構約束有6個:服務器
客戶-服務器(Client-Server) 通訊只能由客戶端單方面發起,表現爲請求-響應的形式。網絡
無狀態(Stateless) 通訊的會話狀態(Session State)應該所有由客戶端負責維護。架構
緩存(Cache) 響應內容能夠在通訊鏈的某處被緩存,以改善網絡效率。less
統一接口(Uniform Interface) 通訊鏈的組件之間經過統一的接口相互通訊,以提升交互的可見性。設計
分層系統(Layered System) 經過限制組件的行爲(即,每一個組件只能「看到」與其交互的緊鄰層),將架構分解爲若干等級的層。orm
按需代碼(Code-On-Demand,可選) 支持經過下載並執行一些代碼(例如Java Applet、Flash或JavaScript),對客戶端的功能進行擴展。 HTTP 和REST HTTP是一種協議,而REST只是一種設計風格,具體的服務提供仍是要經過HTTP協議進行傳輸 DUBBO和REST接口