作者: 永恒の_☆ 地址: http://blog.csdn.net/chenghui0317/article/details/9382781
一、什么是.NET的 MVC模式
MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。
那么MVC模式和我们熟悉的WebForm模式有什么不同呢?他的各个部分又是怎样分工的呢?
我们先来看一下普通的WebForm模式下,我们请求一个例如http://www.51mvc.com/blog/index.aspx的URL,那么我们的WebForm程序会到网站根目录下去寻找blog目录下的index.aspx文件,然后由index.aspx页面的CodeBehind文件(.CS文件)进行逻辑处理,其中或许也包括到数据库去取出数据(其中的经过怎样的BLL到DAL这里就不谈了),然后再由index.aspx页面来呈现给用户。
也就是一个URL请求的是在服务器与该URL对应路径上的物理文件(ASPX文件或其他),然后由该文件来处理这个请求并返回结果给客户端。
但是,对于MVC模式,这是怎样的一个过程呢?
1. 当第一个请求从客户端发起的时候,首先执行的是Global.asax中的Application_Start()方法来完成一些初始化工作,其中重要的一步是RegisterRoutes方法,这个方法指定了如何将url映射到具体的方法上,稍后详解。
2. 根据第一步中指定的映射表生成一个RouteDate个对象,利用这个对象来创建一个RequestContext对象。
3. MvcRouteHandler创建一个MvcHandler,并将RequestContext对象传给MvcHandler。
4. MvcHandler对象利用RequestContext对象确定一个IControllerFactory对象来创建Controller对象。
5. MvcHandler对象调用Controller对象的Execute()方法。
6. Controller的ControolerActionInvoker对象决定调用controller的哪个具体的action方法。
7. Action方法接受用户参数,执行方法,返回一个Result类型的对象。
二、.NET MVC 和JavaEE 的MVC 有相同点和不同点?
MVC是一个设计模式,M(Model)指数、V (View) 视图、C(Controller); 它跟你使用的语言无关,是一种设计模式,可以理解就是一种思想 一种套路。
优点:降低代码的重复、降低维护带来的复杂性,方便扩展、修改,对任务分工也会有好处。 低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性、有利于软件工程化管理;
不同点:JavaEE 的MVC 已经很成熟,运用很广泛,这种思想已经运用于很多框架当中。
当用户发送请求来之后,首先由核心控制器拦截,然后根据配置文件的配置去找到对应的控制处理器, 执行已经分配好的action方法,完了之后 返回一个逻辑路径名称,系统会根据这个逻辑名称做出相应的跳转。
但是.NET 的MVC 是 由UrlRoutingModule来把用户发送的请求URL定位到Controller中去的。而对于URL会被路由到哪一个Controller中去,这些我们是完全可以自己定义的。在Global.asax可以看到Route规则的明细。然后会找到controller 以及里面需要执行的action方法 ,之后返回View(), 最后回去View文件夹下找到对应的显示页面展示。
三、.NET MVC需要准备的条件
VS2010以上版本。(我之前用VS2008 结果发现创建mvc的入口都没有)
MVC3的安装包,地址:http://download.csdn.net/detail/ch656409110/5783657
四、创建一个MVC项目的解决方案
安装完成MVC3后,新建项目-->ASP.NET MVC3 Web Application,如下图所示:
2、点击"OK"后,出现如下图所示:
选择”Internet Apliication“ 这个,里面有一个非常好的demo 可以看。
然后可以看到以MVC解决方案了:
在根目录中
Content 里面放的是css样式;
Conntrollers里面放的是控制器;
Models里面放的是模型;
Scripts里面放的是js脚本;
Views里面放的是 对应的cshtml页面;
Global.asax里面 记录的是核心的配置,以及注册已经定义的route规则;
现在,可以按F5调试 运行看看了。