就像是.NET Framework WebApi與.NET Core WebApi同樣,.NET Framework MVC與.NET Core MVC的區別,也是框架的之間的區別。本系列先首先從.NET Framework MVC介紹,後面再去介紹.NET Core MVCweb
狹義MVC:後端
MVC是web開發框架設計模式
M:Models,數據的傳遞模型,普通的實體框架
V:View,用戶看到的視圖模型前後端分離
C:Controller,決定用戶使用哪一個視圖,還能調用邏輯計算,裏面的方法叫Action函數
廣義MVC:性能
Model、VIew、Controller網站
V:界面this
C:控制,把M和V鏈接起來spa
M:數據和邏輯
程序的設計模式,一種設計的理念,能夠有效的分離界面和業務。
首先,創建一個FirstController,
public class FirstController : Controller { public ActionResult Index() { return View(); } }
返回類型還有ViewResultBase、ViewResult、JsonResult、FilePathResult等,其實這些都繼承了ActionResult。
WebApi是返回數據的,爲啥都不都用MVC算了?其實無論是aspx/ashx/WebApi/MVC,都是使用Http協議的,因此一切的請求均可以實現的。
Aspx:屬於比較重的,默認有頁面的生命週期---先後端融合,ViewState---跟C/S是一一對應的
ashx:屬於輕量級的,沒有頁面的概念
MVC:先後端分離的,C能夠任意指定視圖,能夠踢桃後臺多態UI
WebApi:準人作專事,管道都是獨立的;RESTFul,沒有action的概念。可是在.NET Core中,兩者又融合管道了。
傳值的方式:
ViewData字段傳值,裏面是object,須要類型轉換。ViewBag,是dynamic傳值,能夠隨便屬性訪問,運行時檢測。以上兩者都是會覆蓋的,後者爲準。Model。傳值,適合複雜數據的傳遞,強類型。TempData,臨時數據,能夠跨Action後臺傳遞,存在Session裏面,用一次就清理掉。
MasterPage,Layout,默認是_layout,能夠自行指定。
Global。asax,全局式。
public class MvcApplication : System.Web.HttpApplication { private Logger logger = new Logger(typeof(MvcApplication)); protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); this.logger.Info("網站啓動了。。。"); } }
Application_Statr()全局啓動時執行,且執行一次,很是適合作初始化,也能夠靜態構造函數。還能夠有不少別的。
dynamic是個動態類型--運行時檢測--編譯時隨便你寫利用委託的,性能比反射高,能夠提供便利弱類型語言的特色,方便作一些特殊處理