ASP.NET MVC深刻淺出系列

一. 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視圖文件夾,經常使用頁面都存放在裏面。

 

四. 系列章節

       第一節:走進MVC的世界(未完成)

       第二節:各類路由約束(動態路由、靜態路由、組合路由、正則約束、命名空間約束、區域內路由)

       第三節:Action向View傳值的四種方式(ViewData、ViewBag、TempData、Model)

       第四節:MVC中AOP思想的體現(四種過濾器)並結合項目案例說明過濾器的實際用法

       第五節:從源碼的角度理解MVC中各類Result(ActionResult、JsonResult、JavaScriptResult等)---待補充

       第六節:Razor引擎及相關語法(未完成)

       第七節:HtmlHelper及其擴展(未完成)

       第八節:layout和partialView、RenderPartial和Partial、 action和RenderAction(未完成)

       第九節:從源碼的角度分析MVC中的一些特性及其用法

       第十節:數據批註(DataAnnotationModel)和自定義驗證(包括Model級別的驗證)

       第十一節:Bundles壓縮合並js和css及原理分析

       第十二節:MVC中的一些特殊優化

       第十二節:管道模型(未完成)

       第十三節:HttpHander擴展及應用(自定義擴展名、圖片防盜鏈)

       第十四節:再探MVC中路由的奧祕

       第十五節:HttpContext五大核心對象的使用(Request、Response、Application、Server、Session)

       第十六節:利用MVC的擴展完成「一個後臺,多套前端頁面」的解決方案(未完成)

       第十七節:XXX

       第十八節:XXX

 

 

 

!

  • 做       者 : Yaopengfei(姚鵬飛)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 聲     明1 : 本人才疏學淺,用郭德綱的話說「我是一個小學生」,若有錯誤,歡迎討論,請勿謾罵^_^。
  • 聲     明2 : 原創博客請在轉載時保留原文連接或在文章開頭加上本人博客地址,如需代碼請留言,加我QQ:604649488 (備註:評論的博客名)
相關文章
相關標籤/搜索