微软在2014年5月12日的TechEd大会上宣布将会公布下一代ASP.NET框架ASP.NET
vNext的预览。此次公布的ASP.NET框架与曾经相比发生了根本性的变化,凸显了微软“云优先”(cloud-first)的新战略思想。微软员工Scott Hanselman公布博客对ASP.NET vNext进行了简要介绍。下面为其博客的翻译。

原文:http://www.hanselman.com/blog/IntroducingASPNETVNext.aspx

译文公布地址:http://blog.csdn.net/cheng_tian/article/details/25708445

转载请注明出处。

近来微软的ASP.NET以及Web工具团队正在搞一些非常酷的玩意儿。在过去几年,我们疯狂“压榨”了微软的员工们,而如今,我们的疯狂蔓延到了.NET核心团队,以及其它很多其它领域。

今天我们公布了执行于server上的下一代.NET的预览(也就是alpha版本号)。

你或许曾在早些时候的Build大会上听到过下面这些产品的公布:

  • .NET Native - 提前编译.NET代码。一切都变得更快了。
  • .NET编译器平台(Roslyn) - 崭新的C#以及VB编译器,新的语言特性,编译即服务(compiler-as-a-service),以及,它是开源的。
  • Nextgen JIT - 为最新处理器优化的崭新的即时编译器(Just-in-time-compiler)

而ASP.NET vNext的出现,将会把一切推上更高层次。今天,你用来执行ASP.NET的通用语言执行库(CLR)与桌面应用所使的是全然同样的。可是我们正在做的事情是:添加针对云计算环境进行优化的CLR版本号。优化时考虑的场景包含“低内存消耗”以及“高吞吐量”等等。

ASP.NET vNext 使得你可以为每个应用部署定制化的.NET框架。一个使用新版本号代码库(library)的应用不会让部署在同一server上使用该代码库的不同版本号的应用悲剧。不同的应用甚至可以有不同优化側重点的个性化CLR。CLR以及针对云环境优化的代码库都成为了可自由选择和搭配的NuGet包

从以下这张截图你能够看到,418号版本号与420号版本号的新框架(注意它们占用了非常少的空间)都在我的包文件夹中。这些NuGet包包含了完整的“核心CLR”以及针对云环境优化的.NET框架。你能够把你的应用和其依赖的定制化CLR以及.NET框架一同部署成为一个NuGet包

我能够在VisualStudio里执行ASP.NET vNext应用,当然,还有IISserver上。另外我还能够很便捷地把ASP.NET
vNext应用托管在命令行里或者我自己的应用里(译者注:原文说法为“self-host”)。我们公布的这个alpha版本号包含了用来执行和管理ASP.NET vNext应用的命令行工具。

“kvm”命令让我可以控制我的执行环境(environment)。我可以执行“kvm list”来查看有哪些版本号的ASP.NET
vNext可供使用。我能够在不同版本号的ASP.NET vNext间自由切换,而且每一个执行环境都能够有自己的版本号配置。

C:\>kvm list

Active Version              Runtime Architecture Location

------ -------              ------- ------------ --------

0.1-alpha-build-0418 svr50   x86         C:\Users\scottha\.kre\packages

*   0.1-alpha-build-0418 svrc50 x86         C:\Users\scottha\.kre\packages

0.1-alpha-build-0420 svr50   x86         C:\Users\scottha\.kre\packages

0.1-alpha-build-0420 svrc50  x86         C:\Users\scottha\.kre\packages

我能够使用“kvm useversion”来设置当前使用版本号(active version)。这里我打开了两个命令行控制台进行设置,每一个控制台能够有自己独立的CLR和.NET版本号。

这里我让同一应用执行了两次,每一个命令行控制台各一次。我让420号版本号的应用监听5420号port,让418号版本号监听5418号port。

以下能够看到,这个小小的应用会显示当前在执行的ASP.NET vNext的版本号号。请注意,我这里是在同一时间、同一机器执行着使用不同版本号ASP.NET框架的同一应用

