QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

ASP.NET MVC 3 拥抱动态类型

  • 2010-12-13
  • 本文字数:1019 字

    阅读完需:约 3 分钟

大约十年前,微软将全部赌注压在了 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

2010-12-13 21:552703
用户头像

发布了 88 篇内容, 共 264.3 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

从大模型到内容生成,初窥门径的AI新次元

阿里云CloudImagine

云计算 视频云 AIGC

最新demo版|如何0-1开发支付宝小程序之如何调试小程序(二)

盐焗代码虾

支付宝小程序 小程序调试 如何调试

软件测试/人工智能丨引领未来:软件测试中的人工智能

测试人

人工智能 软件测试

开源流程设计器的对比与选型

小狗围观科幻

item_search_pro-高级关键字搜索淘宝商品api接口

技术冰糖葫芦

API 文档

bitget钱包VS imtoken 钱包大比拼,全方面对比

大瞿科技

体育赛事平台开发:赛事数据分析驱动体育平台创新

软件开发-梦幻运营部

原来 TinyVue 组件库跨框架(Vue2、Vue3、React、Solid)是这样实现的?

OpenTiny社区

开源 Vue 前端 React SOLID

国内外传输大文件有哪些好用又便宜的文件传输工具?

镭速

传输大文件 文件传输工具 国内外传输大文件

使用 LCM LoRA 4 步完成 SDXL 推理

快乐非自愿限量之名

逻辑思维 流程模型

青椒云云桌面系统_企业上云桌面云服务解决方案

青椒云云电脑

云桌面 云桌面解决方案 云桌面系统

软件测试/人工智能丨人工智能会取代软件测试工程师吗

测试人

人工智能 软件测试

Util应用框架基础(七)- 缓存

何镇汐

开源 后端 .net core

影视行业如何远程完整快速传输大文件?

镭速

传输大文件

Util应用框架基础(七)- API

何镇汐

开源 后端 .net core

2G内存搞定一亿数据的分析引擎

Western Panda

数据库 大数据 开源 数据分析 OLAP

这6个复盘模型,你知道几个?让你轻松搞定年终总结

彭宏豪95

个人成长 复盘 年终总结 在线白板 项目复盘

Util应用框架基础(七)- 二级缓存

何镇汐

开源 后端 .net core

杜绝硬编码,为系统安全保驾护航

尚思卓越

网络安全 硬编码 内嵌账号

技术分享| anyRTC之RTN网络

anyRTC开发者

音视频 网络 RTC RTN

JNPF开发平台凭什么火?

互联网工科生

低代码 JNPF

云桌面架构的全面剖析

青椒云云电脑

云桌面 云桌面解决方案 云桌面系统

RTC技术沦陷后,人类或将一夜回到解放前?

X2Rtc

RTC 未来世界 科技趋势

如何理解低代码开发工具?

树上有只程序猿

低代码 应用开发 JNPF

mac电脑音乐创作软件Ableton Live Suite 11中文破解版下载

iMac小白

Util应用框架基础(七)- 本地缓存

何镇汐

开源 后端 .net core

Java多线程消费消息

不在线第一只蜗牛

Java 多线程 RocketM

文心一言 VS 讯飞星火 VS chatgpt (140)-- 算法导论11.4 5题

福大大架构师每日一题

福大大架构师每日一题

Util应用框架基础(七)- Redis 缓存

何镇汐

开源 后端 .net core

Util应用框架开发环境搭建(十)- 安装 Redis

何镇汐

开源 后端 .net core

Vue公共loading升级版(处理并发异步差时响应)

快乐非自愿限量之名

Vue 前端 处理机制

ASP.NET MVC 3拥抱动态类型_.NET_Jonathan Allen_InfoQ精选文章