MVC開發簡介

iDotNetSpace發表於2010-05-20
第一部分:傳統的web開發方式

傳統的web開發,一般是先設計一個頁面(用Dreamweaver或其他工具),然後再頁面中嵌入伺服器端指令碼程式碼。比如 php/asp/jsp 都是這樣。

下圖就是這種風格的php程式碼(來自Joomla):
MVC開發簡介
這種開發方式很容易滋生一種傾向:習慣不好的程式設計師,會把大量的業務邏輯程式碼、資料庫訪問程式碼夾雜在頁面中,導致很難讀懂。比如下面的php程式碼(來自wordpress):
MVC開發簡介
所以就有一些人開發了框架,這些框架會強行規定各種型別的程式碼的位置。ASP.NET Web Form. 也可以算作一種web開發框架。它讓業務邏輯程式碼或資料庫訪問等等的程式碼,統一放在了 code behind(後置程式碼中,總體而言,你當然可以進一步分離) 中,比如如下一段頁面以及它的後置程式碼(來自BlogEngine):
MVC開發簡介
後置程式碼:
MVC開發簡介

第二部分:mvc的開發方式

mvc的開發方式對如何放置程式碼,有比較規範的約定。它分成三個部分:

1、頁面部分(view,又叫檢視模板部分)
2、控制器部分(controller,獲取資料並呈現到view中)
3、模型部分(model,領域模型,負責提供資料庫或其來源的資料)

各部分的流程大體如下:
MVC開發簡介
① 瀏覽器向伺服器傳送請求
② 伺服器找到指定的controller;由控制器(controller)查詢model,得到資料
③ 控制器(controller) 獲取檢視(view),並將model資料和view合併起來(途中虛線部分表示合併)
④ mvc 框架將合併的結果返回給客戶端

本質上, mvc 是一種劃分程式碼的方式,它不是架構。它讓你的程式碼整潔有序,更有效率。

三、各類mvc框架的實現

mvc的框架有很多,比如微軟的 ASP.NET mvc ,我記錄(wojilu.com)的 wojilu mvc;java領域有 struts;ruby 領域有 rails 等。

各類框架總體上流程差不多,但在具體的實現細節上、以及提供的工具的豐富程度上大有區別。比如 wojilu mvc 支援 namespace,ASP.NET mvc 僅僅支援 area 等……

習慣了 mvc 的開發方式之後,會覺得其實整個流程一點都不復雜。真正複雜的,還是針對特定功能和業務的實現,調研、整理需求、設計、效能調優等等。

四、wojilu mvc 的特點

1、支援名稱空間(讓程式碼檔案更加整潔易覽;讓頁面layout和許可權控制更加簡單易用);
2、預設將靜態檔案(js/css/圖片等)單獨存放,可以輕鬆切換到二級域名(分離應用伺服器和靜態伺服器);
3、檢視邏輯和檢視模板徹底分離;
4、控制器可輕鬆依賴注入;控制器本身也可以通過配置自定義;
5、不對 html 封裝,可以讓前端開發徹底工作在html和css層面,對html擁有完全控制的自由;
6、多國語言支援(i18n),並且簡潔易用;
其他 mvc 框架都會帶的功能,比如路由、過濾器、RESTfull風格的Url、無頁面字尾名、約定優於配置的風格等都是不可缺少的;另外,對頁面生命週期中各事件的擴充套件也提供了完善的支援。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-663240/,如需轉載,請註明出處,否則將追究法律責任。

相關文章