原文:ASP.NET MVC Overview

了解ASP.NET MVC 应用程序 和 ASP.NET Web Forms 应用程序的区别。学习判断何时应该创建 ASP.NEt MVC 应用程序


 

Model-View-Controller (MVC) 设计框架模式把一个应用程序分离成3个组件:模型、视图、控制。相较于ASP.NET Web Forms 表单模式,在创建基于MVC的网路应用程序的时候, ASP.NET MVC 框架提供了另一种选择。ASP.NET MVC  框架是一个轻量级的,高可测试的表现框架(相较于ASP.NET Web Forms 表单模式),并且同已存在的ASP.NET特性(比如,母版页、基于用户的身份验证)集成在一起。MVC框架定义在 System.Web.Mvc 命名空间中,并且是 System.Web 命名空间基础的,支持的部分。

MVC 是一个许多开发者都熟悉的标准开发模式。很多Web应用程序能够从MVC框架获益。当然,还有一些Web应用程序会继续使用传统的基于Web Forms 和回传机制 的ASP.NET 程序设计模式。也有一些程序同时使用这两种模式! 值得高兴的是,这两种模式谁也不会排斥谁。

MVC 包括以下几个组件::

         

图 1:调用控制器动作需要参数值

  • Models: 模型对象是一个程序实现其数据域逻辑的部分。通常,模型对象用于存取保存在数据库中的模型状态。例如,一个产品对象(Product object)从数据库中取出信息,操作完之后再把更新过的信息放回数据库中的产品表(Products table)。

在一个小型的程序中,模型通常是一个概念上的分离而不是物理上的(可以理解为:此时,模型只是一个概念,没有实体)。例如,如果一个程序只是从数据集(a data set)中读取数据然后把它传递给视图,那么这个程序就没有物理模型层和与其相关的类。这种情况下,数据集其实就扮演了模型对象的角色。

  •   Views: 视图是程序显示用户界面(UI)的部分。典型的,用户界面基于模型数据创建。举个例子,有一个产品表的编辑视图,它有文本框,下拉列表,复选框等等。而我们要知道的是,这个编辑视图正是基于此产品对象的当前状态。
  • Controllers: 在一个程序中,控制器用于处理用户交互,协同模型工作,最终将所选的视图显示于用户界面。在MVC程序中,视图仅用来显示信息,控制器用于对用户的输入和交互行为作出响应和处理。例如,控制器处理一个查询字符串,然后将字符串的值传递给模型,然后模型使用这些值操作数据库。

MVC 模式将应用程序分离成不同的模块(输入逻辑,业务逻辑,界面逻辑),进而以一种低耦合的方式来开发程序。这种模式规定了每一个逻辑该在程序中出现的位置。界面逻辑属于视图。输入逻辑属于控制器。业务逻辑属于模型。编写程序时,MVC 模型的这种分离方式,可以保证在一个时间点上,你的注意力只在某一个实现的一个(而不是多个)方面,进而帮助你管理复杂度。例如,你可以将注意力全部集中在视图上而不用关心业务逻辑是什么样子。

除了可以管理复杂度,相较于基于表单的 ASP.NET Web 程序(Web Forms-based ASP.NET Web application),MVC 模式可以让测试变得更简单。例如,在基于表单的Web程序中,一个单独类被同时用来显示输出和响应用户输入 。给一个基于表单的Web程序编写自动测试是一件非常麻烦的事情,为了测试一个单独的页面,需要实例化这个page类以及这个类在整个程序中的所有子控制器和附加依赖类。因为运行一个页面需要实例化很多的类,因此,哪怕只是对程序中的一小部分进行测试,都是一件十分困难的事。跟测试Mvc程序相比,测试基于表单的Web程序更难以实现。除此之外,后者还需要服务器的支持。Mvc 框架通过分离各个组件并且大量使用接口,可以将框架的各个部分独立起来,实现框架各部分的低耦合。这样就可以(独立于框架的其他部分)对个别部分进行单独测试。

MVC 三个组件之间的低耦合,同时促进了并行开发。举例来说,一个开发者负责视图,一个开发者负责控制器逻辑,一个开发者负责模型的业务逻辑。


 

