Web套用框架

Web套用框架

Web套用框架(Web application framework)是一種開發框架,用來支持動態網站、網路應用程式及網路服務的開發。其類型有基於請求的和基於組件的兩種框架

基本介紹

  • 中文名:Web套用框架
  • 外文名:Web application framework
  • 定義:開發框架
  • 支持:網路應用程式及網路服務的開發
套用簡介,架構,MVC,CMS,分類,對比,選擇,特點,程式語言,PHP,javascript,Python,Ruby,.net,JAVA,

套用簡介

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

架構

MVC

主條目:MVC

CMS

主條目:內容管理系統

分類

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

對比

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

選擇

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

特點

網頁模版系統
網頁高速快取
安全性
URL映射
AJAX
自動configuration
Web服務

程式語言

PHP

Zend framework
CakePHP
Yii
ThinkPHP
kohanaphp
Seagull
Drupal
CodeIgniter

javascript

jQuery
MooTools
prototype
dojo
zk
SproutCore
Sammy.js
Spine.js
Knockout.js
Javascript MVC
GWT(Google Web Toolkit)
Google Closure
Ember.js
Angular.js
Batman.js

Python

django
pinax
Grok
Pylons
TurboGears
Zope
snakelets
snakelets
PylonsHQ
Tornado

Ruby

Ruby On Rails
Sinatra

.net

mvc
三層
nhibernate

JAVA

Spring
Hibernate
Grails
Tapestry
ZK
SpringMVC
Struts2
Struts
Mybatis

相關詞條

熱門詞條

聯絡我們