NET 2015
.NET 2015
Understanding 翻译为了解或理解,对于 .NET 来说,2015 年注定会更加精彩,所以标题就用了“精彩”这个词,翻译这篇文章有两个原因:学英语、以及跟随作者回顾一下去年的 .NET。
在去年 BUILD 大会之后,我写了一篇文章 Exciting Times for .NET,并且从那以后,我在 .NET 团队中工作充满了乐趣,其中包括 runtime、framework、languages 和编译器。虽然在过去一年中,我的工作重点在内部社区,例如为我们的同事安排内部会议,我也花费了一些时间帮助 .NET Foundation 落成,也学习了一下关于开源社区和 .NET Foundation 项目 的一些内容。哦,对了,我也结婚了,:-) 这对于我是个过渡期,从社区的“布道者”越来越多的变成了“协调者”或“连接者”,我真的非常喜欢 Alex Hillman’s term: Tummler。
现在,我们正在接近下一个 BUILD 的到来,我对我们已经取得的进展感到非常兴奋,特别是围绕 .NET 平台自身,和团队的方式去开源,还有更多复杂的东西将会产生,所以,我想写一个更高层次的“事件贴”,来帮助大家理解一些主要部分,并晓得怎样去参与项目,换句话说,这是学习 .NET 2015 一个好的开始,至少,这是我的希望!
.NET 2015 – 10,000 foot view(一万英尺鸟瞰图)
下面是“.NET 2015”主要的组成部分:
需要注意的是,.NET Core 的三个关键组件:
- .NET 变化 – 保持平台不断向前和创新,我们正在使每一层现代化,包含:语言、编译器、基础类库、应用程序模型、运行时和工具。
- 开源 – 我们的工作过程一直保持公开,并不断得到开发帮助,使之培育一个充满活力的 .NET 社区。
- 跨平台 – 因为我们的客户越来越希望得到跨平台支持,所以我们跨平台了。
.NET 2015 的主要组成
Frameworks and Runtimes
.NET Framework 是一个管理执行环境,为运行的应用程序提供各种服务。它包括两个主要组件:公共语言运行时(CLR),它是用于处理正在运行应用程序的执行引擎;另一个组件是 .NET Framework 类库,它提供了测试,可重用的代码,开发人员可以从自己的应用程序中进行调用。
.NET Framework 4.6 建立在 4.5.2 版本之上,其中包含新的 API,改进的事件跟踪,以及修复一些 bug。这就是我们今天所知道完整 .NET Framework 的下一个版本。.NET Framework 4.6 将包含在 Windows 10 中,也将在 Windows OSes (Vista and above) 以上版本,进行推出并更新,参见:.NET Framework 2015 Preview。
.NET Core 5 是一个通用的模块化框架,可以跨各种应用程序模式和平台进行使用,并且它是开源的,可以模块化和组件化部署,并且支持微软 Windows,Linux 和 Mac OSX。这是重构的一套基础类库(corefx)和运行时(coreclr),其中包括一个新的 JIT 编译器(“RyuJIT”)、.NET 垃圾机制、本地互操作和其他一些 .NET 运行时组件。如今,.NET Core 构建并运行在 Windows 上。在未来数个月,我们正在增加 Linux 和 Mac 特定平台下的组件,参见:Introducing .NET Core 和 CoreCLR is now Open Source。
如果你从这篇文章只点击一个链接,那当然是 Introducing .NET Core,IMMO 非常详细的解释了我们为什么需要它,以及它如何使用。
Compilers-编译器
.NET Compiler Platform ("Roslyn") 提供了开源 C# 和 Visual Basic 编译器,以及丰富的代码分析 API,它和 Visual Studio 构建代码分析工具被使用的API,是相同的。Roslyn 产生独立于平台的中间语言(IL),并针对 .NET 2015,包括 Framework 和 Core 构建时使用。在发布时,整个 .NET Framework 将通过 Roslyn 进行编译。还有关键的语言变化 VB 和 C#,参见:Roslyn on GitHub ,也有 F# 语言和编译器的变化,参见:F# on GitHub。
“RyuJIT” 是新的默认即时(JIT)编译器,JIT 编译器将 IL 编译为特定的机器语言,在第一次在运行时执行。用于桌面和基于服务器的情况下,RyuJIT 是先前 64 位 JIT 编译器的修复版本,显著减少了启动时间,它还包括支持 SIMD(单指令,多数据),在平行方式下,它允许数学运算来执行一组值,这可以提供一个加速,对某些依赖于向量运算的应用程序类型,参见:The next-generation JIT compiler for .NET。
.NET Native 可以像 C++ 一样,将 C# 直接编译为本地机器码执行,因此开发人员继续从 .NET Framework 性能和效率中受益。通常情况下,.NET 应用程序被编译成中间语言(IL),在运行时,即时(JIT)编译器会将 IL 再编译成本地代码。相比之下,.NET Native 是一个 ahead-of-time 编译器,直接将应用程序编译成本地代码,并包含一个小的 CLR 运行时。当编译使用 .NET Native 方式,流行的 Windows Store 应用程序启动速度将提高至多 60%,并减少 15-20% 的内存使用,通用的 Windows 应用程序将运行在 .NET Native (ARM, x86, x64) 上,参见:Compiling Apps with .NET Native。
App Models-应用程序模型
应用程序模型扩展了 .NET Framework 4.6 基础类库和 .NET Core 5,Windows Forms、WPF、ASP.NET Web Forms、MVC 5 等,你今天所熟悉的应用程序模型是 .NET Framework 4.6 的一部分,配备了许多新的功能,以及语言新的变化、Roslyn 编译器和 RyuJIT。有很多发生在 .NET 4.6 中,参见:ASP.NET Overview – What about Web Forms? 、The Roadmap for WPF 和 .NET Framework 2015 Preview。
此外,还有一些新的应用程序模型运行在 .NET Core 5 的优化设计。
ASP.NET 5 是一个精简的应用程序模型,用于构建现代 Web 应用程序。它被构建从本地到优化开发框架的应用程序,它由最小开销的模块化组件组成,让你保持灵活性,同时构建你的解决方案。ASP.NET 5 可以在.NET Framework 4.6 或.NET Core 5 上运行,今天,ASP.NET 5 在 Linux 和 Mac 上运行,使用的是 Mono runtime,一旦 .NET Core 支持 Linux 和 Mac,那么 ASP.NET 5 将为这些平台,转移使用 .NET Core,参见:Introducing ASP.NET 5。
通用的 Windows 应用程序是一个应用程序模型,可以让你在 Windows Phone 和 Windows 应用程序(8.1+)之间分享源代码,并部署到 Windows 应用商店。通用的 Windows 应用程序将运行在 .NET Native 上,编译 IL 为本地机器码,并包含一个最小的 CLR 运行时,参见:Building universal Windows apps for all Windows devices 和 Getting Started with .NET Native。
.NET Core 又是什么?
.NET Core 5 是通用的模块化框架,可以广泛在多种应用程序模型和平台中使用,因为它是基础类库(corefx)和运行时(coreclr)的重构。对于不同的应用程序模型,这些 .NET Core 基础类库(BCL)的 API 是相同的,这些 API 不只是看起来是一样的-它们共享相同的实现,大多数的 API 或程序集更加模块化,并且平台独立。
App-local (or side-by-side) 的部署也是 .NET Core 的一个关键特征,你可以为你的应用程序部署,选择你需要的程序包,模块化的程序包使用 NuGet,这意味着你的应用程序可以单独运行,并且不会受到完整 .NET Framework 版本的影响,你的应用程序可以 x-copy 部署,并且完全不用担心。
.NET Core 支持 Windows、Linux 和 Mac OS X,今天,.NET Core 构建并只能在 Windows 上运行,但我们正在加入 Linux 和 Mac 特定平台下的组件实现,这一切都开源,这是非常重要的,对于在 .NET 跨平台的基础上,建立一个强大的生态系统。
从代码到运行应用程序-.NET Core 开发
当我们学习技术知道它们是如果进行工作的方式,我认为这是非常有帮助的,这是我开发应用程序和 .NET Core 的简单看法,从代码/构建/调试周期到应用程序的部署和执行,部署和执行使不同的,取决于你的应用程序模型。
你写的代码是非常模块化,来引用你所需要的 BCL 和应用程序模型组成部分,Roslyn 编译器将你的代码,生成独立于平台的中间语言(IL),除了编译器的管道,有一组丰富的 API,你可以用做各种分析你的代码,如果你正在使用 Visual Studio,这是 IDE 的一个新特性,利用这些 API 给你一个更高效的编码体验。
如果你正在构建一个通用的 Windows 应用程序,.NET Native 工具链将从那里拿过来,你的应用程序引用被构建成一个本地部署本机映像和一个小的运行时,如果你正在构建一个 ASP.NET 5 应用程序,引用和 CoreCLR 与你的应用程序部署在本地服务器,使用 RyuJIT,JIT 编译在启动时发生。
此外,ASP.NET 5 可以让你改变你的代码,保存更改,并刷新浏览器(在没有明确重新构建项目的时候),Visual Studio 中使用 Roslyn 启用动态编译,你还有所有编译框架的结构和权力,但开发体验感觉更像是一种解释型语言。
注意:如果你正在关注的是完整 .NET Framework 4.6,那么你仍然可以享受在语言和 Roslyn 编译器新的变化中,应用程序的部署从它出现的时候就没有发生变化,它仍然依赖于具有安装在机器上的完整框架,但 JIT 编译变成了优化的 JIT 编译,那就是 RyuJIT。
What is open, 现在吗?
很多 .NET 2015 项目都是开源的,并且在 .NET Foundation 的管理下,我们和社区正在积极努力的工作,使这些项目尽早开源。
你可以在 .NET Foundation 看到所有项目的版本库和活动记录,GitHub:http://dotnet.github.io/ 。
这里有几个不错的项目开始,签出非常详细的说明和提交规范。
- ASP.NET 5: https://github.com/aspnet/Home
- .NET Core CLR: https://github.com/dotnet/coreclr
- .NET Core Framework: https://github.com/dotnet/corefx
- Roslyn: https://github.com/dotnet/roslyn
另外,值得一提的是完整 .NET Framework 是“开源”,也就是说,我们不是没有完全提交 ,它不是一个 OSI 批准协议的完整版本,但你可以在这里查看到所有的源代码:http://referencesource.microsoft.com/ 。
项目正在开放中
对于微软来说,OSS 不是新的,但它是一个新的 .NET 运行时和类库,这是一个相当大的想法,一个 15 年的老项目,这么多的人都在内部工作,长期并不仅仅只是移动代码,但所有的工程流程都是开放,这需要时间,这就是为什么团队从一个小的基础类库开始,并已经发布越来越多,并在这个过程中学习,这些经验和最佳实践已经影响了整个团队,We’ve been humbled by the overwhelming support and contributions so far.
你可能会想到自己:“在白天,我没有足够的时间来构建自己的应用程序,更不用说搞清楚,如何编写代码的 CLR!”很公平,我和你在一起!你可以选择你希望参与的方式,你不用写代码就是一个贡献者,File an issue, comment on a proposal, answer a question,或者只是查看活动。
你可能会想:“我不希望失去的简单,也不是我习惯的质量和支持!”,别担心!我们像以前一样仍致力于质量和服务的水平。简单地说,我们所做的就是使我们的项目开放,我们此前曾在内部完成构建软件,它现在只是开放罢了。
我真为我们的团队文化和 .NET 的未来感到兴奋。
享受吧!
[更新 2015年2月26日]-我应该还提到,dotNetConf 2015 快到了,你可以学到很多,这是一个免费的虚拟活动和演讲,来自社区和产品团队,3月18日、19日准时直播。
翻译一篇英文文章的时间,可以写好几篇文章了,花了时间,翻译出来却像“翔”一样,惨不忍看,建议大家读原文。
但话说过来,这个翻译过程,对我来说,真的很有收获,这就足够了。
NET 2015的更多相关文章
- 2015 西雅图微软总部MVP峰会记录
2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...
- 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus
最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...
- TFS 2015 敏捷开发实践 – 在Kanban上运行一个Sprint
前言:在 上一篇 TFS2015敏捷开发实践 中,我们给大家介绍了TFS2015中看板的基本使用和功能,这一篇中我们来看一个具体的场景,如何使用看板来运行一个sprint.Sprint是Scrum对迭 ...
- TFS 2015 敏捷开发实践 – 看板的使用
看板在现代应用开发过程中使用非常广泛,不管是使用传统的瀑布式开发还是敏捷开发,都可以使用看板管理.因为看板拥有简单的管理方法,直观的显示方式,所以很多软件开发团队选择使用看板进行软件开发管理.本文不在 ...
- Microsoft Visual Studio 2015 下载、注册、安装过程、功能列表、问题解决
PS:请看看回复.可能会有文章里没有提到的问题.也许会对你有帮助哦~ 先上一张最终的截图吧: VS2015正式版出了,虽然没有Ultimate旗舰版,不过也是好激动的说.哈哈.可能有的小伙伴,由于工作 ...
- 一年之计在于春,2015开篇:PDF.NET SOD Ver 5.1完全开源
前言: 自从我2014年下半年到现在的某电商公司工作后,工作太忙,一直没有写过一篇博客,甚至连14年股票市场的牛市都错过了,现在马上要过年了,而今天又是立春节气,如果再不动手,那么明年这个无春的年,也 ...
- .NET开源进行时:消除误解、努力前行(本文首发于《程序员》2015第10A期的原始版本)
2014年11月12日,ASP.NET之父.微软云计算与企业级产品工程部执行副总裁Scott Guthrie,在Connect全球开发者在线会议上宣布,微软将开源全部.NET核心运行时,并将.NET ...
- 2015微软MVP全球峰会见闻
2015.10.31-2015.11.8 一周的时间完成微软MVP全球峰会旅程,这一周在不断的倒时差,行程安排非常的紧张,还好和大家请假了没有更新微信公众号,今天开始继续更新微信公众号,开始新的旅程, ...
- Windows 7 上安装Visual Studio 2015 失败解决方案
安装之前先要看看自己的系统支不支持,具体的可以看:https://www.visualstudio.com/en-us/visual-studio-2015-system-requirements-v ...
- Visual Studio 2015正式发布
Windows 10 RTM正式版要7月29日发布,微软的另一个重磅软件Visual Studio 2015已经率先发布,今天如期放出了正式版本.Visual Studio 2015包括许多新功能和更 ...
随机推荐
- c++学籍管理系统v1.10
//////////////新增添加学生和成绩录入系统 #include<iostream> #include <string> #include<conio.h> ...
- toString()和String.valueof()比较
toString()和String.valueof()比较 做项目时常常会用到类型转换,比较常用的是toString(),但其实还是用String.valueof()比较好.看源码后他们的区别就更加 ...
- 解决无法切换到jenkins用户的问题
su - jenkins一直有效,今天在centos发现无效,原因是 /etc/password文件里的/bin/bash被yum安装的时候变成了/bin/false. 改动后就能够了. ubuntu ...
- 十天学会php第五天
学习目标:学会读取数据 先看两个函数: 1.mysql_query 送出一个 query 字符串. 语法 : int mysql_query(string query, int ...
- Java TCP/UDP网络通信编程
本文转自:http://www.cnblogs.com/cdtarena/archive/2013/04/10/3012282.html 网络应用中基本上都是TCP(Transmission Cont ...
- hdoj 2063 过山车 【双边匹配匈牙利算法】
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- Repository、IUnitOfWork
Repository.IUnitOfWork 在领域层和应用服务层之间的代码分布与实现 本来早就准备总结一下关于Repository.IUnitOfWork之间的联系以及在各层中的分布,直到看到田园里 ...
- 定制Attribute
目录 Attribute是什么 自定义Attribute 一.Attribute是什么 将一些附加信息与制定目标相关联的方式.编译器在元数据中生成这些额外的信息.也叫做特性. 比如之前文章中提到的:枚 ...
- 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包
之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...
- Linux在device is busy处理
在Linux管理umount设备时,时常会遇到"device is busy", 假设umount一个文件系统碰到这样的情况.而且你并没有在所需卸载的文件夹下.那么非常可能实用户或 ...