原文:http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview

这篇文章帮助你了解关于ASP.NET MVC应用程序和ASP.NET Web Forms的不同。学习如何确定何时创建一个ASP.NET MVC应用。

模型-视图-控制器(MVC)架构风格将应用程序分为了3个主要的部分:模型、视图和控制器。ASP.NET MVC框架提供了一个ASP.NET Web Forms风格的新的选择来创建基于MVC的Web应用。ASP.NET MVC框架是一个轻量级、容易测试表现层的框架(跟基于Web Form2-based应用一样),将现有的ASP.NET特性,比如母版页和基于Membership授权集成在一起。MVC框架被定义在System.Web.Mvc命名空间中,它是一个基础,受到System.Web命名空间的支持。

MVC是一个许多开发者都熟悉的标准的设计模式。有一些Web应用程序都从MVC框架中受益。其它应用程序将会继续使用基于Web Forms和postbacks(回传)机制的传统的ASP.NET应用程序风格。其它类型的Web应用将会合并这两种方法。不是谁替代谁。

MVC框架包含以下部分:

图01:调用一个控制器动作时需要一个参数值
 
模型:模型对象是应用程序的部分来实现应用程序逻辑的数据域。通常的,模型对象检索和存储模型都在数据库中。举个例子,一个产品对象可能从数据库中检索,执行它,然后在SQL Server中写回更新信息到产品表。
在小型应用程序中,模型通常是将物理模型转化为概念模型。举个例子,如果应用程序只读一个数据集并把它发送给视图,应用程序并没有一个物理模型层和相关类。这样的话,数据集充当模型对象的角色。
 
视图:视图是显示应用程序用户接口的组件。典型的,用户接口是从模型数据创建的。一个例子就是一张产品表显示基于产品对象当前状态的文本框、下拉框和复选框。
 
控制器:控制器是用来处理用户交互、与模型工作并最终选择一个视图用来呈现用户接口的组件。在一个MVC应用程序中,视图只是用来显示信息;控制器处理和响应用户输入和交互。比如控制器处理查询字符串的值以及把这些值传给模型,模型可以使用这些值查询数据库并返回给控制器。
 
MVC风格帮助你创建一个松耦合的、分离不同方面(输入逻辑、业务逻辑和用户接口逻辑)的应用程序。这个风格确定每个逻辑应该在应用程序中处于的位置。用户接口逻辑在视图中。输入逻辑在控制器中。业务逻辑在模型中。当你创建一个应用程序时,这种分离会帮助你管理复杂的应用,因为它能够帮助你将你的注意力一次集中在一个方面的实现。比如,你可以专注于视图而不用关心它的业务逻辑。
 
除此以外,管理复杂的应用,MVC风格比基于Web Forms风格的ASP.NET Web应用程序更容易测试。举个例子,在基于ASP.NET Web应用程序中,一个单独的类被用来显示输出,同时也用来响应用户输入。书写基于Web Forms的ASP.NET应用程序的自动化测试会变得复杂,因为测试一个独立的页面,你必须实例化页面类、所有它的子控件和额外的应用程序中的独立的类。因为如此多的类在运行页面时被实例化,在独立部分的应用程序中集中的、完全的书写测试将会变得困难。基于ASP.NET应用程序的测试因此将会比在一个MVC的应用中更困难。更多的,测试基于Web Forms的ASP.NET应用程序需要一个Web服务器。MVC框架解耦这些部分并且使得接口更加容易使用,在独立的其余框架部分测试成为可能。
 
在MVC应用程序的3个主要部分解耦,也可以提升并行开发。比如,第一个开发者可以做视图,第二个开发者可以做控制器逻辑,第三个开发者可以专注于模型业务逻辑。
 
决定何时创建一个MVC应用
你必须认真考虑是使用ASP.NET MVC框架还是ASP.NET Web Forms模型来做一个Web应用。MVC框架并不是替代Web Forms模型。你可以使用其中的一种来做Web应用(如果你有一个现成的基于Web Forms的应用程序,最好还是使用已经拥有的技术来继续工作)。
 
在你觉得使用MVC框架还是Web Forms模型来做一个特定的网站,权衡每一种方法的优点。
 
基于MVC架构的Web应用的优点
ASP.NET MVC框架提供了如下一些优点:
  • 它通过将应用程序分为模型、视图、控制器等几个部分,来使得管理复杂的项目更容易。
  • 它不使用ViewState和基于服务器端的Forms。这使得MVC框架对于想完全控制应用程序行为的开发者来说很理想。
  • 它使用一个前端控制器风格通过一个单控制器来处理Web应用程序。这帮助你设计一个支持路由的应用程序。更多信息,参考MSDN网站上的Front Controller
  • 它提供了更好的测试驱动开发支持(TDD)。
  • 它对控件团队开发者和设计者之间的工作提供了支持。

基于Web Forms的Web应用的优点

