BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

ASP.NET MVC 3拥抱动态类型

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2010年12月14日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

大约十年前,微软将全部赌注压在了WebForms和静态类型上。随着从零散到完整封装的不断发展,现在的每个页面几乎都可以看作是自己的程序。随后几年,业界向另一个方向不断迈进,钟爱分离优于封装、晚绑定优于早绑定这一理念。这导致了两个很有趣的问题。

第一个就是术语的问题。考虑最初的Smalltalk MVC模式,视图与控制器不仅紧密耦合在一起,而且通常会成对出现。微软的大部分框架都是这样的,包括经典的VB、WinForms、WebForms、WPF以及Silverlight,他们都使用了代码隐藏文件来存放控制器逻辑。但目前所说的“MVC”通常指的是视图与控制器是松耦合的框架。对于Web框架来说更是如此,HTML的表单提交机制允许任何视图提交到任何的控制器上。由于这篇文章主要谈论的是Web技术,因此我们需要使用现代化的定义。

第二个问题是“如果你是微软,该如何变换轨道而不给开发者造成太大压力”?到目前为止,这个问题的答案是:每年都发布新版本,直到开发者适应为止。ASP.NET MVC的首个产品于去年3月发布。今年3月发布了ASP.NET MVC 2.0。3.0目前处于RC 2阶段,预计将于明年3月正式发布。

12月10日,微软发布了ASP.NET MVC 3.0 Release Candidate 2。RC 2构建在微软对jQuery的承诺之上:在默认的项目模板中引入jQuery 1.4.4、jQuery Validation 1.7以及jQuery UI。虽然人们认为微软将重点从服务器端控件转移开来是个玩笑,但引入 jQuery UI则表明微软这次是动真格的了。

对于那些担心可扩展性的开发者来说,现在有很多优秀的控件可以替换掉会话状态。借助于SessionState属性,你可以告诉控制器会话状态是只读的、读写的还是可完全忽略掉的。这对于单服务器的站点来说没什么,但如果一台服务器需要从另一台服务器获取会话状态,那么这种方式就可以提供很大的帮助了。

MVC 3包含了Razor视图引擎。默认情况下,该引擎会编码HTML输出,这样我们就能轻松地在屏幕上输出原生文本了。即便没有HTML注入攻击的风险,未编码的文本也能轻松防止页面的渲染。

对于众多的C#开发者来说到底什么才是最震撼的呢,那就是MVC 3针对控制器和视图而拥抱了动态类型。ViewBag属性会公开一个动态对象,开发者可以在运行期于该对象之上添加属性。一般而言,它用于从控制器向视图发送非模式数据。Scott Guthrie提供的示例包含了状态文本(比如说当前时间)以及用于组装列表框的条目。

请感兴趣的读者参加下面的InfoQ小调查。

查看英文原文:ASP.NET MVC 3 Embraces Dynamic Typing

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

喜欢动态类型的话 by Jeffrey Zhao

在ASP.NET MVC 1里就能自己使用ViewPage<dynamic>了,没必要等微软的官方扩展啊。</dynamic>

Re: 喜欢动态类型的话 by 阿 不

"今年3月发布了ASP.NET MVC 2.0。3.0目前处于RC 2阶段,预计将于明年3月正式发布"
按照ScottGu的说法,1月份就会RTM

Re: 喜欢动态类型的话 by 阿 不

你需要自己重新编译MVC1源码,让它基本.NET4吧?

有了ViewBag是不是就不需要自定义ViewModel了? by 姚 琪琳

如题

Re: 喜欢动态类型的话 by 阿 不

"今年3月发布了ASP.NET MVC 2.0。3.0目前处于RC 2阶段,预计将于明年3月正式发布"
按照ScottGu的说法,1月份就会RTM

原文看错了,这个回复有问题,但是删除不了 :(

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT