微软在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. java 手动清理缓存的方法

    有时候会感觉代码如何也查不出问题,可是缓存就是清好几遍了 这个时候就试试手动清理缓存 到你的编译路径下面 E:\java-workspace\wem\work\org\apache\jsp 手动删除你 ...

  2. C# WebService 基础实例

    1.整个Demo结构:如下图: 2.新建项目--选择asp.net web服务应用程序TestWebService 3.重新命名Service1.asmx为MyService.asmx 4.右键MyS ...

  3. 【原】push过快的错误 (Pushing the same view controller instance more than once is not supported)

    今天在点击按钮push viewController 时,控制台报错: Terminating app due to uncaught exception 'NSInvalidArgumentExce ...

  4. 【转】C++之内部类(嵌套类)与外部类及友元

    [转]http://baike.baidu.com/link?url=Md223wQoT5s-3cZ5xRnj1pGmvm310DKAuh-HDrcEdc2l24rwobHrdEc_Mi4Z3BGP0 ...

  5. MPICH2在两台Ubuntu上安装

    本文在经过大量的实验终于不负众望成功的在两台Ubuntu 12.04上部署MPI的一个小型集群,MPICH2所用版本为mpich2-1.4.1,下载地址:http://www.mcs.anl.gov/ ...

  6. JVM内存管理及垃圾回收

    一.JVM内存的构 Java虚拟机会将内存分为几个不同的管理区,这些区域各自有各自的用途,根据不同的特点,承担不同的任务以及在垃圾回收时运用不同的算法.总体分为下面几个部分: 程序计数器(Progra ...

  7. Python md5 sha1 的使用

    版本: Python 2.7 说明: Python 内置的 hashlib 模块中有 md5 和 sha1 加密方法,可以直接使用. md5加密 import hashlib data = 'This ...

  8. 数据结构 --- 线性表学习(php模拟)

    线性表:零个或多个数据元素的有限序列(注:以下都是用的整型数据模拟) 一 顺序存储结构(用一段地址连续的存储单元一次存储线性表的数据元素) 1.1 三个属性:存储空间的起始位置:最大存储容量:当前长度 ...

  9. python:UnboundLocalError: local variable 'xxx' referenced before assignment

    近来一直都在学习python语言,偶然在伯乐在线看到2017年京东C/C++的面试题.就打算用python+ST3 IDE顺便敲下面试题代码. 原题 C语言: #include <stdio.h ...

  10. Day6 反射、模块、正则表达式和算法

    递归完成阶乘 def func(num): if num == 1: return 1 return num * func(num - 1) x = func(7) print(x) 反射 commo ...