ruciffa

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 

引用原文地址:http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx

来自Scott GublogASP.NET MVC系列,以下是译文,如有不妥之处,请不吝指出。本文的立意是让人更容易理解,所以有些地方可能不会生硬的翻译原文,毕竟英语环境里面的某些话语直接用中文说反而会引起理解的障碍。

ASP.NET MVC Framework

这些年以来,很多人对ASP.NET改进要求之一就是让其能够在完全支持MVC(model-view-controller,模型-视图-控制器)架构下开发web应用程序。

上个周末我在AustinAlt.NET conference上,把我们team一直在开发的ASP.NET MVC framework做了第一次面向公众的演示说明。想要了解详细情况的话,你们可以看一下Scott Hanselmanblog here)上我的演示视频。

今年晚些时候,我们会发布一个ASP.NET MVC Framework的公开预览版本,大约明年中叶的时候我们就会把它作为一个完全支持的新特性正式集成到ASP.NET之内。

译者注:本文发布时间为October 14, 2007 10:41

什么是Model View Controller (MVC) Framework?

MVC是一个方法论层面上的framework,它的主要思想是把一个应用程序的实现划分为三个角色组件:models(模型), views(视图), controllers(控制器)

·          MVC模式的程序中,"Models" (模型)是负责维持状态的组件。一般来说,所谓的状态都保存在数据库当中.(比如: 我们在程序使用一个名为Product” 的类来接收来自SQL数据库当中一张名为Products”表的数据,我们在程序当中一般都是通过使用这个Product类来操作实际数据库中Products表里面的数据).

·          MVC模式的程序中,"Views" (视图)是负责显示面向用户界面(UI)的组件典型性的,UI都在模型数据的基础上被创建 (比如: 我们创造一个编辑Product 的视图,它上面的textboxdropdowncheckbox等控件都建立在Product 模型当前状态的基础之上).

·          MVC模式的程序中,"Controllers" (控制器)的工作是接收终端用户的需求操作,处理各种模型,最终选择一个视图,并把它作为UI显示给终端用户。要注意的是,在MVC模式的应用程序当中视图仅仅用来显示信息,而接收和应答用户的输入操作是控制器的工作。

使用MVC方法论的一个好处就是它可以帮助人们在一个应用程序内部更清晰地分离模型(Model),视图(View)和控制器(Controller)这三个模块。这样的话能够使程序的测试更加容易,因为这样就可以更清晰地定义不同程序组件之间的contract,并且只要根据它就能很容易地相互连接各个模块。

另外,MVC能够更好地支持测试驱动的开发模式( test driven development TDD) – 在你写实际的新代码之前,你就已经实现了自动的单元测试,并且使用它来定义和核实等待编写的代码的实际需求。

关于 ASP.NET MVC Framework的一些细节

一旦预览版提供下载后,几周之内我会发一些包含更深入的ASP.NET MVC framework学习材料的blog (在那之前,最好的学习方式是去看我的演示视频).

在此之前,先分享一些关于ASP.NET MVC framework 的细节。

·          它在默认设置下就实现了模块概念的清晰分离,应用程序的可测试性和测试驱动的开发模式.  MVC framework 内部的所有核心contract都是以接口为基础并且能够很容易地重写替换的 (包含了以接口为基础的内部IHttpRequest/IHttpResponse ). 在一个ASP.NET的进程当中,你可以在不运行控制器的情况下,对程序进行单体测试(这能使你的单元测试更加快速)  你也可以使用任何一个你所需要的单元测试框架在实现你的测试 (包括 NUnit, MBUnit, MS Test等等).

·          它是高度可扩展和易添加的.  MVC framework 中的每一个模块都被设计成容易替换和自定义的, (比如: 你可以有选择性的使用你自己的视图引擎,URL寻址策略,以及参数串行化等等). 它还支持使用既有的依赖注入以及控制反转容器模型(Windsor, Spring.Net, Nhibernate等等).

·          它包含了一个强大的URL映射组件,可以让你使用清晰的URL来建立你的应用程序.  URL不需要在内部扩展,而是被设计成更容易支持SEO REST-friendly的命名模式比如说, 在我上面说到的项目当中,我可以很容易地把/products/edit/4这个URL 映射为ProductsController类里面的名为"Edit"action方法, 或者把/Blogs/scottgu/10-10-2007/SomeTopic/这个URL 映射为一个BlogEngineController类中的名为"DisplayPost"action方法.

·          MVC framework 支持把既有的 ASP.NET .ASPX, .ASCX以及 .Master markup 文件当作视图模板使用 (这意味着你可以很容易地使用已有的诸如嵌套Master Page, <%= %> 内联代码片断, 声明好的服务器控件, 模板, 数据绑定, localization之类的ASP.NET 特性).  不过,使用它们的话,将会不再使用已有的ASP.NET post-back 到服务器的行为模式取而代之的是你把终端用户的操作需求发送到一个控制器类(Controller- 这样能够帮助你建立概念模块的清晰分离以及应用程序的可测试性 (这还意味着在MVC为基础的视图当中不会再有视图状态(viewstate以及页面生命周期这样的问题).

·          ASP.NET MVC framework 完全支持已有的ASP.NET 特性,比如forms/windows 身份验证, URL authorization, membership/roles, 输出数据的缓存(caching, session/profile状态管理, health monitoring, 配置系统以及provider架构等等.

Summary

如果你希望使用MVC的方法建立你的web应用程序,我想你会发现新的ASP.NET MVC Framework 的架构非常清晰而且容易使用它能够让你更容易的保持程序概念模块的相互分离,并能促进单元测试以及支持测试驱动的开发模式

在今后的几周内我会放出更多的学习资料,来揭示新的MVC特性是如何运作的,以及你应该如何去利用它们。

希望能够帮到你。

Scott

posted on 2008-05-06 14:17  Brandon  阅读(304)  评论(0编辑  收藏  举报