项目组织管理(projectsystem)也在起变化——我们将packages.config,NuGet配置(nuspec)以及项目文件(csprojs)合并成为统一的项目依赖配置,并将这个配置呈如今一个
project.json文件中。

NuGet包以及类库被觉得是没有差别的。你将会在project.json文件中得到完整的智能提示(见下图),而NuGet包会被自己主动地、透明地下载到环境中。另外还有更好的消息:让我们如果NuGet包Foo.Bar有一个bug,而你在本地项目里创建一个名为Foo.Bar的目录并在这个目录里使用“git
clone”将Foo.Bar的源码拷贝到本地,那么本地版本号的Foo.Bar就会覆盖(override)NuGet所控制的版本号,使得你能够使用自己修复的Foo.Bar,而非默默等待Foo.Bar的开发人员公布新版本号。当一个修复了bug的新版本号Foo.Bar出如今NuGetserver上时,你能够简单地更新版本号号并删除本地版本号以使用新版本号。

还有一个亮点是类似node.js或者ruby on rails的“无编译”(no compile)。你仅仅须要改动代码然后刷新去查看改动后效果。通过下一代ASP.NET,你能够同一时候得到.NET执行时(runtime)的吞吐能力以及“Roslyn”编译即服务所带来的“无编译”执行。这就意味着在开发中,你能够改动你的C#类,然后轻轻按下浏览器的刷新键来查看改动效果。这将是结合.NET开发优势与“刷新,然后走你”(refresh-and-go)动态特性的开发体验。

注意:这不是ASP.NET站点或者Razor视图(View)编译的方式——这里,全部的一切都在内存里编译并存储。你能够使用Visual
Studio或者Sublime来开发,甚至能够丧心病狂地使用记事本来开发。(当然,假设你想让编译生成的文件出如今硬盘上,你也能够做到。)

请看以下,看到我的Web应用的bin目录没?里面根本没有编译生成的文件,由于它们不会出如今你的硬盘上。在内存中完毕全部工作能够使编译器更高效、更easy地完毕任务。这样的方式使得你不须要读入源码,输出动态链接库(DLLs),然后再加载动态链接库。

假设你愿意,当你构建能够用于部署的Web项目时,你能够将它们构建成为NuGet包。你将你的项目公布后,全部该项目的依赖项都会自己主动随之被部署。

你能够将ASP.NET vNext部署到已有server上,或者不论什么托管平台上,当然,还有Azure云服务上。

你能够启用或者禁用针对云环境优化的框架来保证兼容性。下一个版本号的ASP.NET是模块化的,以给你最大限度的选择自由度。你能够自由选择框架、自由选择执行时(runtime)、自由选择操作系统、自由选择文本编辑器。

总结一下,ASP.NET vNext是:

  • 针对云环境和server环境进行了优化
  • ASP.NET MVC以及WebAPI被统一到了同一个编程模型(programming model)中
  • “无编译”(no-compile)开发体验
  • 自带依赖注入(Dependency Injection out of box)
  • “并存”(side by side)——每一个应用都有自己的执行时(runtime)以及框架随之部署
  • 一切都来自NuGet——即使是执行时(runtime)也一样
  • 全然通过.NET Foundation开源,而且接受外部开发人员的贡献

哦,对了

  • ASP.NET vNext(还有Roslyn)能够在Mac和Linux上的Mono平台上执行。尽管Mono不是微软自己的项目,我们仍会与Mono团队合作。另外Mono会被增加到我们的測试矩阵(test
    matrix)里。我们的目标是——“能用”(“just work”)。

后面几个月还会陆续有新的信息和细节放出。

