ASP.NET MVC 概述

原文地址:http://www.asp.net/mvc/overview/older-versions-1/overview/asp-net-mvc-overview

        学习ASP.NET MVC应用程序与ASP.NET WebForms应用程序的区别。学习当你构建ASP.NET MVC 应用程序的时候如何做选择。

        Model-View-Controller (MVC)构造模式把应用程序分成了3个主要的部分:Model,View,Controller。对于构建基本的MVC模式的应用程序,ASP.NET MVC是另一种可替换ASP.NET Web Forms模式的新模式。ASP.NET MVC是一个轻量级的,高度可测试性的呈现框架,继承了ASP.NET的特性,并且可以结合现有的ASP.NET的特性如母板、基于membership的身份验证。MVC框架定义在System.Web.Mvc命名空间中的,成为System.Web命名空间的一部分。

        MVC作为一个标准的设计模式被大多数开发者所熟知。某些类型的web应用程序将受益于MVC框架。部分类型的应用程序可以继续使用基于postbacks和WebForms的ASP.NET应用模式,也可以将这两者相结合,两者并不互斥。

MVC框架包含如下部分:

o_clip_image001_43b8657a-e608-4c30-8d07-90f2206558d9

 

  • Models. 模型对象是【实现应用程序数据领域逻辑】的部分。 通常模型对象存储和检索数据库模型的状态.比如一个产品对象要从数据库中检索数据, 操作,并且把更新的数据更新到sqlserver数据库中的产品表中。

在小型应用程序中, 模型通常只是概念分离而不是物理逻辑分离。比如一个小应用程序只需要从数据库中读取数据集,显示到界面上, 而不需要物理上的模型层和相关的类。 在这种情况下,数据集扮演一种模型对象的作用.

  • Views. 视图就是用来展示应用程序给用户的界面UI层。通常,UI是模型数据的展现。 举个例子,在一个编辑产品表的视图上显示基于产品对象当的前状态的文本框,下拉条和复选框。
  • Controllers.控制器是【处理用户交互与模型的工作,并选择合适的视图呈现给用户】的部分,在MVC应用中视图只用来显示信息,控制器处理和应对用户输入和交互。例如,控制器处理查询字符串的值,然后将值传递给模型,从而进行数据库的查询。

        MVC模式可以帮你创建松耦合,分离关注点的应用程序(输入逻辑,业务逻辑和用户界面逻辑),该模式规定,每个逻辑应该有自已的位置,UI逻辑应该交给View负责,用户交互逻辑应该controller负责,业务逻辑应该由Model负责,这样的分离帮你管理复杂的应用程序,因为它使你可以专注于某一方面的实现,比如,你可以集中精力关注视图而不用管业务逻辑。

        除了管理复杂应用的特点之外,MVC还可以很容易的对应用程序进行测试,例如在基于Web Forms的应用程序中一个Page类拥有同进负责用户输入和输出两种功能,编写基于Web Forms的自动化测试程序是很复杂的,因为要测试一个页面时要实例化Page类和它全部的子控件还有额外的依赖类,由于运行网页需要对如此多的类进行实例,所以很难编写出针对应用程序某一部分的测试,另外测试基于Web Forms的应用程序时需要一个Web服务器。MVC框架使用松散耦合的组件组成,这使得它可以测试脱离这个框架的其余各个组件。

       这种松耦合的MVC组成部分同样更加适合并行开发,举个例子,一个开发人们开发View,另一个开发人员可以同时编写controller逻辑,第三个开发人员可以关注Model的业务逻辑。

在什么时候使用MVC创建应用程序?

        你必须要认真的考虑是使用ASP.NET MVC framework呢还是ASP.net Forms模式,MVC框架并不替代原来的Web Forms模式;你可以使用任意一种框架来开发WEB应用程序。(如果你已经有了一个基于Web Forms的应用程序,那么你可以继续使用原有的开发模式进行工作)。

        在你决定使用MVC框架或Web Forms模式开发之前,请认真衡量一下各自的优点。

基于MVC的Web应用程序优点:

1、通过把应用程序分成Model,View,Controller模式,能够很容易的管理复杂的应用程序。

2、它不能使用view state和服务器控件,这使得MVC框架开发人员拥有对应用程序完全控制的能力。

3、它使用前端控制器模式,通过单一的过程处理Web应用程序的请求,这使你可以使用丰富的URL routing来设计应用程序。更多信息可以在MSDN站点的Front Controller查看。

4、它对测试驱动开发(TDD)提供更好的支持。

5、它可以让Web开发者和页面设计人员控制自己关心的工作,从而适合大型团队的开发。

基于Web Forms Web应用程序的优点:

1、它可以支持事件模型并保存HTTP的状态,益于线性业务的Web应用程序开发,基于Web Forms应用程序提供了许许多多的事件和上百种的服务器控件。

2、它使用页面控件器模式,在单个页面中实面很多的功能。更多信息请参考MSDN站点上的Page Controller

3、它使用view state和基于服务器的表单,使得管理页面状态信息更加容易。

4、它适合小的开发团队,使用高度集成的控件来提高Web设计人员和网页设计人员的效率。

5、般来说,它适合不是那么复杂的应用程序开发,因为它的页面类和控件类是合并在一起的,所以相对于MVC模式来说它需要编写的代码更少。

ASP.NET MVC框架的特性

        分离了应用程序的关注点,输入逻辑、业务逻辑、UI逻辑、可测试性、默认提供测试驱动开发(TDD)。MVC框架的全部的内核都是基于接口,而且可以进行mock对象测试,mock对象是模拟应用程序中真实的行为的对象。你可以使用单元测试应用程序而不必启动asp.net,这使得单元测试更加快速、灵活,您可以使用支持.Net Framework的单元测试框架。

        它是一个可扩展和可插件的框架,ASP.NET MVC框架的每个组成部分都被设计成可以很容易替换和定制。你能定义你的【视图引擎】,URL路由表,Action方法的参数形式等其它功能,ASP.NET MVC框架同样支持依赖注入(DI)和反转倒置(IOC)容器模型。DI允许你注入一类对象,而不是通过内部创建对象本身。IOC规定如果一个对象依赖另一个对象,那么第二个对象应该从外部源(如配置文件)中获得。这使得测试更加容易。

        拥有更大的URL映射组件,这使得你构建的应用程序的URL易于理解并便于搜索。它规定URL不能包含文件扩展名,这种URL名称模式更好的进行搜索引擎优化SEO和代表状态传输REST处理。

        支持ASP.NET页面(.aspx文件),用户控件(.ascx文件)和母板页(.master 文件)作为视图的模板,你能在ASP.NET MVC框架中使用ASP.NET已有的特性,象母板页、内联表达式(<%= %>),声明服务器控件、模板、数据绑定、本地化等等。

        支持ASP.NET特性,Asp.net MVC同样可以使用:

forms的身份验证和Windows的身份验证。

URL验证。

Membership和roles。

输出和数据缓存。

session和profile状态管理。

健康状态监控。

configuration系统和provider架构。

posted @ 2015-07-23 23:28  IT少年  阅读(155)  评论(0编辑  收藏  举报