阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

.NET 4.5 提升了 Web 开发的生产率

  • 2012-07-01
  • 本文字数:1506 字

    阅读完需:约 5 分钟

随着.NET 4.5 发布日期的日益临近,微软已经开始慢慢揭开下一代开发平台的神秘面纱。关于Metro 和 Windows 8 已经有了很多宣传,而对.NET 核心特性所作出的改进会在短期内抢了它的风头,传统上那会专注于web、服务和数据开发。

ASP.NET Web Forms 在.NET framework 的前几次发布中保持相对稳定,很多开发者市场份额分享给了 ASP.NET MVC 。在.NET 4.5 中,微软做了大量工作,在 ASP.NET Web Forms 中提供了对模型绑定的支持,从而减少这两种web 开发产品之间的生产力差别。这种绑定让开发者可以在代码中跳过服务调用和绑定,直接给控件赋值。

尽管这种方法确实节省了时间,但是它并没有把页面的渲染和业务逻辑完全分离开: 载入网格的服务方法名称会嵌入在控件中。

除了ASP.NET 栈中的模型绑定和其他改善——像提升了的对HTML 5 的支持、降低了的内存消耗、易于编写异步代码的能力——之外,ASP.NET 相关技术还在Visual Studio 编辑器中享受更丰富的开发体验。在更引人注目的改善之中,其中之一就是智能任务(Smart Tasks)。在标签中使用Ctrl + .(点), 开发者可以使用智能任务来加快开发的速度,而不需要知道关于如何配置给定控件的细节。

其他Visual Studio 的改进包括: 对于JavaScript 和CSS 更智能的支持,还有更精细的调试机制,像页面检查工具(Page Inspector tool)。

由于引入了ASP.NET MVC,它已经能够以某种形式来提供 RESTful 的 web 服务,而在 ASP.NET MVC 的最新版本中,微软引入了一些 Web API,让这个概念标准化。Web API 的关键特性就是,通过支持 RESTful 的方法来暴露 IQueryable,从而减少开发时间。这种特性能够帮助开发者创建专门的客户端查询,而不需要创建通常需要用来产生有用服务的大量代码。和其他.NET 4.5 的改善一样,这项特性所修改的代码范围被降到了最小。

对于以下标准的 API 控制器:

基于GetProducts() 的REST 查询,它会返回所有产品:

http://localhost:8334/api/product

对于以下可查询 API:

基于GetProductsByQuery() 的REST 查询,它会返回所有成本小于4 的产品:

http://localhost:8334/api/product?$filter=(cost lt 4)

过滤器会在运行时应用给第二个查询,从而形成结果。这让一个方法可以为多个特性服务,而且减少了方法的关注点。对于特定的特性,任何特殊的情况或者副作用都可能需要它自己的实现。

最后,为了管理你需要通过 Web API 暴露的数据,微软提供了 Entity Framework 5。尽管 Entity Framework 的各种模型已经存在一段时间了(像代码先行、数据库先行和实体先行),Entity Framework 5 引入了一种概念,能够在开发工作的周期内,自动同步模型和数据库。这会节省很多花费在创建 SQL 变更脚本和管理已经持久化的数据的工作。尽管在包管理控制台(Package Manager Console)中协调迁移的环节很可靠,但是还是值得学习一下相关的语法。

在代码先行(Code First)的应用程序中,运行这条命令:

如果“InitialCreate”文件没有添加到你的迁移目录中,那么就运行这条命令:

对于给定的模型:

如果我们增加属性“HasLid”:

我们可以运行另一条命令,使用我们对模型的改变来更新数据库。

如果你想要回滚所做的变更,只需要运行 add-migration 命令,并确定你想要让数据库反映的目标:

尽管这些变更已经被大家广为接受,认为它能够改善.NET 开发者的生产力,但是 4.5 版本中引入的大量变更还是存在一些问题。Greg Duncan简要地说明了微软在.NET framework 中的速度问题: “我猜你可能会说微软(或者参与的团队)是敏捷的,并试图在每次迭代中做出改善,从过去的经验学习……? (咳咳……所以我希望至少……咳咳)。”

查看英文原文:.NET 4.5 Raises the Bar for Web Development Productivity

2012-07-01 02:122623
用户头像

发布了 340 篇内容, 共 126.0 次阅读, 收获喜欢 13 次。

关注

评论

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

WeLink协作文档:办公协作再快一档

科技怪咖

面试突击84:Spring 有几种事务隔离级别?

王磊

Java 面试

主流开源消息队列对比与分析

穿过生命散发芬芳

消息中间件 9月月更

SaaS 的多版本销售该如何设计

产品海豚湾

产品经理 产品设计 SaaS B端产品 9月月更

[SpringMVC]拦截器②(拦截器参数、拦截器链配置)

十八岁讨厌编程

springmvc 后端开发 9月月更

uni-app黑马优购项目学习记录(一)

海底烧烤店ai

小程序 uni-app JavaScrip 9月月更

Elasticsearch聚合的嵌套桶如何排序

程序员欣宸

9月月更

数学家的这些迷惑行为,最后都成了神操作

图灵社区

数学 数学教育 数学家

爆火小游戏《羊了个羊》,我偏不玩

图灵社区

游戏开发 游戏设计 游戏史

Flutter - Google 开源的移动 UI 框架

陈橘又青

9月月更

gopher成长之路(五): 2年前和2年后同一个项目

非晓为骁

个人成长

架构之美第一篇-概述

Marvin Ma

架构 企业架构 架构模式 架构三要素 架构发展历史

Qt|实现简单的分割窗口

中国好公民st

qt 分割 9月月更

上海理工大学 x WeLink智慧迎新,2022届新生体验闪电式入学

科技怪咖

精通高并发与内核 | 解析Linux内核并发并行

小明Java问道之路

并发编程 并发 并行 Linux内核 9月月更

jQuery之实战

楠羽

笔记 JQuery框架 9月月更

[Maven进阶]分模块开发与设计

十八岁讨厌编程

maven 后端开发 9月月更

计算机网络——编码与调制

StackOverflow

编程 计算机网络 9月月更

一次线上事故,我顿悟了异步的精髓

勇哥java实战分享

Redis的事件

急需上岸的小谢

9月月更

架构师的十八般武艺:架构目标

agnostic

架构目标

利用flexible.js和VSCode插件cssrem进行可伸缩布局方案

海底烧烤店ai

前端 JavaScrip 响应式网页 9月月更

[SpringMVC]拦截器①(概述、入门案例)

十八岁讨厌编程

springmvc 后端开发 9月月更

力扣93 - 复原IP地址【回溯算法】

Fire_Shield

LeetCode 字符串 9月月更

带你玩转NProgress进度条

海底烧烤店ai

前端 JavaScrip 9月月更

数学家的这些迷惑行为,最后都成了神操作

图灵教育

数学 数学教育 数学家

架构师的十八般武艺:架构方法论

agnostic

TOGAF Zachman

爆火小游戏《羊了个羊》,我偏不玩

图灵教育

游戏开发 游戏设计 游戏史

redis对应的数据类型及其底层原理

知识浅谈

redis 底层原理 9月月更

C++学习---cstdio的源码学习分析03-文件重命名函数rename

桑榆

c++ 源码阅读 9月月更

4 张图了解 CI/CD 基础~

掘金安东尼

前端 9月月更

.NET 4.5提升了Web开发的生产率_语言 & 开发_Harry Brumleve_InfoQ精选文章