【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

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

关注

评论

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

开源一夏 | 基于若依springboot架构实现数据多维统计

六月的雨在InfoQ

开源 8月月更

头脑风暴:完全背包

HelloWorld杰少

8月月更

Discourse 清理存储空间的方法

HoneyMoose

手写分布式配置中心(1)

分享干货的你

java; spring-boot SpringCould 签约计划第三季

经验分享|盘点企业进行知识管理时的困惑类型

Baklib

多个平台显示IP属地,必须大力推行互联网实名制

石头IT视角

那些年,在Linux指令上踩过的坑~

芒果酱

Linux 签约计划第三季

开源一夏 | 云服务器ECS安装Mysql、JDK、RocketMQ

六月的雨在InfoQ

开源 8月月更

C++对象的初始化和清理之构造函数和析构函数分析与实例(一)

CtrlX

c++ 面向对象 后端 代码 8月月更

SRv6网络的安全解决方案

穿过生命散发芬芳

8月月更 SRv6

Service Mesh落地路径

阿泽🧸

Service Mesh 8月月更

克服项目管理中恐惧心理

踏雪痕

项目管理 8月月更

正畸MIA微种植体支抗技术中国10周年交流会在沈举办

联营汇聚

知识分享|如何设计有效的帮助中心,不妨来看看以下几点

Baklib

【爬虫+可视化】Python爬取疫情并可视化处理数据(爬虫入门案例)

BROKEN

Python 8月月更

python绘制一个时间的七段数码管实例基本的七段数码管绘制

BROKEN

8月日更 8月月更

Nacos配置中心之客户端长轮询

急需上岸的小谢

8月月更

Axure9基本交互操作(一)

乔乔

8月月更

工业物联网 —— 新型数据库的召唤

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

【数据挖掘概论】数据挖掘的简单描述

晴天

8月月更

《MySQL入门很轻松》第2章:MySQL管理工具介绍

乌龟哥哥

8月月更

区块链或者智能合约开发的 5 种最佳编程语言

devpoint

区块链 以太坊 8月月更

视频目标检测

阿炜小菜鸡

8月月更 视频目标检测

七日算法先导(三)—— 快速排序,插入排序

工程师日月

8月月更

git操作

Jason199

git 8月月更

学生管理系统架构设计

张立奎

目标检测的发展与现状

阿炜小菜鸡

目标检测 8月月更

基于YOLOV5行人跌倒检测实验

阿炜小菜鸡

8月月更 行人检测

【python小游戏】用python写一款小游戏--贪吃蛇

BROKEN

8月日更 8月月更

Android条件控制宏编译

桑榆

8月月更

Go 语言快速入门指南:什么是 TLS 安全传输层协议

宇宙之一粟

安全 Go 语言 8月月更

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