如何設置Web服務器的權限?
服務器的mvc被淘汰了。
用mvc也是在前端,在js框架上用mvc,這樣服務器完全變成json的數據獲取api了,當然權限控制需要設置在服務器,但這個是很個簡單的需求,如jsp中只要用session在頭文件中判斷一下是否有權限,一行程序就可以解決,根本不用犯病用mvc,引入spring這種嚴重影響性能的反射機制。
如果你在html和js中用mvc,又在服務器中用mvc,這完全是過度設計,需要考慮二個mvc,考慮n層的問題,根本沒有必要,服務器的mvc會導致性能低下,如果大量使用spring的反射速度會非常慢,而且把問題變得非常復雜。
web開發框架不斷變化,但最終回到了通信量最小化的模式,即同樣的服務器下客戶端和服務器傳輸量最小的模式,即為最好模式,也為最優模式。
一、最早的是cgi開發,也就是一個http請求一個html文件被程序拼接出來輸出,這個方法是所有方法的基礎,通信應答方式,但每次請求需要傳輸最大化重復數據。
二、后來出現了類似java的servlet,c#的httphandler這個在cgi開發上的包裝,主要可以處理session,get,post,request,response各種情況,通過get參數,post參數來獲取動態內容,對服務器程序有一定復用。
三、再后來發現通過http處理框架,不能熱布署,需要重啟才能有效。這時發展出來了php,asp,asp dot net,jsp這種熱加載框架,工作原理就像定時器一樣把這些網頁翻譯成類似cgi來工作。
四、人們總是不斷追求,發現php,jsp,就是代碼和html混雜在一起,如是發展出了以java mvc為代表的分離綁定,出現了struts,spring,.net mvc,php zend mvc這種框架。
五、mvc出現后,發現開發一個界面需要改m,v,c三個部分,html視圖出現支離破碎的情況,可能一部分html代碼出現在m層,一部分html代碼出現在v層,一部分html代碼出現在c層,不方便美工分工合作,也不方便用于內容與視圖的分離,于是又出現了模板開發,模板可能存在于數據庫中動態生成內容,Velocity/NVelocity,FreeMarker,Thymeleaf,Razor等等。
五、模板開發號稱簡化了開發結果很多主流編輯器都不支持,很多有性能有問題,很多web應用需要無刷新需求,如gmail,來一個郵件可以顯示出來,而不是需要用戶不斷刷新頁面才能顯示,不斷的頁面轉跳影響用戶體驗,以jquery為代表ajax前端框架出現,直接從服務器獲取json數據,動態綁定到html內容上。
六、大型web應用用面向過程的事件驅動開發會程序可能會像一根面條一樣,動一根而動全身,加上各大瀏覽器競爭,在解析javascript性能得到很大的提升,html5和移動互聯網的發展讓web開發更加復雜,這時出現了前端使用mvc框架,把服務器當做通信api,用js獲取json動態綁定到mvc的模板上。由于js都是在前端運行,多是開源的,出現了很多js框架,如Angular, Ember,Vue,React等,同時出現了大量的js ui庫,如jquery ui,extjs,bootstrap等。在后端出現了微服務,webapi,websokect這種通信框架也需要js配對。在js上各種框架層出不窮,程序的業務功能不斷向前端實現。
人們很多時候還是排列組合使用這些開發模式,但過去的很多框架受技術限制,只能委屈求全,折中出各種模式,通信量最小化無疑是一種最優選擇,服務器端mvc性能差,向前端mvc發展是必然,在ajax+js mvc出現后,服務器理論上實現了通信量最小化(不考慮數據壓縮的同等情況下),可實現更高并發,服務器也就變成了獲取json的api,根本不需要在服務器上實現mvc,未來web程序的主要焦點在前端程序上。M變成了json,C變成了js,V變成了html,app,實現了真正意義上的分離設計。
這種設計抽象好api完全可以復用于移動互聯網的app,有了很好的軟件復用效果,節約開發成本,是必然發展趨勢。