ASP.NET MVC 是既 ASP.NET WebForms 之后,微软推出的 Front Controller 式的 Web 开发模型,它弥补了前者对 HTML 控制能力不足,单元测试较为困难等缺点。更重要的是,ASP.NET MVC 基于 MS-PL 发布,是一个真正的开源框架——且没有任何平台限制,也就是说,您可以在 mono 下使用或开发 ASP.NET MVC 的相关项目。
其实微软在今年 3 月的 MIX 大会上发布 ASP.NET MVC RTM 的时候,就已经公布了部分 ASP.NET MVC 2 的计划,并且在官方代码源中包含的 MvcFutures 项目中实现了 V2 的部分功能雏形。在沉寂了 4 个多月之后,现在微软终于发布了 ASP.NET MVC 2 的 Preview 1 版本,并在论坛中向社区征求反馈意见和建议。令人放心的是,ASP.NET MVC 2 Preview 1 能够与ASP.NET MVC 1.0 RTM 共存,不会影响后者的正常使用。
Scott Guthrie 一如既往地在第一时间内撰写博文,详细而又简单地介绍了 Preview 1 中的新特性。ASP.NET MVC 2 的“主题”是“提高生产力”,Preview 1 的主要功能有:
- 区域(Area):Area 提供了将 Controller 和 View 分组的功能,这个特性可以构建一个大型应用程序中相互独立的部分。每个 Area 可以独立放在不同的 ASP.NET MVC 项目中,并且由主应用程序共同引用。这个特性可用于应对大型应用程序所带来的复杂性,也使多个团队能够更方便地同时开发同一个应用程序。
- 数据标记验证(Data Annotation Validation):ASP.NET MVC 2 提供了内置的数据标记验证功能。这个功能利用了.NET 3.5 SP1 中加入的自定义属性(Required,StringLength,Range,RegularExpression 等),并且已经运用在 ASP.NET Dynamic Data 框架与.NET RIA Services 中。利用这一功能,开发人员可以为 Model 或 ViewModel 添加验证规则,ASP.NET MVC 框架则会自动进行数据绑定或 UI 验证。
- 强类型 UI 辅助方法:ASP.NET MVC V2 包含了新的 HTML UI 辅助方法,它利用了强类型的 Lambda 表达式来操作 View 模板的 Model 对象。这样在编写视图代码时便可以充分获得 IDE 的智能提示。更重要的是,它为视图带来更好的编译期检验能力。
- 模板化辅助方法(Templated Helper):这一功能可以根据数据类型自动选择相关的模板。例如,在视图中生成一个 System.DateTime 输入功能时,将会运用一个日期选择器模板。这与 ASP.NET Dynamic Data 框架中的 Field Template 有些接近,不过 Preview 1 中的模板化辅助方法是专为 ASP.NET MVC 框架而设计的。
此外,微软还公布了 ASP.NET MVC 2 的路线图。除了 Preview 1 中已经公开的内容之外,Preview 2 中会包括以下功能:
- 客户端验证:在 Preview 1 中模板化辅助方法及数据标记验证功能的基础上,构建一个客户端验证功能。
- 强类型输入(input)辅助方法:使用强类型的表达式构建出针对 Model 的输入元素。这些辅助方法还会利用数据标记验证功能来减少错误(如拼写错误)。
- 强类型链接(link)辅助方法:在 IDE 智能提示的辅助下,使用强类型的表达式来生成面向特定 Controller 和 Action 的链接。
- 异步 Action:提供开发不阻塞线程的 Action 的方法,这可以显著提升站点的伸缩性,尤其是在需要访问外部资源的情况下。
- 区域(Area)功能增强:可以在同一个项目中更好地组织应用程序,而不必分拆成多个项目。
- 其他改进:继续修复 ASP.NET MVC 1.0 及 ASP.NET MVC 2 Preview 1 中已知的问题,并根据用户反馈进行 API 增强,以及一些细微的新功能。
除了 Scott Guthrie 之外, Scott Hanselman 以及 ASP.NET MVC 团队的 Phil Haack 也在博客中介绍了 ASP.NET MVC 2 Preview 1 的情况, MSDN 和 Channel 9 还为“模板化辅助方法”这一重要功能提供了进一步的讲解和演示。更多消息请参考 ASP.NET MVC 2 Preview 1 的 Release Notes ,您还可以下载源代码对其进行深入了解。
评论