微软下一代云环境Web开发框架ASP.NET vNext预览的更多相关文章

  1. 兼容Mono的下一代云环境Web开发框架ASP.NET vNext

    微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...

  2. ASP.NET vNext:微软下一代云环境Web开发框架

    作者 郭蕾 发布于 2014年5月16日   在5月12日的TechED大会上,微软首次向外界介绍了下一代ASP.NET框架——ASP.NET vNext.ASP.NET vNext专门针对云环境和服 ...

  3. 基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作

    在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这个Bootstrap框架的各个主要方面的内容,总体来说基本达到了一个稳定的状态,随着时间的推移可 ...

  4. (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作

    http://www.cnblogs.com/wuhuacong/p/5147368.html 在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这 ...

  5. 微软发布了ASP.NET WebHooks预览版

    微软 近期发布了ASP.NET WebHooks的预览版 ,这是一个可用于创建及使用Webhook功能的库.WebHooks支持MVC 5及WebApi 2. Webhook是一种通过HTTP实现用户 ...

  6. asp.net在线预览txt文件(简单实现)

    最近在做文件的在线预览,发现txt文件没有一个较好的方法去实现,想了想可能是比较简单就直接在后台输出了 txt文件

  7. Asp.Net在线预览Word文档的解决方案与思路

    前几天有个老项目找到我,有多老呢?比我工作年限都长,见到这个项目我还得叫一声前辈. 这个项目目前使用非常稳定,十多年了没怎么更新过,现在客户想加一个小功能:在线预览Word文档. 首先想到的是用第三方 ...

  8. 微软继MVC5后,出现ASP.NET VNEXT

    vNext又称MVC 6.0,不再须要依赖System.Web.占用的内存大大降低(从前不管是多么简单的一个请求.System.Web本身就要占用31KB内存). 能够self-host模式执行.站点 ...

  9. ASP.NET vNext 概述

    兼容Mono的下一代云环境Web开发框架ASP.NET vNext 我们知道了ASP.NET vNext是一个全新的框架,是一个与时俱进的框架.这篇文章将深入讨论在整体架构更多的细节,文档参照 ASP ...

随机推荐

  1. (转)PHP数组的总结(很全面啊)

    一.什么是数组数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体都包含两项:键和值. 二.声明数据在PHP中声明数组的方式主要有两种:一是应用array()函数声明数组 ...

  2. 关于android应用闪屏的几种情况

    1.主菜单进入某应用闪屏: 常见是一个空的activity作为launcher属性,实际上它什么事业没干,真正干事情的是从它通过intent启动的activity. 例子: public class ...

  3. SQL SERVER 2012疑难问题解决方法

    问题一: 问题描述 SQL SERVER 2012 尝试读取或写入受保护的内存.这通常指示其他内存已损坏. (System.Data) 解决办法 管理员身份运行 cmd ->  输入 netsh ...

  4. weka打开提示内存不足的解决方法

    今天在linux中打开Weka时,打开基因数据文件的时候出现如 Not enough memory . Please load a smaller dataset or use a larger he ...

  5. 二十分钟弄懂C++11 的 rvalue reference (C++ 性能剖析 (5))

    C++ 11加了许多新的功能.其中对C++性能和我们设计class的constructor或assignment可能产生重大影响的非rvalue reference莫属!我看了不少资料,能说清它的不多 ...

  6. aborb()程序结束形式

    abort()与exit()的区别?         分类:             MFC              2011-01-04 14:13     2233人阅读     评论(0)   ...

  7. Python正则表达式+自创口诀

    重新学习了Python正则表达式,看了一些很好的学习博客,向大家推荐这个. 感谢作者@AstralWind 博客地址:http://www.cnblogs.com/huxi/archive/2010/ ...

  8. 《JavaScript dom 编程艺术》 placeholder占位符IE8兼容办法。

    在<JavaScript dom 编程艺术>第11章学来的. 相对于用JavaScript替换文本框的提示语句 <!DOCTYPE html> <html lang=&q ...

  9. 001.为什么选择用AngularJs开发?

    网上关于AngularJs(https://angularjs.org/)的介绍与好处已经相当多了,大家可以自己去搜索看看,很多很多. 1.疯狂的原生的App开发 在这里我主要谈一下我自己为什么要使用 ...

  10. 更快的使用你的键盘:AUTOHOTKEY

    本文适合于:每天用电脑工作学习的朋友.游戏发烧手指又不灵敏的朋友.希望提高自己使用电脑效率的朋友. 本文将将告诉你AutoHotkey能做什么,并会一步一步地教会你轻易地使用它,但不会教你更多Auto ...