微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览。此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cloud-first)的新战略思想。Scott Hanselman发布博客对ASP.NET vNext进行了简要介绍。而且ASP.NET入驻Github 下一代ASP.NET将全部开源,写下本文记录下这个时刻。
微软在今年的Build大会上成立.NET开源基金会和以下这些产品的发布:
-
.NET Native - 提前编译.NET代码。一切都变得更快了。
-
.NET编译器平台(Roslyn) - 崭新的C#以及VB编译器,新的语言特性,编译即服务(compiler-as-a-service),以及,它是开源的。
-
Nextgen JIT - 为最新处理器优化的崭新的即时编译器(Just-in-time-compiler)
ASP.NET vNext的出现,将会把一切推上更高层次。今天,你用来运行ASP.NET的通用语言运行库(CLR)与桌面应用所使的是完全相同的。微软.NET团队正在做的事情是:增加针对云计算环境进行优化的CLR版本。优化时考虑的场景包括“低内存消耗”以及“高吞吐量”等等。
ASP.NET vNext 使得你能够为每一个应用部署定制化的.NET框架。一个使用新版本代码库(library)的应用不会和部署在同一服务器上使用该代码库的不同版本的应用打架。不同的应用甚至可以有不同优化侧重点的个性化的CLR。CLR以及针对云环境优化的代码库都成为了可自由选择和搭配的NuGet包。开发者可以为其应用部署单独的.NET框架,同一服务器上两个使用不同版本库的应用不会彼此影响,并且应用可以使用针对其云计算环境进行优化的CLR版本。开发以可以把应用依赖定制的CLR以及云优化的.NET框架构建为一个NuGet包。
ASP.NET vNext将packages.config、NuGet 配置(nuspec)以及项目文件(csprojs)合并到统一的项目依赖配置文件project.json中。在输入类库或者NuGet包时,开发者可以看到完整的智能提示,并且NuGet包会被自动下载到开发环境中。
Scott Hanselman博客上对 ASP.NET vNext的介绍告诉我们下一代的ASP.NET 是:
-
针对云环境和服务器环境进行了优化
-
ASP.NET MVC以及WebAPI被统一到了同一个编程模型(programming model)中
-
低延时的开发者体验
-
自带依赖注入(Dependency Injection out of box)
-
“并存”(side by side)——每个应用都有自己的运行时(runtime)以及框架随之部署
-
一切都来自NuGet——即使是运行时(runtime)也一样
-
完全通过.NET Foundation开源,并且接受外部开发者的贡献
-
ASP.NET vNext(还有Roslyn)可以在Mac和Linux上的Mono平台上运行。微软与Mono团队合作。将Mono加入到我们的测试矩阵(test matrix)里。将来我们在Mono上部署ASP.NET程序就和Windows上一样了,不会和现在一样有很多坑要注意。