如何判断何时应该创建MVC程序   

 

在开发Web程序之前,必须仔细认真的考虑到底该使用Mvc框架还是Web 表单模式。前者并不是取代后者,你可以任选其一。(如果你的Web程序已经是基于表单的模式,不管你的选择如何,这个程序依然可以跟之前一样正常工作。)

在做出选择之前,我们可以先来了解一下这两种模式各自的优势。

 

基于MVC的程序的优势:

  • 通过将程序分离成视图、控制器、模型三个部分,可以更容易的管理复杂度。
  • MVC 不使用视图状态和基于服务器的表单。因而,对于那些希望能够控制程序行为的开发者来说,MVC框架是理想的选择。
  • MVC使用前端控制器模式,通过一个单独的控制器来处理Web程序的请求。这样可以使程序能够支持丰富的路由基础结构。若想了解更多信息,可以到MSDN查看前端控制器。
  • 对测试驱动开发(TDD)提供更好的支持
  • 当一个程序由一个大型的项目组负责,并且项目组希望能够对程序行为高度控制的时候,MVC会非常有用。

基于表单的程序的优势: 

  • 它支持保存Http状态的模型,有益于业务线Web程序开发。基于Web窗体的程序提供许多的事件,这些事件被数百个服务器控件支持。
  • 它提供一种可以将功能添加独页面的页面控制器模式。更多的信息,请参阅 MSDN 网站上的页面控制器
  • 它使用视图状态和基于服务器的表单,使管理状态信息更加容易。
  • 对于那些期望通过使用大量的组件进行有效的快速开发的小团队来说,基于表单的程序是个不错的选择
  • 通常,在程序开发过程中,由于组件(页面类,控制器,等等)的高度集成,对比MVC,基于表单的程序开发模式需要更少的代码,同时开发的复杂度也更低。

 

MVC框架的特点

  • 应用程序任务(输入逻辑,业务逻辑,UI逻辑)的分离,可测试性,默认的测试驱动开发。所有的核心协议都是基于接口的,并且可以通过虚拟对象来测试。这里的虚拟对象指的是那些模仿程序中真实对象的行为的虚拟对象。在不运行ASP.NET中的控制器的情况下进行单元测试,可以非常迅速和l灵活。你可以使用任意跟 .NET Framework 兼容的测试单元。
  • 一个可扩展可插入的框架。MVC框架中的组件可以很容易的更换和自定义。你可以插入自己的视图引擎、URL路由策略、操作方法参数序列化以及其他组件。MVC框架还支持使用依赖注入(Dependency Injection (DI) )和控制反转( Inversion of Control (IOC) )容器模式。依赖项注入允许你向一个类中注入对象,而不是依赖类来创建对象本身。控制反转定义,如果一个对象需要另一个对象,那么第一个对象需要从外部源(例如配置文件)来获得第二个对象。这样一来,测试就可以更简单。
  • 一个强大的映射(URL-mapping)组件可以帮助开发者开发一个拥有可理解、可查询连接的应用程序。连接不需要包含文件扩展名,并且被设计用来支持命名模式,这样有利于工作搜索引擎优化(seo)和具象状态传输(REST)处理
  • 支持在已存在的ASP.NET页面(.aspx文件)中如同使用视图模板一样使用标记,使用控制器(.aspx文件),母版页(.master文件)标记文件。你可以同时使用MVC框架和现有的ASP.NET功能,例如嵌入母板页,行内表达式(<%=%>),声明服务器控件,模板,数据绑定,本地化,等等。
  • 支持现有的ASP.NET功能。MVC允许你使用下列功能:表单验证,窗口验证,连接验证,成员角色与权限管理,输出和数据缓存,会话属性状态管理,健康监控,配置系统,供给体系结构。

 

作者信息:

Microsoft ASP.NET Team ——ASP.NET 是一个免费地Web框架,它跟Html,CSS,Js 一同用于建立网站和Web程序

 

 

 

 

 

 

 

 

posted on 2014-07-14 23:31  哈哈娃以  阅读(210)  评论(0)    收藏  举报