基于Web Forms框架提供了如下一些优点:
  • 它支持事件模型来保持HTTP通信,这使得Web应用开发从单线业务中受益。基于Web Forms的应用应用提供了大量的服务器端控件的事件。
  • 它使用一个页面控制器风格,增加功能到独立的页面。更多信息,参考MSDN网站上的Page Controller
  • 它使用ViewState和基于服务器端的Forms,这能更容易的管理状态信息。
  • 对于Web开发者和设计者团队来说,可以更好的使用大量的服务器端控件来进行快速应用开发。
  • 一般来说,会降低应用程序开发的难度,因为组件(页面类、控件等等)都高度集成,比MVC模型所需要的代码量更少。

ASP.NET MVC框架的特性

ASP.NET MVC框架提供了如下的特性:
  • 分离应用程序任务(输入逻辑、业务逻辑和用户接口逻辑),更容易测试并且原生支持测试驱动开发(TDD)。所有在MVC框架中的核心交互都基于接口,并且能够使用模拟对象行为的模型对象进行测试。你可以不用运行ASP.NET进程中的控制器就可以进行单元测试,这使得单元测试很快而且灵活。你可以使用任何兼容.NET框架的单元测试框架进行测试。
  • 一个可扩展的支持注入的框架。ASP.NET MVC框架组件被设计以至于他们能够容易替换和自定义。你可以在你自己的页面引擎中使用注入,URL路由策略,Action方法参数序列化以及其它部分。ASP.NET MVC框架同样支持依赖注入(DI)和控制反转(IOC)。依赖注入允许你在类中注入对象,取代依靠类来创建对象自身。控制反转确定另一个对象,第一个对象应该通过外部源比如配置文件来获取第二个对象。这使得测试更容易。
  • 一个强有力的URL映射组件使得你创建应用程序更容易阅读并被搜索。URL并不会必须包含文件名扩展,来被设计成支持URL命名风格更好的工作,并对搜索引擎优化(SEO)和REST地址支持更好。
  • 支持一个现有的ASP.NET页面,用户控件以及母版页标签文件作为视图模版,你可以用ASP.NET MVC框架使用到现有的ASP.NET特性,比如内嵌母版页,单行表达式、服务端控件、模版、数据绑定、全球化等等。
  • 支持现有的ASP.NET特性。ASP.NET MVC允许你使用如下特性,比如:Forms授权和Windows认证、URL授权、Membership和角色、输出和数据缓存、Session和Profile状态管理、health监控、配置系统以及Provider架构等。

ASP.NET MVC概述的更多相关文章

  1. ASP.NET MVC概述及第一个MVC程序

    一.ASP.NET 概述        1. .NET Framework 与 ASP.NET                .NET Framework包含两个重要组件:.NET Framework ...

  2. ASP.NET MVC 概述

    目标:学习ASP.NET MVC 和ASP.NET WebForm的不同之处.学习在合适的地方使用ASP.NET MVC. MVC(Model-View-Controller)结构模式把一个对象分离成 ...

  3. 习题练习-第1章ASP.NET MVC概述

    一.选择题 1.ASP.NET MVC自2007年首次公布预览以来,作为(    )的替代品,普及度已明显提高,现在很多大型Web应用程序都是使用这一技术构建的. A.ASP    B.ASP.NET ...

  4. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总

    MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...

  5. ASP.NET MVC 教程汇总

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

  6. ASP.NET MVC:01理解MVC模式

    ASP.NET MVC是ASP.NET Web应用程序框架,以MVC模式为基础. MVC:Model View Controller 模型-视图-控制器Model(模型):负责对数据库的存取View( ...

  7. 全网最全ASP.NET MVC 教程汇总

    全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...

  8. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

  9. [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

    [ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>       ...

随机推荐

  1. UVA - 10883 Supermean

    Description Problem F Supermean Time Limit: 2 second "I have not failed. I've just found 10,000 ...

  2. 功能丰富的 Perl:轻松调试 Perl

    http://www.ibm.com/developerworks/cn/linux/sdk/perl/culture-4/index.html

  3. [012]泛型--lambda表达式捕获

    lambda表达式的捕获跟参数差不多,可以是值或者引用. 1.值捕获 与传值参数类似,采用值捕获的前期是变量可以拷贝:与参数不通透的是:被捕获的变量的值是在lambda创建时拷贝,而不是调用时拷贝. ...

  4. 进程环境之C程序的存储空间布局

    从历史上讲,C程序一直由下面几部分组成: 正文段.这是由CPU执行的机器指令部分.通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器.C编译器和shell等)在存储器中也只需有一个副本,另 ...

  5. C#_datatable 写入大量数据_BulkCopy

    using Microsoft.Win32; using System; using System.Collections.Generic; using System.Configuration; u ...

  6. Apache中 RewriteRule 规则参数介绍

    Apache中 RewriteRule 规则参数介绍 摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量 ...

  7. 判断ie,并确定其版本号

    var UA = navigator.userAgent,isIE = UA.indexOf('MSIE') > -1,v = isIE ? /\d+/.exec(UA.split(';')[1 ...

  8. C#开发-ftp操作方法整理

    1.整理简化了下C#的ftp操作,方便使用    1.支持创建多级目录    2.批量删除    3.整个目录上传    4.整个目录删除    5.整个目录下载 2.调用方法展示, var ftp ...

  9. html笔记 横向两列布局

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. String 、InputStream、Reader 的转换

    1.String –> InputStream InputStrem is = new ByteArrayInputStream(str.getBytes());orByteArrayInput ...