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

jopen 9年前
   随着    <a href="/misc/goto?guid=4958335044500131782" target="_blank">.NET 4.5 发布日期</a>的日益临近,微软已经开始慢慢揭开    <a href="/misc/goto?guid=4958346516359700805" target="_blank">下一代开发平台</a>的神秘面纱。关于 Metro 和    <a href="/misc/goto?guid=4958346517162279002" target="_blank">Windows 8</a>已经    <a href="/misc/goto?guid=4958346517958442038" target="_blank">有了很多宣传</a>,而对 .NET 核心特性所作出的改进会在短期内抢了它的风头,传统上那会专注于 web、服务和数据开发。    <p>        <a href="/misc/goto?guid=4958346518758684725" target="_blank">ASP.NET Web Forms</a> 在 .NET framework 的前几次发布中保持相对稳定,很多开发者市场份额分享给了 <a href="/misc/goto?guid=4958346519548936152" target="_blank">ASP.NET MVC</a>。在 .NET 4.5 中,微软做了大量工作,在 ASP.NET Web Forms 中提供了对模型绑定的支持,从而<a href="/misc/goto?guid=4958346520348632576" target="_blank">减少这两种 web 开发产品之间的生产力差别</a>。这种绑定让开发者可以在代码中跳过服务调用和绑定,直接给控件赋值。</p>    <p style="text-align:center;"><a><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/d116e24fa308c28a15bf99c4df24c28f.jpg" width="491" height="227" /></a></p>    <p>        尽管这种方法确实节省了时间,但是它并没有把页面的渲染和业务逻辑完全分离开: 载入网格的服务方法名称会嵌入在控件中。</p>    <p>        除了 ASP.NET 栈中的模型绑定和其他改善——像提升了的对 HTML 5 的支持、降低了的内存消耗、易于编写异步代码的能力——之外,ASP.NET 相关技术还在 Visual Studio 编辑器中享受更丰富的开发体验。在更引人注目的改善之中,其中之一就是<a href="/misc/goto?guid=4958346521150135299">智能任务(Smart Tasks)</a>。在标签中使用 Ctrl + .(点), 开发者可以使用智能任务来加快开发的速度,而不需要知道关于如何配置给定控件的细节。</p>    <p style="text-align:center;"><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/a75c2590b06b94c8ae4d1274f12476cb.jpg" width="385" height="155" /></p>    <p>        其他 Visual Studio 的改进包括: 对于 JavaScript 和 CSS 更智能的支持,还有更精细的调试机制,像页面检查工具(Page Inspector tool)。</p>    <p>        由于引入了 ASP.NET MVC,它已经能够<a href="/misc/goto?guid=4958346521941487340" target="_blank">以某种形式来提供</a>RESTful 的 web 服务,而在 ASP.NET MVC 的最新版本中,微软引入了一些 Web API,让这个概念标准化。Web API 的关键特性就是,通过支持 RESTful 的方法来暴露 IQueryable,从而减少开发时间。这种特性能够帮助开发者创建专门的客户端查询,而不需要创建通常需要用来产生有用服务的大量代码。和其他 .NET 4.5 的改善一样,这项特性所修改的代码范围被降到了最小。</p>    <p>        对于以下标准的 API 控制器:</p>    <p style="text-align:center;"><a><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/b4d92cae9396328d4c715ada9b2ff5d2.jpg" width="496" height="205" /></a></p>    <p>        基于 GetProducts ()的 REST 查询,它会返回所有产品:</p>    <p>        <a href="/misc/goto?guid=4958346522744833075" target="_blank"><em>http://localhost:8334/api/product</em></a></p>    <p>        对于以下可查询 API:</p>    <p style="text-align:center;"><a><img style="width:531px;height:224px;" alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/3e37387ae36c32ec769835756656006a.jpg" /></a></p>    <p>        基于 GetProductsByQuery ()的 REST 查询,它会返回所有成本小于 4 的产品:</p>    <p>        <a href="/misc/goto?guid=4958346523539271393" target="_blank"><em>http://localhost:8334/api/product?$filter=(cost lt 4)</em></a></p>    <p>        过滤器会在运行时应用给第二个查询,从而形成结果。这让一个方法可以为多个特性服务,而且减少了方法的关注点。对于特定的特性,任何特殊的情况或者副作用都可能需要它自己的实现。</p>    <p>        最后,为了管理你需要通过 Web API 暴露的数据,微软提供了 Entity Framework 5。尽管 Entity Framework 的各种模型已经存在一段时间了(像代码先行、数据库先行和实体先行),Entity Framework 5 引入了一种概念,能够在开发工作的周期内,自动同步模型和数据库。这会节省很多花费在创建 SQL 变更脚本和管理已经持久化的数据的工作。尽管在包管理控制台(Package Manager Console)中协调迁移的环节很可靠,但是还是值得学习一下相关的语法。</p>    <p>        在代码先行(Code First)的应用程序中,运行这条命令:</p>    <p style="text-align:center;"><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/7b493aa115afc20f84f74139275db266.jpg" width="408" height="48" /></p>    <p>        如果“InitialCreate”文件没有添加到你的迁移目录中,那么就运行这条命令:</p>    <p style="text-align:center;"><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/28dbe81fb57031e1f0571426bc62d262.jpg" width="275" height="81" /></p>    <p>        对于给定的模型:</p>    <p style="text-align:center;"><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/fdac36847b9a31e3b067fffb8367652f.jpg" width="309" height="87" /><br />  </p>    <p>        如果我们增加属性“HasLid”:</p>    <p style="text-align:center;"><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/f7cc9713f15c6aa9139c0b0242aa9950.jpg" width="287" height="110" /></p>    <p>        我们可以运行另一条命令,使用我们对模型的改变来更新数据库。</p>    <p style="text-align:center;"><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/4f66627fb4c93bb934ed221dd57ca1bc.jpg" width="241" height="75" /></p>    <p>        如果你想要回滚所做的变更,只需要运行 add-migration 命令,并确定你想要让数据库反映的目标:</p>    <p style="text-align:center;"><a><img alt=".NET 4.5提升了Web开发的生产率" src="https://simg.open-open.com/show/21d07f0fb0651a777b0a50567d584de9.jpg" width="500" height="68" /></a></p>    <p>        尽管这些变更已经被大家广为接受,认为它能够改善 .NET 开发者的生产力,但是4.5版本中引入的大量变更还是存在一些问题。Greg Duncan<a href="/misc/goto?guid=4958346524337838501" target="_blank">简要地说明了微软在 .NET framework 中的速度问题</a>: “我猜你可能会说微软(或者参与的团队)是敏捷的,并试图在每次迭代中做出改善,从过去的经验学习……? (咳咳……所以我希望至少……咳咳)。”</p>    <p>        <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958346525130202029">.NET 4.5 Raises the Bar for Web Development Productivity</a></p>