精彩 .NET 2015

简介:

在去年 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”主要的组成部分:

271557007055114.png

需要注意的是,.NET Core 的三个关键组件:

  1. .NET 变化 – 保持平台不断向前和创新,我们正在使每一层现代化,包含:语言、编译器、基础类库、应用程序模型、运行时和工具。
  2. 开源 – 我们的工作过程一直保持公开,并不断得到开发帮助,使之培育一个充满活力的 .NET 社区。
  3. 跨平台 – 因为我们的客户越来越希望得到跨平台支持,所以我们跨平台了。

.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 跨平台的基础上,建立一个强大的生态系统。

271837318612408.png

从代码到运行应用程序-.NET Core 开发

当我们学习技术知道它们是如果进行工作的方式,我认为这是非常有帮助的,这是我开发应用程序和 .NET Core 的简单看法,从代码/构建/调试周期到应用程序的部署和执行,部署和执行使不同的,取决于你的应用程序模型。

272137290961394.png

你写的代码是非常模块化,来引用你所需要的 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 的管理下,我们和社区正在积极努力的工作,使这些项目尽早开源。

272208481111409.png

你可以在 .NET Foundation 看到所有项目的版本库和活动记录,GitHub:http://dotnet.github.io/ 。

这里有几个不错的项目开始,签出非常详细的说明和提交规范。

另外,值得一提的是完整 .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 issuecomment on a proposalanswer a question,或者只是查看活动

你可能会想:“我不希望失去的简单,也不是我习惯的质量和支持!”,别担心!我们像以前一样仍致力于质量和服务的水平。简单地说,我们所做的就是使我们的项目开放,我们此前曾在内部完成构建软件,它现在只是开放罢了。

我真为我们的团队文化和 .NET 的未来感到兴奋。

享受吧!

[更新 2015年2月26日]-我应该还提到,dotNetConf 2015 快到了,你可以学到很多,这是一个免费的虚拟活动和演讲,来自社区和产品团队,3月18日、19日准时直播。


翻译一篇英文文章的时间,可以写好几篇文章了,花了时间,翻译出来却像“翔”一样,惨不忍看,建议大家读原文。

但话说过来,这个翻译过程,对我来说,真的很有收获,这就足够了。



本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/understanding-net-2015-translate.html,如需转载请自行联系原作者

相关文章
|
3月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
63 0
|
Cloud Native Linux API
.NET 发展历程
.NET 是开源、跨平台、社区活跃技术开发平台,中国信通院在 2022 | OSCAR 开源产业大会大会上发布的全球开源生态研究报告里首次提出开源社区成熟度度量模型,.NET 法律合规表现出色,组件许可证兼容性较高,法律风险较小。其生态基于 MIT 和 Apache 2.0 协议基础上构建,对商业友好。
433 1
.NET 发展历程
|
存储 安全
常用的.NET面试问题 - 2
  这里我们接着聊一聊有关.NET面试问题,本章我们将讨论有关.NET类型的问题,并以一种简单的方式给出答案。   问题1:值和引用类型是什么?另外,用实例解释一下装箱和拆箱?   答:   值类型是直接存储数据的类型,值类型存储在堆栈中。大多数基本类型,如int、float和char都是值类型的例子。另一方面,引用类型将引用或内存地址存储在其中,并将相应的数据存储在堆中,引用类型的例子包括类、字符串、数组和对象。装箱是将值类型转换为对象类型时相关的术语,而拆箱只是将对象类型转换为值类型。装箱在托管堆内存中创建一个新对象并复制数据,而拆箱则相反。装箱是隐式的,而拆箱是显式的。如下所示,
134 0
|
SQL NoSQL 关系型数据库
.NET5真的来了,你准备好了吗?
.NET5真的来了,你准备好了吗?
137 0
.NET5真的来了,你准备好了吗?
|
XML C# 数据格式
一起谈.NET技术,C#编程笔记(一)
前段时间,帮朋友用C#做了一个小玩意儿,在开发过程中,发现很多用的着的东西,在网上都没有很好的解决方案,前前后后折腾了近一个月,总算是基本上完成了,在此整理下,权作以后再用到时复习之用。       这个东西有点像星座性格测试那种的,只不过是要C/S的,安装到客户端上,所以做起来限制比较多。
652 0
|
Web App开发 前端开发 .NET
艾伟:[你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望
anytao.net | 《你必须知道的.NET》网站 | Anytao技术博客  发布日期:2009.05.22 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处。
1134 0
|
SQL 算法 .NET
一起谈.NET技术,.NET十年(上)
  相关文章:.NET十年(下)   引言   语言是程序开发者行走江湖的手上利器,各大门派的高手在论坛、博客为了自家门派争吵不已早是技术世界中的亮丽风景,虽多少为刚刚踏入江湖的新手提供了思考的素材,但也同时迷惑了初出茅庐的前行方向。
1257 0
|
XML Java C#
一起谈.NET技术,2010 .NET面试题整理之基础篇
开篇语:对于已有工作经验的朋友,也许面试题已显得不怎么重要,但是如果你应聘的还仅仅是个普通的程序员,相信在很多的公司都还是会先拿出一套面试题,可能对整个面试影响不大,但做好面试题无疑会赢得第一个好的印象,特别对于那些缺少项目经验的应届毕业生。
1201 0
|
XML C# 数据格式
C#编程笔记(一)“.NET研究”
前段时间,帮朋友用C#做了一个小玩意儿,在开发过程中,发现很多用的着的东西,在网上都没有很好的解决方案,前前后后折腾了近一个月,总算是基本上完成了,在此整理下,权作以后再用到时复习之用。       这个东西有点像星座性格测试那种的,只不过是要C/S的,安装到客户端上,所以做起来限制比较多。
984 0
|
网络架构
艾伟:[你必须知道的.NET]第三十二回,深入.NET 4.0之,Tuple一二
本系列文章导航 [你必须知道的.NET] 开篇有益 [你必须知道的.NET] 第一回:恩怨情仇:is和as [你必须知道的.NET] 第二回:对抽象编程:接口和抽象类 [你必须知道的.NET] 第三回:历史纠葛:特性和属性 [你必须知道的.
1112 0