写点什么

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:552832
用户头像

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

关注

评论

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

Java、Groovy项目升级JDK 21 ASM9报错

FunTester

得物大模型平台,业务效果提升实践

得物技术

算法 技术保障

数据库内核那些事|PolarDB HTAP Serverless:打造经济易用的实时分析系统

阿里云瑶池数据库

数据库 阿里云 Serverless 云原生

测试开发 | 人工智能在大规模数据分析中的崭新征程

测吧(北京)科技有限公司

测试

测试开发 | 人工智能与分布式计算:驱动智能时代的强力结合

测吧(北京)科技有限公司

测试

深入探索服装网商品详情API:实时数据获取、安全与隐私保护及商业价值实践

Noah

低代码平台:多引擎、多应用,灵活构建企业数字化生态

天津汇柏科技有限公司

低代码

测试开发 | 人工智能数据可视化:揭示数据之美、洞察智慧之源

测吧(北京)科技有限公司

测试

测试开发 | 人工智能特征工程:优化模型性能的艺术

测吧(北京)科技有限公司

测试

倒计时1天!WAVE SUMMIT+ 2023将开启,五大亮点抢鲜看!

飞桨PaddlePaddle

人工智能 深度学习 开发者 WAVE SUMMIT

WAVE SUMMIT+ 2023:AI开发者之夜,共赴科技最前沿的酷炫派对!

飞桨PaddlePaddle

人工智能 深度学习 开发者 WAVE SUMMIT

顺丰科技:打造智慧物流数据管理平台

新消费日报

中粮、中交、云投等众多央国企携手用友打造世界一流人才管理体系

用友BIP

人才管理

软件测试/测试开发丨Pytest测试框架-跳过用例或预期用例失败

测试人

软件测试 测试开发

测试开发 | 优化智能决策的前提——人工智能数据清洗与预处理

测吧(北京)科技有限公司

测试

淘宝评价指南:字数限制、评价类型与SEO优化

tbapi

淘宝API接口 天猫API接口 淘宝商品评论接口 淘宝商品评论 天猫商品评论

BRC-20铭文代币合约质押挖矿系统开发

l8l259l3365

一起学Elasticsearch系列-索引管理

Java随想录

Java 大数据 Elastic Search

鞍钢集团共和国钢铁工业长子的财务转型之路

用友BIP

财务数智化

堡垒机的类型分类

尚思卓越

运维 堡垒机

以数据指标穿透企业经营,优化业务流程,加速企业运转

用友BIP

人才管理

数栈UI5.0设计实战|B端表单这样设计,不仅美观还提效

袋鼠云数栈

数据中台 设计 表单 表单设计

IntelliJ IDEA 数据访问工具配置 Caché/M 数据库系统

HoneyMoose

湖南等保测评3家叫什么名字?分别在哪里?

行云管家

等级保护 等保测评 湖南

Java多线程系列9:读写锁

BigBang!

Java多线程

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