[ASP.NET MVC2 系列] ASP.Net MVC教程之《ASP.NET MVC 概述》
[ASP.NET MVC2 系列]
[ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》
[ASP.NET MVC2 系列] ASP.Net MVC教程之《ASP.NET MVC 概述》
[ASP.NET MVC2 系列] 理解MVC应用程序的执行过程
[ASP.NET MVC2 系列] ASP.NET MVC Routing概述
[ASP.NET MVC2 系列] ASP.NET MVC 之如何创建自定义路由约束
[ASP.NET MVC2 系列] Action要求与View本质
[ASP.NET MVC2 系列] Action Filters以及自定义OutputCache ActionFilterAttribute事件发生次序
ASP.NET MVC 概述
了解关于 ASP.NET MVC 应用程序与ASP.NET Web Forms 应用程序两者之间的不同点. 了解怎样去决定什么时候创建一个 ASP.NET MVC 应用程序.
ASP.NET MVC 概述(C#)
模型-视图-控制 (MVC) 结构模式将一个应用程序分隔成三个主要组成部分:模型层、视图层、控制器。ASP.NET MVC框架提供了另一种可以替代ASP.NET Web Forms模式的选择来创造基于MVC的 web应用程序。ASP.NET MVC 框架是一个轻量级的框架,它与现有的ASP.NET特征相集成,比如母板页与基于身份的验证。MVC框架下定义在System.Web.Mvc命名空间中。
MVC是许多开发者都很熟悉的标准设计模式。很多类型的Web应用程序将会受益于MVC框架。一部分将依旧会继续使用传统的基于Web Forms和回传的ASP.NET应用程序模式。其他类型的 Web应用程序将这两种方法相结合使用:两者互不排斥。
MVC框架包含以下组成部分:
•模型层。模型对象是应用程序的一部分,它实现了应用程序的数据定义的逻辑。通常,模型对象检索和储了在数据库中的模型状态。例如,一个Products对象可以在数据库检索信息,操作它,然后将修改的信息更新回SQL服务器中的Products表。
在小应用程序中,该模型常常是一个概念性的分离而不是物理上的。例如,如果应用程序仅仅读取数据集和将它发送到视图上,应用程序将不存存在一个物理模型层及相关的类。在这种情况下,数据集将具有一个模型对象的角色。
•视图层。视图层是显示应用程序的用户界面(UI)的部分。通常,用户界面UI是由模型数据所创建的。
•控制层。控制层是处理用户交互,对模型层起作用,并最终选择一个视图view来呈现那个显示的用户界面的部分。在一个MVC应用程序中,视图层view只显示信息,控制层controller处理并响应用户的输入和交互。例如,控制层处理查询字符串的值,并将这些值传递给模型层model,该模型层就会反过来使用这些值来查询数据库。
MVC模式帮助你创建应用程序,它将应用程序的不同方面的(输入逻辑、业务逻辑,和UI逻辑)进行分离,同时在这些元素之间提供一个松耦合关系。这种模式指定了每一种逻辑在应用程序中所处的位置。UI逻辑属于视图层。输入逻辑属于控制层。业务逻辑属于模型层。当你创建一个应用程序时,这种分离能帮助你处理复杂事务,因为它可以让您每一次专注于实施的一个方面。例如,你可以专注于视图层,而不依赖任何业务逻辑。
除了管理复杂的事务,MVC模式比基于Web Forms的ASP.NET Web应用程序更加容易进行测试。例如,在一个基于Web Forms的ASP.NET Web应用程序,一个单一的类被用于显示输出和响应用户的输入。因为测试单个页面,你必须实例化这个页面page类,它所有的子控件以及应用程序中额外的依赖类,所以针对于基于Web Forms的 ASP.NET应用程序写的自动测试将可能很复杂。因为有那么多类被实例化用来运行这个页面,它可能很难写出针对于应用程序的单个部分的测试代码。因此,基于Web Forms的ASP.NET Web应用程序的测试比MVC应用程序更难实现。而且,基于Web Forms的ASP.NET Web应用程序需要一个Web服务器。MVC框架将这些组成部分进行解耦,大量的使用接口,使它能够独立的测试单独的部分。
同样,MVC应用程序中的介于三个主要组成部分的松耦合也促进了平行开发。例如,一个开发者可以开发视图层,另一个开发者可以开发控制逻辑层,第三个开发者可以专注于模型层中的商业逻辑。
决定什么时候去创造一个MVC应用程序
你必须仔细考虑是否要通过采用ASP.NET MVC框架和ASP.NET Web Forms模型中任何一种来实施一个Web应用程序。MVC框架取代Web Forms模型;你能够为Web应用程序采用任何一种框架。
在你为一个具体的Web站点决定采用MVC框架还是Web Forms模型之前,权衡一下每一种方法的优势。
基于MVC的Web应用程序的优势
这个ASP.NET MVC框架提供了以下优点:
它通过将应用程序分解为模型层,视图层和控制层来使我们更容易管理复杂的事务。
它不使用视图状态或基于服务器的表单。这使得MVC框架非常适合于那些想完全控制应用程序行为的开发者。
它使用一个 Front Controller模式,它通过一个单一的控制器来处理Web应用程序请求。这使你能设计一个支持丰富的路由基础设施的应用程序。更多信息,在MSDN网站查询Front Controller。
它提供更好的驱动测试开发的支持(TDD)。
它适用于需要高度控制程序行为的开发者和网站设计者支持的应用程序的大型团队。
基于Web Forms的Web应用程序的优点
基于Web Forms的框架提供以下优点:
它支持一个能够在HTTP之上保持状态的事件模型,从而有利于line-of-business网页应用软件的开发。基于Web Forms的Web应用程序提供了被数以百计的服务器控件支持的许多事件。
它使用一个能够增加函数到单个页面的页面控制模式,。更多信息,见MSDN网站中的Page Controller。
它使用视图状态或基于服务器的表单,它可以使管理状态信息更加容易。
它适用于那些网站开发者和设计师想利用大量组件来快速应用开发的小团队。
总的来说,应用软件的开发不是那么复杂,因为组件(页类、控件等)是紧密结合在一起,通常比MVC模型需要更少的代码。
ASP.NET MVC 框架的特点
ASP.NET MVC 框架提供了以下特点:
分离的应用程序任务(输入逻辑、业务逻辑,和UI逻辑)、可测性、默认的驱动测试开发(TDD)。所有在MVC框架中的核心是interface-based和可以利用模拟对象进行测试,模拟对象能够模拟实际应用中对象的真实行为。你不一定需要在ASP.NET进程中运行控制层就能够对应用程序进行单元测试,它使得单元测试更快速和灵活。你可以使用任何兼容.net框架的单元测试框架。
一个可扩展和可插接的框架。这个ASP.NET MVC框架的组件被设计过,这样它们就能够方便地更换或自定义。你可以插入你自己的视图引擎,URL路由策略,action-method参数的序列化以及其他组件。这个 ASP.NET MVC 框架也支持使用依赖性注射(DI)和控制反转(IOC)容器模型。DI允许您注入对象到一个类中,而不是依赖这个类来创建对象本身。IOC规定,如果一个对象需要另一个对象,第一个对象应该得到来自外部源(如一个配置文件)的第二个对象。这使得测试更容易。
一个强大的URL-mapping组件,它让你建立拥有可理解并且可搜索的URL的应用程序。URL并不需要包括文件扩展名,是设计用来支持URL命名模式, 这种模式对于搜索引擎优化(SEO)和表述性状态转移(REST)寻址能够很好的运行。
支持现有的ASP.NET 功能。ASP.NET MVC让你使用功能,如表格认证和Windows认证、URL的授权,成员和角色,输出和数据缓存,会话和状态管理等。