ASP.NET MVC 框架路线图更新

【原文地址】ASP.NET MVC Framework Road-Map Update
【原文发表日期】 Tuesday, February 12, 2008 1:05 PM

去年的十二月份,作为ASP.NET 3.5 Extensions CTP版的一部分,我们发布了新ASP.NET MVC 框架的第一个预览版。我也写了几个博客帖子,对该框架到底是什么,以及你可以如何使用它,提供了更多的细节:

  • ASP.NET MVC 框架 简介
  • ASP.NET MVC 教程 (第一部分)
  • ASP.NET MVC 教程 (第二部分: URL路径选择)
  • ASP.NET MVC 教程 (第三部分: 把ViewData从控制器传到视图)
  • ASP.NET MVC 教程 (第四部分: 处理表单编辑和提交场景)

此后,我们得到了很多正面的反馈,下载量非常高,感受到了围绕着该框架的兴奋。最近大家常问我的一个问题是,“新的版本什么时候出来,里面都有些什么?”

下面的内容将提供几个更新,是关于ASP.NET MVC 开发团队一直在开发的东西,以及不久就会发布的一些新特性。我在将来的另外一个帖子里将会讨论ASP.NET Dynamic Data(动态数据)以及一直在稳步前进的ASP.NET AJAX 特性方面的工作。

所有这些特性(ASP.NET MVC, ASP.NET Dynamic Data, 以及新的ASP.NET AJAX 改进)都将在今年稍后发布,可用于VS 2008 和.NET 3.5。

即将发布的ASP.NET MVC MIX 预览版

我们计划在几个星期后的MIX 08 大会上发布 ASP.NET MVC 的下一个公开预览版。这个版本将可以在网上为任何人所下载(你不需要参加MIX)。在这个版本中,我们融合了许多早期采用者的反馈。下面是将在这下一个预览版中出现的一些改进:

1)ASP.NET MVC框架可以部署在应用的/bin目录中,以及在部分信任权限下工作

第一个ASP.NET MVC 预览版,为了将System.Web.Mvc.dll程序集注册到机器的GAC(全局程序集缓存)中去,需要一个安装程序在机器上运行。

从即将发布的这个预览版开始,我们将允许应用直接从应用的/bin目录中直接引用System.Web.Mvc.dll 程序集。这意味着不需要在服务器上运行安装程序就可以使用ASP.NET MVC 框架,你只要直接将你的应用拷贝到远程ASP.NET 服务器上,就可以运行(不用注册,也不需要额外的配置步骤)。

我们还在做一些工作,以允许ASP.NET MVC 框架能在“部分和中等信任权限(partial/medium trust")”的主机场景中运行。这将允许你在廉价的共享主机帐号中也可使用这个框架,而不用要求主机供应商做什么(只要将你的应用FTP上去,它就能运行,他们不需要安装什么东西)。

2)显著增强的路径选择特性和基础设施

ASP.NET MVC 框架一个最强大的特性是它的路径选择引擎(我在这里讨论过这些特性)。

即将发布的这个ASP.NET MVC 预览版将包含更多的URL路径选择的特性和改进。你现在可以使用置名的路径(允许明确的路径规则的引用),使用灵活的路径通配符规则(允许自定义的基于CMS的URLs),引申和声明自定义的路径规则(允许象REST资源映射那样的场景等等)。

在这个预览版中,我们还将URL路径选择基础设施与MVC框架的其他部分分开,这允许我们可将其用于ASP.NET中其他的非MVC特性中 (包括ASP.NET Dynamic Data和ASP.NET Web Forms)。

3)改进的VS 2008工具支持

第一个ASP.NET MVC预览版只有极小的VS 2008 支持(基本上就是简单的项目模板支持)。

这个即将发布的ASP.NET MVC预览版将提供改进的VS 2008集成支持。这包括,更好的项目文件模板,自动的项目默认设置等等。我们还加了内置的“测试框架”向导,这向导将在你通过 File->New Project 对话框创建新ASP.NET MVC项目时自动运行。这将允许你轻松地为你的ASP.NET MVC应用命名和连接单元测试项目。

ASP.NET MVC测试框架向导是可插拔的,允许自定义的测试项目模板添加到支持的测试选项表中去:

这允许开发人员轻松地选择他们最喜欢使用的任意单元测试框架(以及关联的mocking和依赖注入选项)。

