日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > 論REST架構與傳統MVC

論REST架構與傳統MVC

來源:程序員人生   發布時間:2015-02-06 08:30:44 閱讀次數:3621次

1前言 :     

       由于 REST 可以下降開發的復雜度,提高系統的可伸縮性,增強系統的可擴大性,簡化利用系統之間的集成,因此得到了廣大開發人員的愛好,同時得到了業界廣泛的支持。比如 IBM,Google 等公司的很多產品都提供了 REST API 給開發人員;與此同時,大量的開源項目和云計算服務都提供了 REST API 接口。

       而在最近,1些新產品的開發乃至已幾近完全拋棄了傳統的類似 JSP 的技術, 轉而大量使用 REST 風格的構架設計, 即在服務器端所有商業邏輯都以 REST API 的方式暴露給客戶端, 所有閱讀器用戶界面使用 widget,Ajax,HTML5 等技術,用 HTTP 的方式與后臺直接交互。


2:甚么是REST

       REST是英文Representational State Transfer的縮寫,中文翻譯為“表述性狀態轉移”,他是由Roy Thomas Fielding博士在他的論文 《Architectural Styles and the Design of Network-based Software Architectures》中提出的1個術語。REST本身只是為散布式超媒體系統設計的1種架構風格,而不是標準。 

     基于Web的架構,實際上就是各種規范的集合,這些規范共同組成了Web架構。比如Http協議,比如客戶端服務器模式,這些都是規范。每當我們在原有規 范的基礎上增加新的規范,就會構成新的架構。而REST正是這樣1種架構,他結合了1系列的規范,而構成了1種新的基于Web的架構風格。

 

3:REST規范

(1)客戶-服務器 

        這類規范的提出,改良了用戶接口跨多個平臺的可移植性,并且通過簡化服務器組件,改良了系統的可伸縮性。最為關鍵的是通過分離用戶接口和數據存儲這兩個關注點,使得不同用戶終端享受相同數據成了可能。

(2)無狀態性 

      無狀態性是在客戶-服務器束縛的基礎上添加的又1層規范。他要求通訊必須在本質上是無狀態的,即從客戶到服務器的每一個request都必須包括理解該 request所必須的所有信息。這個規范改良了系統的可見性(無狀態性使得客戶端和服務器端沒必要保存對方的詳細信息,服務器只需要處應當前 request,而沒必要了解所有的request歷史),可靠性(無狀態性減少了服務器從局部毛病中恢復的任務量),可伸縮性(無狀態性使得服務器端可以 很容易的釋放資源,由于服務器端沒必要在多個request中保存狀態)。同時,這類規范的缺點也是不言而喻得,由于不能將狀態數據保存在服務器上的同享上 下文中,因此增加了在1系列request中發送重復數據的開消,嚴重的下降了效力。

(3)緩存 

       為 了改良無狀態性帶來的網絡的低效性,我們填加了緩存束縛。緩存束縛允許隱式或顯式地標記1個response中的數據,這樣就賦予了客戶端緩存 response數據的功能,這樣就能夠為以后的request共用緩存的數據,部份或全部的消除1部份交互,增加了網絡的效力。但是用于客戶端緩存了信 息,也就同時增加了客戶端與服務器數據不1致的可能,從而下降了可靠性。

     B/S架構的優點是其部署非常方便,但在用戶體驗方面卻不是很理想。為了改良這類情況,我們引入了REST。 

     REST在原本的架構上增加了3個新規范:統1接口,分層系統和按需代碼。 

(4)統1接口 

     REST 架構風格的核心特點就是強調組件之間有1個統1的接口,這表現在REST世界里,網絡上所有的事物都被抽象為資源,而REST就是通過通用的鏈接器接口對 資源進行操作。這樣設計的好處是保證系統提供的服務都是解耦的,極大的簡化了系統,從而改良了系統的交互性和可重用性。并且REST針對Web的常見情況 做了優化,使得REST接口被設計為可以高效的轉移大粒度的超媒體數據,這也就致使了REST接口對其它的架構其實不是最優的。

(5)分層系統 

      分層系統規則的加入提高了各種層次之間的獨立性,為全部系統的復雜性設置了邊界,通過封裝遺留的服務,使新的服務器免受遺留客戶真個影響,這也就提高了系統的可伸縮性。

(6)按需代碼 

      REST允許對客戶端功能進行擴大。比如,通過下載并履行applet或腳本情勢的代碼,來擴大客戶端功能。但這在改良系統可擴大性的同時,也下降了可見性。所以它只是REST的1個可選的束縛。 


4: REST的設計準則 
     REST架構是針對Web利用而設計的,其目的是為了下降開發的復雜性,提高系統的可伸縮性。REST提出了以下設計準則: 

   
