複製鏈接
請複製以下鏈接發送給好友

Web應用框架

鎖定
Web應用框架(Web application framework)是一種開發框架,用來支持動態網站、網絡應用程序網絡服務的開發。其類型有基於請求的和基於組件的兩種框架
中文名
Web應用框架
外文名
Web application framework
定    義
開發框架
支    持
網絡應用程序及網絡服務的開發

Web應用框架應用簡介

Web應用框架有助於減輕網頁開發時共通性活動的工作負荷,例如許多框架提供數據庫訪問接口、標準樣板以及會話管理等,可提升代碼的可再用性。

Web應用框架架構

MVC
主條目:MVC
CMS
主條目:內容管理系統

Web應用框架分類

web框架可以分為基於請求的(request-based)和基於組件的(component-based)兩大陣營。前者的代表有Struts和Spring MVC等,後者的成員則有JSF、Tapestry等等。 [1] 

Web應用框架對比

基於請求的框架較早出現,它用以描述一個web應用程序結構的概念和傳統的靜態Internet站點一樣,是將其機制擴展到動態內容的延伸。對一個提供HTML和圖片等靜態內容的網站,網絡另一端的瀏覽器發出以URI形式指定的資源的請求,Web服務器解讀請求,檢查該資源是否存在於本地,如果是則返回該靜態內容,否則通知瀏覽器沒有找到。Web應用升級到動態內容領域後,這個模型只需要做一點修改。那就是web服務器收到一個URL請求(相較於靜態情況下的資源,動態情況下更接近於對一種服務的請求和調用)後,判斷該請求的類型,如果是靜態資源,則照上面所述處理;如果是動態內容,則通過某種機制(CGI、調用常駐內存的模塊、遞送給另一個進程如Java容器)運行該動態內容對應的程序,最後由程序給出響應,返回瀏覽器。在這樣一個直接與web底層機制交流的模型中,服務器端程序要收集客户端籍get或post方式提交的數據,轉換,校驗,然後以這些數據作為輸入運行業務邏輯後生成動態的內容(包括HTML、JavaScriptCSS、圖片等)。
基於組件的框架採取了另一種思路,它把長久以來軟件開發應用的組件思想引入到web開發。服務器返回的原本文檔形式的網頁被視為由一個個可獨立工作、重複使用的組件構成。每個組件都能接受用户的輸入,負責自己的顯示。上面提到的服務器端程序所做的數據收集、轉換、校驗的工作都被下放給各個組件。現代web框架基本上都採用了模型、視圖、控制器相分離的MVC架構,基於請求和基於組件兩種類型大都會有一個控制器將用户的請求分派給負責業務邏輯的模型,運算的結果再以某個視圖表現出來,所以兩大分類框架的區別主要在視圖部分,基於請求的框架仍然把視圖也就是網頁看作是一個文檔整體,程序員要用HTML、Javascript和CSS這些底層的代碼來寫“文檔”,而基於組件的框架則把視圖看作由積木一樣的構件拼成,積木的顯示不用程序員操心(當然它們也是由另一些程序員開發出來的),只要設置好它綁定的數據和調整它的屬性,把他們大大從編寫HTML、Javascript和CSS這些界面的工作中解放出來。

Web應用框架選擇

基於請求的和基於組件的兩種框架各有優劣。雖然一眼看上去後者有很大的吸引力,普通的web開發人員只要使用專門的公司或開源組織提供的組件就可以輕鬆開發出好用漂亮的界面,但是有幾種因素綜合起來不利於這種理想中的方案。要編寫一個沒有潛在問題的、跨瀏覽器的、顯示美觀並且有足夠靈活性可以調整的服務器端組件是需要高水平的技能、豐富的經驗和較多時間的,即使付出這些成本,也不能完全避免使用者失望的情況。
綜合來看,基於請求的框架要程序員自己動手的地方比較多,但也因此可以更精細地控制HTML、CSS和Javascript這些最終決定應用程序界面的代碼,特別是如果要在界面上有創新,嘗試新的視覺效果和用户操作,必然選擇基於請求的框架。基於組件的框架可以提高開發界面的效率,前提是選用的組件質量優秀。

Web應用框架特點介紹

安全性
URL映射
AJAX
自動configuration
Web服務

Web應用框架編程語言

Laravel
Zend framework
CakePHP
Yii
ThinkPHP
symfony
kohanaphp
Seagull
CodeIgniter
javascript
MooTools
prototype
dojo
zk
SproutCore
Sammy.js
Spine.js
Cappuccino
Knockout.js
Javascript MVC
Google Closure
Ember.js
Angular.js
Batman.js
django
pinax
Grok
Pylons
TurboGears
Zope
Quixote
snakelets
snakelets
PylonsHQ
FastAPI
Ruby On Rails
net
三層
nhibernate
JAVA
Spring
Hibernate
Grails
Tapestry
ZK
SpringMVC
Struts
Mybatis
Go
Gin
Beego
Buffalo
Iris
Echo
Goji
參考資料