4)Controller Action方法不再需要[ControllerAction]特性

第一个ASP.NET MVC 预览版要求Controller类的action方法明确标有[ControllerAction]特性,才可调用:

ASP.NET MVC 框架路线图更新_第1张图片

基于早期采用者的反馈,即将发布的ASP.NET MVC版将去掉这个要求,取而代之的是,在默认情形下,Controller上的所有公共方法现在都被认为是Action方法:

ASP.NET MVC 框架路线图更新_第2张图片

注: 你可以添加特性,以避免你的Controller的公共方法成为可调用的action方法,假如你想要/需要加一个公共的非action方法的话。

5)控制器和Action方法的新过滤特性支持

在这下一个ASP.NET MVC版本中启用的一个新扩展性特性是个叫做“过滤特性(Filter Attributes)”的特性。这允许你把拦截代码注入到MVC控制器的请求中,这些代码可以在Controller或它的Action方法执行之前和之后执行。这个行为能促成一些非常棒的封装场景,在其中你可以干净,声明的方式来包装和重用功能。

例如,我可以使用一个 [OutputCache] 过滤特性,来每次30秒输出缓存我的产品列表网页:

ASP.NET MVC 框架路线图更新_第3张图片

或者使用 [Authorization] 过滤特性来确保只有拥有某个特定安全角色的人才允许编辑产品:

ASP.NET MVC 框架路线图更新_第4张图片

这个过滤机制是可扩展的,你可以轻松地为Controller类或者其中的Action方法创建你自己的自定义过滤特性。过滤器(以及使用过滤器的控制器和action方法)是可以被完全单元测试的。

6)HTML辅助方法成内置

第一个ASP.NET MVC 预览版只有几个HTML UI辅助方法内置于核心程序集中。然后我们发布了一个单独的下载,内含一堆可为你所用的额外的HTML辅助方法。

这个即将发布的ASP.NET MVC 预览版现在内置拥有这些HTML辅助方法(不需要单独的下载)。下个月,我们还将开始讨论我们正在对客户端ASP.NET AJAX库所做的一些新的改进,以及一些能与ASP.NET MVC轻松集成的AJAX辅助方法。

7)许多重构和设计方面的改进

这个即将发布的ASP.NET MVC预览版还包括几个重构和设计改进,以进一步提高MVC框架的可扩展性和可测试性。总的来说,开发团队遵循了这样一个设计理念,针对所有特性你都有三个选项:

  1. 原封不动地使用内置的特性/实现
  2. 稍微定制一下内置的特性/实现,不需要编写很多代码
  3. 用自定义的东西完全替换掉内置的特性/实现

例外,你现在可以改变视图引擎(ViewEngine)的定位逻辑 (locator logic),而不用改变视图引擎的执行逻辑(反之亦然),或者可以把视图引擎完全置换掉。Controller Factory支持也被扩展成更便利与依赖注入框架的轻松集成。路径规则现在也是完全可扩展的,Controller也更易测试了,等等。

8)可下载的ASP.NET MVC框架源码(可编译和施于补丁)

上个月,我宣布了.NET框架源代码可以下载和调试了。最终在发布 ASP.NET MVC 框架之后,该框架的源代码也将以同样的机制提供给开发人员,就像其他的ASP.NET源代码一样。

从下一个预览版开始,我们还将把ASP.NET MVC 框架的源代码以可编译的VS项目方案的方式提供下载。这将允许你轻松地查看和调试ASP.NET MVC 框架源代码。我们还将包括一个许可,允许你可以对ASP.NET MVC 框架的源代码进行补丁,万一你在使用MVC框架开发的应用中遇上其中的缺陷的话。

这个许可将不允许你重新发布你补过的ASP.NET MVC 版本(我们想避免有多个不兼容的ASP.NET MVC 版本的流传以及相互之间的冲突)。但它会允许那些想动手开发ASP.NET MVC 应用的开发人员立刻取得进展,而不必担心为他们无法绕过的临时的缺陷所阻碍。

结语

下一个 ASP.NET MVC 预览版中还包括了很多其他的变动(包括许多辅助属性/方法/对象)。希望上面的列表对即将出现的几个较大的改进提供了一些介绍。在MIX大会左右我会在预览版发布后写帖子,提供更新的预览版的地址。

希望本文对你有所帮助,

你可能感兴趣的:(mvc,框架,单元测试,asp.net,action,authorization)