網絡上的所有事物都被抽象為資源(resource); 
    每一個資源對應1個唯1的資源標識符(resource identifier); 
    通過通用的連接器接口(generic connector interface)對資源進行操作; 
    對資源的各種操作不會改變資源標識符; 
    所有的操作都是無狀態的(stateless)。

     REST中的資源所指的不是數據,而是數據和表現情勢的組合,比如“最新訪問的10位會員”和“最活躍的10為會員”在數據上可能有堆疊或完全相同,而 由于他們的表現情勢不同,所以被歸為不同的資源,這也就是為何REST的全名是Representational State Transfer的緣由。資源標識符就是URI(Uniform Resource Identifier),不論是圖片,Word還是視頻文件,乃至只是1種虛擬的服務,也不管你是xml格式,txt文件格式還是其它文件格式,全部通過 URI對資源進行唯1的標識。 

     REST是基于Http協議的,任何對資源的操作行動都是通過Http協議來實現。以往的Web開發大多數用的都是Http協議中的GET和POST方 法,對其他方法很少使用,這實際上是由于對Http協議認識片面的理解釀成的。Http不單單是1個簡單的運載數據的協議,而是1個具有豐富內涵的網絡軟 件的協議。他不單單能對互聯網資源進行唯1定位,而且還能告知我們如何對該資源進行操作。Http把對1個資源的操作限制在4個方法之內:GET, POST,PUT和DELETE,這正是對資源CRUD操作的實現。由于資源和URI是逐一對應的,履行這些操作的時候URI是沒有變化的,這和以往的 Web開發有很大的區分。正由于這1點,極大的簡化了Web開發,也使得URI可以被設計成更加直觀的反應資源的結構,這類URI的設計被稱作 RESTful的URI。這位開發人員引入了1種新的思惟方式:通過URL來設計系統結構。固然了,這類設計方式對1些特定情況也是不適用的,也就是說不 是所有的URI都可以RESTful的。 

      REST 之所以可以提高系統的可伸縮性,就是由于它要求所有的操作都是無狀態的。由于沒有了上下文(Context)的束縛,做散布式和集群的時候就更加簡單,也 可讓系統更加有效的利用緩沖池(Pool)。并且由于服務器端不需要記錄客戶真個1系列訪問,也減少了服務器真個性能。 


5:如何使用REST

      對開發人員來 說,關心的是如何使用REST架構,這里我們來簡單談談這個問題。REST不單單是1種嶄新的架構,它帶來的更是1種全新的Web開發進程中的思惟方式: 通過URL來設計系統結構。在REST中,所有的URL都對應著資源,只要URL的設計是良好的,那末其顯現的系統結構也就是良好的。這點和TDD (Test Driven Development)很相似,他是通過測試用例來設計系統的接口,每個測試用例都表示1系列用戶的需求。開發人員不需要1開始就編寫功能,而只需要 把需要實現的功能通過測試用例的情勢表現出來便可。這個和REST中通過URL設計系統結構的方式類似,我們只需要根據需求設計出公道地URL,這些 URL不1定非要鏈接到指定的頁面或完成1些行動,只要它們能夠直觀的表現出系統的用戶接口。根據這些URL,我們就能夠方便的設計系統結構。從 REST架構的概念上來看,所有能夠被抽象成資源的東西都可以被指定為1個URL,而開發人員所需要做的工作就是如何能把用戶需求抽象為資源,和如何抽 象的精確。由于對資源抽象的越為精確,對REST的利用來講就越好。這個和傳統MVC開發模式中基于Action的思想差別就非常大。設計良好的URL, 不但對開發人員來講可以更明確的認識系統結構,對使用者來講也方便記憶和辨認資源,由于URL足夠簡單和成心義。依照以往的設計模式,很多URL后面都 是1堆參數,對使用者來講也是很不方便的。 

6:REST和MVC的選擇

     既然REST這 么好用,那末是否是所有的Web利用都能采取此種架構呢?答案是不是定的。我們知道,直到現在為止,MVC(Model-View-Controller) 模式仍然是Web開發最普遍的模式,絕大多數的公司和開發人員都采取此種架構來開發Web利用,并且其思惟方式也停留于此。MVC模式由數據,視圖和控制 器構成,通過事件(Event)觸發Controller來改變Model和View。加上Webwork,Struts等開源框架的加入,MVC開發模 式已相當做熟,其思想根本就是基于Action來驅動。從開發人員角度上來講,冒然接受1個新的架構會帶來風險,其中的不肯定因素太多。并且REST新 的思惟方式是把所有用戶需求抽象為資源,這在實際開發中是比較難做到的,由于其實不是所有的用戶需求都能被抽象為資源,這樣也就是說不是全部系統的結構都能 通過REST的來表現。所以在開發中,我們需要根據以上2點來在REST和MVC中做出選擇。我們認為比較好的辦法是混用REST和MVC,由于這合適絕 大多數的Web利用開發,開發人員只需要對照較容易能夠抽象為資源的用戶需求采取REST的開發模式,而對其它需求采取MVC開發便可。這里需要提到的就 是ROR(Ruby on Rails)框架,這是1個基于Ruby語言的愈來愈流行的Web開發框架,它極大的提高了Web開發的速度。更加重要的是,ROR(從1.2版本起)框 架是第1個引入REST做為核心思想的Web開發框架,它提供了對REST最好的支持,也是現今最成功的利用REST的Web開發框架。實際上,ROR的 REST實現就是REST和MVC混用,開發人員采取ROR框架,可以更快更好的構建Web利用。 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 视频在线一区二区 | 中文在线а√天堂官网 | 成人在线免费视频观看 | 人人爽人人爽 | 精品久久免费 | 成年人免费在线视频 | 成年网站在线 | 国产精品成人一区二区网站软件 | 黄色片在线看 | 国产探花一区二区 | 欧美亚洲一区二区三区四区 | 欧美日韩国产色综合一二三四 | 亚洲精品一区二区网址 | 黄色av电影在线观看 | 亚洲品质自拍视频网站 | 高清av在线 | 久久xxx| 九九九久久久精品 | 精品视频在线免费看 | 在线视频中文字幕 | 国产精品国产成人国产三级 | 久久看视频 | 少妇一级淫片免费看 | 久久熟| 成人免费在线播放 | 在线中文字幕亚洲 | 黄色毛片在线观看 | 成人精品久久 | 久久久久国产精品免费免费搜索 | 亚洲精品粉嫩美女一区 | 国产一二区在线观看 | 自拍偷拍一区 | 欧美久久久 | 欧美成人在线免费 | 精品久久成人网 | 婷婷激情站 | 亚州精品天堂中文字幕 | 毛片真人毛毛片毛片 | 一区二区在线观看视频 | a在线一区| 国产精品日韩 |