ASP.NET MVC核心基础
ASP.NET MVC简介
什么是ASP.NET MVC
HttpHandler是ASP.net的底层机制,如果直接使用HttpHandler进行开发难度比较大、工作量大。因此提供了ASP.Net MVC、ASP.Net WebForm等高级封装的框架,简化开发,他们的底层仍然是HttpHandler、HttpRequest等这些东西。比如ASP.Net MVC的核心类仍然是实现了IHttpHandler接口的MVCHandler。
MVC技术的起源
-
首先先回想一个项目《超市管理系统》和《学生管理系统》采用的是两个不同的框架:Winform框架和WPF框架。
-
这两个项目采用的设计模式:三层和抽象三层
-
采用设计模式的好处:是为了分工明确,例如学生管理系统在CS版本使用的Winform做前台界面,在WebForm中直接可以将CS版本中的BLL/DAL/Model/Common这些dll文件直接拿过来就可以使用。相当于直接可以将前台界面替换为ASP.NET中的WebForm页面
-
但是在BS项目中ASP.NET Webform版本的学员管理系统中遇到的问题是:有些同学根本不擅长页面设计,因此做出的系统界面十分丑陋。因此在目前的开发中要求:前后端分离(前端工程师只需要负责HTML+CSS+JS,后端工程师只需要负责SQL+C#逻辑)
-
而WebForm框架存在的问题:首先是服务器控件十分繁琐,其次前后端相连甚密,页面中任何空间发生姓名或ID的改变都会导致程序崩溃
-
为了实现前后端技术的彻底分离,逐渐衍生出的一种技术就是MVC
-
MVC在任何技术中都存在只是叫法不一致。
在ASP.NET中叫:ASP.NET MVC
MVC的发展史
MVC的版本
-
1.0:基于.NET3.5 VS2008(核心功能)
-
2.0:基于.NET3.5、4.0 VS2010(分区项目、模型元数据、模板视图...)
-
3.0:基于.NET4.0 VS2010、VS2012(视图引擎:Razor、H5和CSS3)
-
4.0:基于.NET4.0、4.5 VS2012、VS2013(手机模板、单页应用程序模板)
-
5.0:基于.NET4.5.1 VS2013、VS2015
-
6.0;基于.NET4.5.1-4.8 VS2017、VS2019(只剩Razor视图引擎)
ASP.NET开发模式
Model负责在View和控制器之间进行数据的传递:用户输入的内容封装为Model对象,发给Controller;
要显示的数据由Controller放到Model中,然后扔给View去显示。
WebForm和MVC的关系
都是对HttpHandler的封装框架,ASP.net WebForm是微软为了让开发ASP.Net像开发WinForm一样傻瓜化发明的框架,有很多缺点;ASP.net MVC采用了MVC的思想,更适合现代项目的开发,因此ASP.net MVC在逐步取代ASP.Net WebForm。
在MVC中不存在ViewState
为什么ASP.NET MVC更好
程序员有更强的掌控力,不会产生垃圾代码;程序员能够更清晰的控制运行过程,因此安全、性能、架构等更清晰。WebForm和ASP.netMVC在“入门”和“深入”两个要素之间正好相反。
ASP.NET MVC与“三层架构”
ASP.net MVC与“三层架构”没有任何的关系。三层架构中的UI层可以用ASP.Net MVC来实现。可以理解为MVC其实是对UI层进行再次分层
约定大于配置
“约定大于配置”:恶心的“配置文件地狱”,基础阶段按照默认配置来,先不管复杂、难懂的“路由”等。
配置可以理解为配置文件,MVC里面基本上依靠约定去解决问题
第一个MVC程序
MVC项目文件夹说明
-
App_Data:用来保存数据文件,暂时不需关心
-
App_Start:包含ASP.NET-MVC系统启动的相关类文件
-
Controller:存放整个项目的“控制器”的代码文件
-
Models:存放整个项目的“模型”代码文件
-
Views:存放整个项目的“视图”代码文件
-
Content:存放视图相关的样式文件
-
fonts:存放视图使用的字体文件
-
Scripts:存放视图相关的JS脚本文件
MVC项目重要文件说明
-
Views下面的Web.config文件:作用于视图的配置文件
-
根目录下的Web.config文件:作用于整个项目的配置文件
-
Global.asax文件:全局应用程序文件:一般和App_Start文件夹中的类配合使用
-
packages.config文件:用于管理项目中用到的程序集版本