關於html、asp、php模板引擎、aspnet mvc、REST的一點思考

     先看我對REST的一點認識,下面是《rest實戰》 這本書的序言文字:
      在我剛剛開始從事解決計算問題的時候,業界就有不少人有一個願望:將系統設計爲可以被自由組合的組件。互聯網(Internet)無遠弗屆的普遍鏈接爲這個願望推波助瀾,而且增長了一個新的願望:使得組件在引入了延遲和不可靠性的網絡之上也能正常工做。人們嘗試了這個世界上的不少系統,其中的許多系統都失敗了——一般伴隨着悲傷的啜泣。
  一個偉大的成功案例是WWW(WorldWideWeb,萬維網)。它的成功既滲透進了商業運轉之中,也滲透進了流行文化之中。它爲人們提供了一個機會:在全球範圍內以幾乎任意預先安排的協做方式從不少來源獲取信息。
  正如咱們如今所知道的,Web並不是是計算問題的所有或者終極的解決方案,可是有不少人相信Web給咱們上了重要的一課,即如何構造一個由網絡化的組件組成的系統。不少人利用了Web的協議——HTTP來鏈接系統。可是有一些人認爲咱們應該更進一步,不只僅將HTTP做爲一種便於使用的數據通道,而是擁抱Web自己正常工做的方式,將其做爲系統協做的基礎。 php

這種思想集合在「REST」這個名字下,它所指的是RoyFielding的博士論文,這篇論文被說起的次數遠遠超過了它真正被閱讀的次數。追隨REST的原理成爲了日益增加的共識,它爲網絡化的組件正常工做開闢了一條碩果累累的大路,而這條大路正創建在Web自身的巨大成功之上。
  這個願景是頗有吸引力的,可是爲了達到目標還須要作不少事情。咱們必須理解REST的原理,而且思考如何將其應用到系統集成天天所要解決的問題之上。這就是本書的做者所承擔的任務:將REST從一個有吸引力的願景變成一個已經實現的系統。他們已經作了不少,教會了我如何從資源的角度思考,如何使用HTTP的慣用語(idiom),以及超媒體控件(hypermediacontr01)的重要性。做爲閱讀的結果,本書將爲你應用REST思想的核心元素打下堅實的基礎。 html

REST」是一種思想,運用到開發上就是一種架構風格。
1)而使用「REST」的目的是什麼了?
       經過上面這段文字能夠得出就是用來開發大量的網絡化組件,這樣之後一個系統的設計就只要對這些網絡化組件進行自由組合就能夠了。
好比:如今大部分的互聯網公司,阿里、百度、騰訊、優酷、新浪等都開發了本身的開發平臺,對公佈了不少業務接口提供給開發者進行二次開發,咱們能夠想象成這些接口就是咱們系統中的組件,本身開發一個系統的時候直接用這些組件就能夠了;固然如今這些網絡組件還不是不少,不能徹底知足支撐一個系統,但只要之後各個公司都遵循這種思想去作的話,系統的組件化是早晚的事。前端

2)互聯網早就有了,那爲何REST如今才被提出來了?
       這咱們就要回過頭來看一下整個Web開發過程,從中尋找咱們須要的答案。
互聯網剛開始只是你們用來對文件、文字、圖片等資源進行分享的,因此那時候的網頁基本都是用HTML編寫的靜態頁面,每個url地址都是對應着一個惟一的資源,多是一篇文章,也能夠是一張圖片。用如今的REST來看那時候的互聯網是徹底符合這種思想的。
讓互聯網牢牢作資源的分享,是不夠的,咱們還要在上面進行交互,業務處理等,那麼動態腳本隨之產生,表明就是如今還存在的asp 、php、aspnetmvc等。
       如今重點討論asp、php模板引擎、aspnet mvc三者產生的緣由,從而解答上面提出的問題。
asp是微軟爲了迎合市場推出的動態腳本語言,在自家的IIS服務器運行。原理也很簡單,就是發送url請求後,IIS接收對地址中指定的asp文件進行編譯,把裏面的asp腳本代碼轉換爲html代碼再返回給瀏覽器。這樣咱們經過編寫asp腳本就能夠實現與前端的交互了,可是後來發現編寫這種動態腳本是很痛苦的,調試麻煩,代碼閱讀性差,功能很差重用等。要解決這個問題就得把界面代碼與動態腳本代碼進行分離,那麼就出現了模板引擎、MVC等程序結構。
我的以爲看php代碼就是要先弄清楚代碼中使用了什麼樣的模板引擎,把這個弄清楚後下面的代碼就很順暢了,否則總感受雲裏霧裏,找不到程序的脈絡。
       以爲MVC應該是在模板引擎以後出現的,模板引擎只是解決了後臺業務代碼與前臺界面代碼直接的分離,而MVC對這些內容作了更明確的定義,把前臺界面代碼定義爲View、後臺業務代碼定義爲Model、再就是對界面的交互控制用Controller來處理。因此MVC成爲了現在開發大一點的web系統的主流框架;
咱們從語言談到了程序結構,這跟咱們想說明的REST又有什麼關係了?
        頗有關係,前面我說html時代實際上是徹底符合REST思想的,而到後面的asp、php、mvc就反而脫離了REST思想了。REST要達到組件化的目的,資源必須惟一標識,而動態語言,更確切的說是模板引擎、MVC徹底打破了這種原則,由於他們是從業務功能的角度來設計程序的,這種設計使資源的訪問動態化了,而這種動態的規則又只有程序設計者清楚,因此要想把這種功能組件化是不可能的;而如今Web系統原來越多,也離當初的設想原來越遠因此從新提出REST這個概念,讓咱們不要在岔路上越走越遠;web

       總結:系統組件化在桌面時代一直沒可以實現,而在互聯網時代是徹底有可能成功的,由於互聯網的精神就是「開放、平等、協做、分享」。瀏覽器

本文章只是一個即興所想,拿出來和你們分享一下,裏面的觀點不必定正確,請你們指正~~服務器

 

       整過過程就是這樣的,互聯網剛開始的時候仍是符合REST的,隨着動態腳本的技術發展,設計的程序原來越偏離REST,因此如今從新提出REST,但不可能回到老路,那麼就要把如今MVC技術改造爲支持REST的一種新架構。網絡

相關文章
相關標籤/搜索