ASP.NET MVC 框架-简介

作者: 来源:Scott Guthrie 博客中文版 日期:2009-4-2

(前不久,微软发布了 ASP.NET MVC 1.0,本连载是 1.0 版本之前的,但在 MVC 教程还很稀缺的今天,本连载还是具有非常高的参考价值的。ITPOW编辑注)

过去的几年里,很多人要求 ASP.NET 的一件事情就是对使用基于 model-view-controller(模型-视图-控制器,简称MVC)架构来开发 web 应用的内置支持。

上个周末在 Austin 举行的 Alt.NET 大会上,我首次对我的团队正在开发的新 ASP.NET MVC 框架作了一个公开的演示。你可以在 Scott Hanselman 这里的博客上观看我的讲座的录像。

我们将在今年稍后发布该框架的一个公开预览版,然后在明年的上半年将它作为完全支持的 ASP.NET 特性推出。

模型-视图-控制器(MVC)框架是什么东西?

MVC 是个将一个应用的实现分成三个组件角色的框架技术:模型,视图和控制器。

  • 在基于 MVC 的应用里,Model(模型)是负责保持状态的应用组件。这个状态通常都持久于数据库之中(譬如,我们也许会有一个Product(产品)类用来代表SQL中的Products数据表中的订单数据)。
  • 在基于MVC的应用里,View(视图)是负责显示用户界面的组件。这个UI通常是使用模型数据来创建的(譬如,我们也许会生成一个Product"编辑"视图,根据当前Product对象的状态,显示文本框,下拉框和复选框等)。
  • 在基于MVC的应用里,Controller(控制器)是处理用户交互,操作模型和最终选择用哪个视图来显示UI的组件。在MVC应用中,视图只是用来显示信息而已,是控制器来处理和回应用户的输入和交互的。

使用MVC方法的一个好处是,它有助于促进应用中模型,视图,控制器间的关注的清晰分离。保持关注的清晰分离使得对应用的测试极其容易,因为不同应用组件间的契约的定义和表达是更明确的。

MVC模式也有利于促进红/绿式测试驱动的开发 (TDD),通过它,你可以在你实际编写应用代码本身之前首先实现自动化的单元测试,这些单元测试定义和核实了新代码的需求。

ASP.NET MVC 框架的一些简要细节

在几个星期后,相关代码可以下载之后,我将写一些关于这个新的ASP.NET MVC 框架的深入性的教程贴子(与此同时,想进一步了解它的最佳方式是观看我的Alt.net讲座的录像):

这里是关于ASP.NET MVC 框架的一些简要细节:

  • 它将促进清晰的关注分离,可测试性,和TDD。MVC框架中的所以核心契约都是基于接口的,可以轻易地通过mock来模拟(包括基于接口的IHttpRequest/IHttpResponse这些基本的东西)。你可以不用在ASP.NET进程中运行控制器(这使得单元测试很快),就单元测试你的应用。你可以使用你想使用的任何单元测试框架来做单元测试,包括NUnit, MBUnit, MS Test等等。
  • 这个框架具有高度的可扩展性和可插拔性。MVC框架中所有的东西都是这样设计的,它们可以被轻易地替换掉或者定制(譬如,你可以插入你自己的视图引擎,路径转向策略(routing policy),参数序列化等等)。它还支持使用现有的依赖注入(dependency injection)和控制反转(IOC)容器模型(Windsor, Spring.Net, NHibernate等等)。
  • 它包括一个非常强大的URL映射组件,允许你使用非常干净的URL来建造应用。URL不需要拥有文件扩展,是设计来轻松支持SEO和REST友好的命名模式的。譬如,在我上面的项目中,我可以轻松地把/products/edit/4映射到ProductsController类的Edit方法上,或者把 /Blogs/scottgu/10-10-2007/SomeTopic/ 映射到BlogEngineController类的DisplayPost方法上。
  • MVC框架支持将现有的ASP.NET .ASPX, .ASCX,和 .Master 标识文件当作视图模板(view template)之用(这意味着你可以轻松地使用很多现有的ASP.NET特性,象嵌套的母版页,<%= %>块 ,声明式服务控件,模板,数据绑定,本地化等等)。但是,它不使用现有的将交互返回服务器的postback模型,取而代之的是,你将把用户的所有交互转给控制器类来调度,这有助于关注的清晰分离和提高可测试性(这也意味着,在基于MVC的视图内没有viewstate或page的生命周期之说)。
  • ASP.NET MVC框架将完全支持象forms/windows认证,URL授权,成员/角色,输出和数据缓存,session/profile状态管理,健康监测,配置系统,以及provider架构等等现有的ASP.NET特性。

结语

如果你正在想使用MVC方式建造你的web应用的话,我认为你会发现这个新的 ASP.NET MVC 框架选项非常干净,而且容易使用。它将允许你在你的应用中很轻易地保持关注分离,而且有助于进行干净的测试和TDD。

几个星期之后,我将撰文说明新的MVC特性的工作原理,以及如何利用它们。

希望本文对你有所帮助,

Scott

相关文章