一. ASP.NET體系css
從事.Net開發以來,最早接觸的Web開發框架是Asp.Net WebForm,該框架高度封裝,爲了隱藏Http的無狀態模式,ViewState功不可沒,經過的控件的拖拽和綁定,很快就能夠搭建出來一個Web項目,其開發速度遠勝Java、PHP,當年Web項目並不很重視體驗,沒有今天響應式,沒有各類前端js框架,因此在當年的WebForm,微軟是以引覺得豪的。html
該框架畢竟有時代侷限性,隨着前端的崛起,隨着人們對項目體驗的提升,隨着項目的體量的增大,WebForm在當下強調鬆耦合、模塊化、組件化的時代,略顯落後,故微軟於2009年推出第一個開源框架,即MVC框架,俗稱ASP.Net MVC1,後面又陸續的推出 MVC二、三、四、5。如今最新的跨平臺Web開發框架 Core MVC,它隸屬於.Net Core框架,而非 .Net FrameWork下。前端
下面用一張圖表示一下在Core出現以前,.Net在Web開發即ASP.NET中包含的內容。ajax
簡單分析一下: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的擴展完成「一個後臺,多套前端頁面」的解決方案(未完成)
!