一. ASP.NET體系
從事.Net開發以來,最先接觸的Web開發框架是Asp.Net WebForm,該框架高度封裝,為了隱藏Http的無狀態模式,ViewState功不可沒,通過的控件的拖拽和綁定,很快就可以搭建出來一個Web項目,其開發速度遠勝Java、PHP,當年Web項目並不很重視體驗,沒有今天響應式,沒有各種前端js框架,所以在當年的WebForm,微軟是以引以為豪的。
該框架畢竟有時代局限性,隨着前端的崛起,隨着人們對項目體驗的提高,隨着項目的體量的增大,WebForm在當下強調松耦合、模塊化、組件化的時代,略顯落后,故微軟於2009年推出第一個開源框架,即MVC框架,俗稱ASP.Net MVC1,后面又陸續的推出 MVC2、3、4、5。現在最新的跨平台Web開發框架 Core MVC,它隸屬於.Net Core框架,而非 .Net FrameWork下。
下面用一張圖表示一下在Core出現之前,.Net在Web開發即ASP.NET中包含的內容。
簡單分析一下:WebPages(沒用過哎)、WebForms、MVC均為ASP.NET下的Web開發框架,WebAPI負責構建HTTP常規服務,SignalR負責構建實時服務。
MVC和WebAPI簡單對比一下:MVC用來構建網站既關心頁面又關心數據,WebAPI只關心數據;MVC通過可以通過Action的名字來接受CURD操作,而WebAPI通過HTTP的訪問方式(GET、PUT、POST、DELETE)來表達不同的CURD操作。
(WebService、WCF、WebAPI、SignalR在后面會有單獨的章節詳細介紹)
二. WebForm和MVC對比
1. WebForm
做過WebForm開發的朋友們應該很清楚,WebForm開發形式主要分為三種:
①:服務器端控件,即拖拽控件(aspx)
②:一般處理程序(ashx) + html模板
③:html靜態頁 + ajax + 一般處理程序(ashx)
請求模型:
WebForm的幾個臭名昭著的缺點:封裝太強,導致開發不靈活;ViewState的無狀態;聲明周期模型復雜,對於初學者不易於理解。
2. MVC
我們經常從各種開發工程師(JAVA 、.NET、PHP)口中聽到MVC,但不同人說的MVC貌似類似,但又有區別,那么MVC到底是什么呢?(類似的還有MVP和MVVM)
1. 從宏觀上來說:MVC是框架分層的一種搭建思想,在最原始的項目中,沒有什么框架分層之說,所有的項目代碼都在一個層里,這樣會導致代碼冗雜,耦合性強,項目迭代升級困難,MVC是一種分層思想,將一個項目代碼分為幾類,分別放到不同的層里,Model層存儲一些數據和業務邏輯,View層處理頁面問題,Controller層用來接收人機交互指令。MVC分層思想和傳統的三層(數據庫訪問層、業務邏輯層、表現層)還是有區別的。
MVC的核心是分離了View和Model(即頁面和數據),Controller負責接收和發送指令,交給Model層處理。
2. 從.Net的角度來說,MVC是微軟提供一個Web開發框架,全稱ASP.NET MVC,它是傳統三層中View層的一種功能細分,一種表現形式而已,與三層沒有直接關系。ASP.NET MVC框架中的開發流程圍繞:
① Model:存儲實體類,實現系統中的業務邏輯。
② View:頁面展示(Razor模板),展現給用戶。
③ Controller:頁面的邏輯處理,用來與用戶的交互,處理接受的Http請求。然后從Model中獲取相應的數據,轉發給View進行頁面展示。
補充:通過Controller中的Action,可以充當APP的服務端接口的作用,和WebAPI達到的效果一致,但訪問方式是有區別的。
請求模型:
下面列舉MVC框架的幾個典型的優點:
①:松耦合,M-V-C分工明確,有利於代碼的維護。
②:便於Seo優化,能自定義url的生成規則。
③:ASP.NET MVC5是個出色的表現層框架。
④:對單元測試支持友好。
三. ASP.Net MVC 框架
1. 包含的技術
ASP.NET MVC框架,這里以MVC5為例,涉及到的知識有:Model-View-Controller的使用、Area和Global的理解、路由配置、數據傳遞的方式、AOP思想的體現(4大過濾器),各種Result、Razor語法、HttpContext相關的五大對象、分布視圖、特性的補充、Html擴展控件、Bundles壓縮js和css的原理、Owin約束、管道模型及MVC的工作原理。
以及最新的Core MVC框架的相關知識。
2. 常見的約定
①:控制器命名通常以Controller結尾。
②:一個控制器對應一個View視圖文件夾,常用頁面都存放在里面。
四. 系列章節
第二節:各種路由約束(動態路由、靜態路由、組合路由、正則約束、命名空間約束、區域內路由)
第三節:Action向View傳值的四種方式(ViewData、ViewBag、TempData、Model)
第四節:MVC中AOP思想的體現(四種過濾器)並結合項目案例說明過濾器的實際用法
第五節:從源碼的角度理解MVC中各種Result(ActionResult、JsonResult、JavaScriptResult等)---待補充
第八節:layout和partialView、RenderPartial和Partial、 action和RenderAction(未完成)
第十節:數據批注(DataAnnotationModel)和自定義驗證(包括Model級別的驗證)
第十三節:HttpHander擴展及應用(自定義擴展名、圖片防盜鏈)
第十五節:HttpContext五大核心對象的使用(Request、Response、Application、Server、Session)
第十六節:利用MVC的擴展完成“一個后台,多套前端頁面”的解決方案(未完成)
!
- 作 者 : Yaopengfei(姚鵬飛)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 聲 明1 : 本人才疏學淺,用郭德綱的話說“我是一個小學生”,如有錯誤,歡迎討論,請勿謾罵^_^。
- 聲 明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,如需代碼請留言,加我QQ:604649488 (備注:評論的博客名)