??? 開始整理WebWork學習筆記,一來融入一些自己的觀點以備忘,二來給Team里兄弟們快速學習和上手的捷徑,提高工作效率。不過總的來說希望能從它學到的思想多過與如何用它,也希望大家一起討論一起分享。
??? 嚴重同意Rickard(WebWork的創造者 JBoss創始人之一 大牛)在創造這個框架時所基于的幾個哲學原則:
實現某個功能的正確方式應該是最簡單的;阻礙最少的途徑應該是正確的;在過于復雜和功能簡陋之間應該存在一個很好的平衡點。我想但凡框架都應該帶著這些原則去創造和運用,讓工作變得更加簡單。后面將會討論什么是框架什么是容器,我想你會對這些哲學理解的更加深刻。
??? WebWork是一個優雅的框架,它的設計基于這樣一個基本原理:完成通用任務應該是簡單的,而構建高級的設計也應該是可行的。WebWork的開發者只想提供一個能夠
為你工作的框架,而不是一個
與你作對的框架。
一、關于大家熟知的MVC??? 眾所周知MVC(Model-View-Controller)已經成為在Web應用程序開發中具有統治地位的構架了,而WebWork可以說是目前最為優雅和強大的MVC框架,同時也提供了一個擁有許多特征的微容器供你使用。下面就先來討論一下MVC。
??? 最早的MVC是在SmallTalk語言中提出的,現在已經被廣泛的運用在Web應用程序開發中。經典的MVC模式事件流是這樣的:用戶與視圖(View)進行交互,填入數據點擊按鈕,控制器(Controller)接受到來自視圖的時間并對模型(Model)進行操作,根據用戶提供的數據更新模型。視圖也會接到“模型改變”的事件通知,因此它會隨著模型更新,將模式的更新結果顯示給用戶。但是由于HTTP協議的特殊性這種形式在Web程序中是無法實現的。
??? 在Web應用程序中經典的MVC是通過
前端控制器(Front Controller)模式實現的。這種模式包含一個分發器,而分發器將請求URL映射到需要被執行的命令實例(action)。命令實例再與系統后臺服務進行交互,通常這些服務就理解為模型。命令實例在處理完業務邏輯后返回一個碼值,而這個碼值被映射到一個視圖。最后結合控制器和模型,視圖將會呈現給用戶。通常視圖會使用標簽庫,以便更簡單的訪問需要顯示的數據。還有一種MVC的實現,稱之為
頁面控制器(Page Controller),在這里可以找到一些資料
http://www.microsoft.com/china/MSDN/library/architecture/patterns/esp/EspWebPresentationPatterns.mspx,本篇暫不討論。
二、不用WebWork也一定要理解的內容---何為框架、何為容器,它們到底有什么用????
1.框架??? 最近經常聽到朋友們對框架會有兩種聲音,一種是盛贊框架,聲稱有了框架天下無敵,開發效率翻番,開發效果加倍等等;另一種則是極其厭惡,太多配置,太多限制,太多不同意,有意加大學習坡度,加大升級的難度,加大大家的工作量等等。(甚至有人在BeanSoft兄的blog里說再也不看他的所有文章,只因他發了一下框架的牢騷)漸漸的大家都有了一種框架情節,一邊是崇拜而另一邊則聽到框架就頭疼(框架豈不淪落到超女一樣的下場,不該不該)。框架實在不該背負這么多,大家在選擇使用或不使用框架前都必須知道
何為框架,何為容器,它們到底有什么用???? Rickard在構建最原始版本WebWork的時候曾經說過:
框架的強大之處不是源自它能讓你做什么,而是它不能讓你做什么。理解為:框架使混亂的東西變得結構化。而Web應用程序框架則鼓勵開發人員使用一系列框架所提供的基礎類和類庫避免雜亂的JSP,servlet所帶來混亂。
??? Struts曾經紅極一時,即使使現在在國內也使使用者最多的框架之一。但它現在受到越來越多的質疑,最后不得不選擇和WebWork合并來期待扭轉乾坤。主要是因為隨著時間的推移,開發者越來越成熟,應用程序也越來越成熟,而Struts太多地方限制的過于嚴格,一些實現的方式過于別扭和死板,從最開始的給予很多結構化的東西從而使開發者很具安全感,到現在的過分限制創造力而成為開發者的夢魘。也正如框架的悲觀派BeanSoft兄所說是它開創了通過大量雜亂無章的配置文件來做程序的先河(沒有考證,呵呵)。
???
WebWork是鼓勵創造的。WebWork找到了框架結構和創造力之間的一種平衡,在后面的筆記中你將體會的更深。
???
2.容器???
框架定義了不能做什么,而容器則定義了可以或者說能夠做什么。比如說Web容器有的支持servlet2.2有的則支持了servlet2.4,有的提供了良好的啟動和運行速度,有的則提供了更好的集群計算能力。一個容器擁有越多有用的特性,它將越強大、越好。
容器支持我們去做一些事情,我們也需要它的支持!注意前面說過框架則是限制我們去做一些事情。
??? WebWork提供了自己的輕量級容器,你可以從容器中獲得諸如IoC、AOP等一系列的特性支持,使你從中受益。當然必須說明的是WebWork的核心是MVC框架,而并非這個輕量級容器,甚至它是一個可選的部分。但要想構建出迷人、優雅的Web應用程序,發揮更多的創造力,你可能離不開它并會真的愛上它。
???
??? 上面提到WebWork的容器是一個可選的部分,它是松耦合的,所以你完全可以選擇你更熟悉和信耐及更適合當前項目的容器(如Spring、PicoContainer等)來提供相關特征。
??? 最后我們來提一下WebWork的核心,一個底層組件---XWork,它是一個比WebWork更單純更輕量級的框架(我覺得不太準確,不過暫且稱它做一個框架吧)。在這里并不打算討論它,因為對于剛接觸WebWork的開發者來說,XWork和WebWork這兩個詞的相似必定帶來很多的混亂。如果有興趣可以google一下,查找XWork的相關資料來學習。
??? 在下一篇我們將一步一步的完成一個HelloWorld程序(想必大家學習其他技術也都離不開經典的HelloWorld吧),從而對WebWork的基礎內容有一個大概的了解。我們在你的第一個WebWork程序里見吧!
posted on 2007-02-08 16:22
cresposhi 閱讀(2491)
評論(13) 編輯 收藏