工做中要用到jersey來實現restful風格的webservice。對於webservice另外一定的認知(可以以爲是一種服務,遠程調用的組件),但是對於restful筆者根本就木有了解過,restful到底是什麼,是一種技術?規範?因而筆者花了些時間查詢了下資料,看了下書,總算有點眉目了。java
REST(REresentation State Transfer:表象化狀態轉變)描寫敘述了一個架構樣式的網絡系統,它是一種架構風格、設計風格而不是標準、技術,只不過提供了一組設計原則和約束條件(而且並不強制)。Restful式的架構主要用於client和server交互類的軟件,基於這個風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制。現在來講,REST/RESTful都是指的RESTful Web Service。web
REST是面向資源的架構風格,一般基於使用HTTP,URI,和XML以及HTML這些現有的普遍流行的協議和標準。在你的應用系統管理之下的不論什麼事物都將被以爲是一個資源(resource),每個資源必須至少有一個URI(儘可能少且具備實際意義)。api
對於實際的web架構假設要實現RESTful風格,有下面4點要求:瀏覽器
RESTful最重要的原則是:client和server之間的交互在請求之間是無狀態的。從client到server的每個請求都必須包括理解請求所必須的信息。這樣server端在請求期間從新啓動,client不會獲得通知,且無狀態請求可以由不論什麼可用服務進行回答,client可以緩存數據以改進性能。緩存
層次化的系統表示組件沒法瞭解它與之交互的中間層之外的組件。經過將系統知識限制在但各層,可以限制整個系統的複雜性,促進了底層的獨立性。restful
應該注意差異應用的狀態和鏈接協議的狀態。HTTP鏈接是無狀態的(也就是不記錄每個鏈接的信息),而REST傳輸會包括應用的所有狀態信息,所以可以減小對HTTP鏈接的反覆請求資源消耗。網絡
含狀態傳輸的web服務也稱爲RESTful web api是一個使用HTTP並遵循REST原則的Web服務(JAX-RS規範定義了java對RESTful Web Service的實現,sun的jersey框架則是多JAX-RS的一個實現,jersey也是興許要學習的)。架構
RESTful web api從下面三個方面資源進行定義:框架
一、可更高效利用緩存來提升響應速度。性能
二、無狀態性可以讓不一樣server的處理一些列請求中的不一樣請求,提供server的擴展性。
三、瀏覽器就能夠做爲client,簡化軟件需求。
四、相對於其它疊加在HTTP協議之上的機智,REST的軟件依賴性更小
五、不需要額外的資源發現機制。