1. 程式人生 > >深入理解REST與Servlet架構的區別

深入理解REST與Servlet架構的區別

方法 增刪 ssi 困難 spring 客戶端 and 基於 www.

深入理解REST與Servlet架構的區別

本身這個比較是個偽命題,因為

  • RESTful Service是一個軟件架構“風格”,
  • 而servlet是java 服務端的一種技術

之所以把它們拿出來比較,是由於它們代表了兩個時代的技術風格與架構。下面就來闡述這兩種技術架構的區別。

Servelt API是1998年發布的,它的核心API一直變化不大,非常穩定,也是JavaEE眾多API中最成功的一個。基於Servlet API產生了眾多的框架,比較大家最熟悉的Structs,Spring MVC等。和REST對比,它們有如下特征

  • 它們的核心理念是servelt與handler之前的一個mapping,利用一個配置文件(spring mvc可以是annotation式的配置)來處理servlet和handler之間的mapping關系。
  • Servlet具有session狀態,這也方便了服務器端實現一些帶狀態的邏輯。但同時這樣也導致了servlet實現多服務器的架構帶來了困難,就必須實現復雜的負載均衡、session復制、持久化機制。
  • Servlet獲取客戶端信息的方式更多的是通過request parameters。想想你經常通過getParamter就可以明白。

相對於Servlet,RESTful更多的是一種架構方式的改進,它強調以下幾點:

  • 通過請求URL來獲取信息,路徑即是信息,這也是HTTP的核心理念。
  • 無狀態,狀態轉而通過應用層或者數據庫層來維護。
  • 通過http的POST, DELTE, PUT, GET等方式來實現數據的增刪改查。而不再是借以前servlet中我們經常定義的通過方法名來區別各個方式,比如getXXXByXXX,updateXXX等等。

參考:

http://stackoverflow.com/questions/7874695/servlet-vs-restful

http://www.blogjava.net/Jack2007/archive/2008/10/08/233075.html

深入理解REST與Servlet架構的區別