不知不觉中微软已经计划推出了下一代的.NET了,我们先来看一下新的.NET有包含什么

  What's new in .NET 5?

  .NET 5将会引入新的APIs,运行时功能和新的语言特色。

  • 在运行时体验中将有更多的选择性。
  • 所有平台将提供Java 互操作性。
  • 将会在多个操作系统提供支持 Objective-C 和 Swift 互操作性。
  • CoreFX 将扩展为支持 .NET 的静态编译(ahead-of-time – AOT),更小的空间占用和对更多操作系统的支持。

  注意到这里的.NET Standard所处位置,这也是我们在ASP.NET Core - 开篇这篇文章中阐述.NET Standard出现的意义所在。

  .NET 5 = .NET Core vNext

  首先需要明确的是,.NET 5是下一代的Core,即使它不再使用Core命名,接着我们已经熟悉的Core里面的内容是保留的,因为.NET 5是Core的延续,按照微软的计划,.NET 5是在2020年的10月份才有release版本出来,所以接下来我们看到的版本还是ASP.NET Core 3.x 系列

  为啥不继续用Core命名呢?从发展轨迹来看,Core的出现是因为微软希望从本质上区分Framework, 这也确实从底层到使用都进行了非常大的更改,这次微软希望清楚地传达, .NET 5 是 .NET 平台的未来,将其称为 .NET 5 是要让它成为微软发布过的最高版本。

  Improving

  每一次的更新换代,肯定是基于易用性和性能上的提升,我们来看一下微软官方的一个基于.NET 5的改进: 

  • 改进体验,在任何地方都可以使用 .NET 运行时和框架,并具有统一的运行时行为
  • 充分利用 .NET Core、.NET Framework、Xamarin 和 Mono 来扩展 .NET 的功能。

 

  运行时体验  

  Mono 是 .NET 跨平台实现的基石,它最初是以开源为目的来替代 .NET Framework 的,Mono 是用作 Xamarin 一部分的运行时。

  CoreCLR 是作为 .NET Core 一部分的运行时。它主要用于支持云应用程序,包括 Microsoft 的最大服务,现在也用于 Windows 桌面,物联网和机器学习应用程序。

  总而言之,.NET Core 和 Mono 运行时有许多相似之处(毕竟它们都是 .NET 运行时),但也有宝贵的独特功能。让选择所需的运行时体验成为可能是非常有意义的。我们正在使 CoreCLR 和 Mono 可以互相替换。我们将使它像构建开关一样简单,以便在不同的运行时选项之间进行选择。

  高吞吐量和高生产率

  最开始.NET 就依赖于JIT(即时编译器)将IL(中间语言)代码转换为机器代码,从那时微软就构建了业界领先的基于 JIT 的托管运行时。该运行时具有非常高的吞吐量,并且提升了开发体验,使编程变得快速而简单,这也是为什么这么多人口中微软的低门槛:)

  大多数 .NET 5 的默认体验将使用基于 JIT 的 CoreCLR 运行时。两个值得注意的例外是 iOS 和客户端 Blazor(web assembly),因为它们都需要 ahead-of-time (AOT) 原生编译。

  更快的启动,更低的内存占用率

  Mono 项目的集中了大部分精力在移动和游戏机上。该项目的一个关键功能是基于业界领先的 LLVM 编译器项目的 .NET AOT 编译器。AOT 编译的应用可以在较小的位置高效运行, 并在需要时交换吞吐量以进行启动。

  Blazor 项目已经在使用 Mono AOT,这将是最早过渡到 .NET 5 的项目之一。

  有两种类型的 AOT 解决方案:

  • 需要 100% AOT 编译的解决方案。
  • 大多数代码是 AOT 编译的解决方案, 但 JIT 或解释器可用于与 AOT 不友好的代码模式。

  .NET Native 是微软用于 Windows UWP 应用程序的 AOT 编译器, 也就是上面的第一种 AOT 类型。随着第一种方案的实现, 微软限制了 .NET API 和可以使用的功能,从这一经验中了解到, AOT 解决方案需要覆盖 .NET API 和模式的所有方面。

   原则和交叉体验

  基于startup,吞吐量,内存占用, 可靠性和诊断性作为平台的整体风格是非常重要的,这也是微软专注的努力方向。在专注于吞吐和可靠性的同时,也更专注于startup 和 Mono AOT编译器的大小控制,这是很好的匹对,例如吞吐和可靠性,startup 和 大小控制。

  微软将会持续在各种场景对.NET 5进行优化,特别是在具有多种交叉场景的情况下进行重点优化。

  所有的 .NET 5应用将会使用CoreFX框架,微软将会确保在如今不经常使用的地方保证.NET 5的正常工作,这主要集中在Xamarin 和 客户端 Blazor的工作场景。还有.NET 5的应用在.NET CLI都是可构建的,只需确保在项目中有基于命令行的基础编译工具即可。

  C#语言将会保持跟.NET 5的同步,开发者在后续开发.NET 5应用是将可使用最新版本的C#以及对应的特性。

  

  Birth of the project

  微软于 2018 年 12 月在波士顿碰头后组建了技术团队并开始了这个项目。来自 .NET 团队(Mono/Xamarin和.NET Core)以及 Unity 的设计领导者介绍了各种技术和架构方向。

  .NET 5这个项目目前是作为单个团队推进,并以提供一套可交付成果为导向。自 12 月以来,在以下一些项目上取得了较多的进展:

  • 定义一个极小的分层用来定义运行时 <-> 托管代码层,目标是实现 >99% 的 CoreFX 公共代码。
  • MonoVM 可以使用 CoreFX 及其类库。
  • 在 MonoVM 上使用CoreFX的实现运行所有 CoreFX 测试。
  • 在 MonoVM 上运行 ASP.NET Core 3.0 应用程序。
  • 在 CoreCLR 上运行 MonoDevelop,然后运行 Visual Studio for Mac。

  迁移到单个.NET的实现会引发一些问题: 目标框架将是什么? NuGet包兼容性规则是否相同? .NET 5 SDK 应该支持哪些工作负载?特定框架的编码将如何工作?我们还需要 .NET Standard吗?
  好吧,让巨人先走,我们慢慢爬上去吧:)

  Ending

  .NET 5 是令人兴奋的新方向。微软这次的.NET更新换代,旨在让所有的人看到, .NET 将变得更简单,且具有更广泛功能和实用性。所有新的开发和功能都将成为 .NET 5 的一部分,包括新的 C# 版本,在使用相同的 .NET API 和语言来针对各种应用程序类型、操作系统和芯片架构将会使微软的发展有着更光明的未来,它可以使我们在 Visual Studio ,Visual Studio for Mac,Visual Studio Code,Azure DevOps 或命令行中轻松更改构建配置用于构建不同的应用程序。

.NET 5 - 下一代.NET的更多相关文章

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

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

  2. 2019年台积电进军AR芯片,将用于下一代iPhone

    近日,有报道表示台积电10nm 芯片可怜的收益率可能会对 2017 年多款高端移动设备的推出产生较大的影响,其中自然包括下一代 iPhone 和 iPad 机型.不过,台积电正式驳斥了这一说法,表明1 ...

  3. SharePoint Framework:下一代开发方式

    SharePoint Framework(SPFx),是页面 和Webpart的模型,完全支持本地开发(即完全可以脱离SharPoint环境在本地进行开发),听起来是不是很高级呢,早期SharePoi ...

  4. Click Magick – 下一代点击跟踪和链接管理

    Click Magick 是新一代的广告跟踪和链接管理系统,让每一个点击都能给你带去更多的利润.它是专门设计来跟踪所有类型的点击计费广告,包括从谷歌,必应和 Facebook 的 PPC 广告,就好像 ...

  5. Reapp - 下一代的 Hybrid App 开发框架

    Reapp 与 React Native 有着惊人的相似之处,二者都使用 React 来创建应用程序用户界面的框架.然而,在底层机制上这两个框架之间却具有明显的哲学差异.React Native 将 ...

  6. 振奋人心啊!!!!下一代.NET——ASP.NET vNext

    这两天看到的.NET的新闻都好振奋人心啊!微软北美技术大会带来了好多好消息! 看到一篇博客园的文章,感觉太棒了.摘录下来.原文链接:http://news.cnblogs.com/n/208133/ ...

  7. 下一代GNU/Linux显示服务Wayland 1.12正式发布

    导读 最近,Bryce Harrington很高兴地宣布了“面向GNU/Linux操作系统的Wayland 1.12.0显示服务已正式发布”的消息.与它一同到来的,还有Weston 1.12.0合成器 ...

  8. Leap Motion发布新平台,直击下一代移动端VR/AR手部追踪

    2013年,动作捕捉技术公司Leap Motion发布了面向PC的体感控制器,不过销量并不乐观.随着2014年虚拟现实技术的再一次兴起,它发布一款用于Oculus Rift的附加设备,从而正式登上VR ...

  9. Koa – 更加强大的下一代 Node.js Web 框架

    Koa 是 Express 的开发团队设计的下一代 Web 框架,其目的是为 Web 应用程序提供更小,更具表现力,更坚实的基础.Koa 没有核捆绑任何中间件,并提供了一​​套优雅的方法,使服务器端开 ...

  10. 下一代大数据系统和4S标准

    大数据行业发展到今天,它创造的价值和带来的社会效应,大家已经看得很明白,同时很多问题和不足也暴露出来,特别是hadoop能够提供的数据处理能力,现在已经挖掘到极限,但是现在各行业对数据的存储和计算需求 ...

随机推荐

  1. vs2015终于配置完成了

    安装vs2015,本来应该直接安装vs2015withupdate3的,但是由于当时手上只有vs2015的包,于是直接安装了. 打开C++工程cntk的时候提示需要安装很多东西包括vc编译工具.pyt ...

  2. ffmpeg api升级到3.3 api变化

     void av_free_packet(AVPacket * pkt) Use void av_packet_unref(AVPacket * pkt) Wipe the packet. Unref ...

  3. python super()(转载)

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  4. iOS开发- OpenGL ES屏幕截图

    之前写过一个常规的屏幕截图:http://blog.csdn.net/hitwhylz/article/details/17189351 可是发现这个办法对于OpenGL 无用.  获取到的数据为空. ...

  5. unsigned double

    最近犯了一个错误: 定义变量类型的时候竟然定义了unsigned double的类型.由于编译能够通过,因此一直没有发现这样写会有什么样的问题. 今天一次偶然的测试中发现这些变量的值都是整数.一开始觉 ...

  6. [Python爬虫] Selenium自己主动訪问Firefox和Chrome并实现搜索截图

    前两篇文章介绍了安装.此篇文章算是一个简单的进阶应用吧.它是在Windows下通过Selenium+Python实现自己主动訪问Firefox和Chrome并实现搜索截图的功能. [Python爬虫] ...

  7. c#生成试卷。。。

    .net下,操作Word的插件有NPOI,Spire,一版大家经常用的是NPOI,我在着手开发的时候,优先考虑的也是NPOI,然而时间比较着急,没有找到NPOI支持2003版本, 就放弃了,从网上发行 ...

  8. win10安装VMware

    首先下载VMware安装包: 双击安装: 点击:“uninstall”安装,这个过程需要一些时间 点击“Next” 选择典型或者自定义安装 这里我选择的是典型安装,点击“Next”: 选择是否检查更新 ...

  9. 分布式版本控制系统—git命令

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  10. 什么是AWS Lambda?——事件驱动的函数执行环境

    AWS CTO Werner Vogels在AWS re:Invent 2014大会的第二场主题演讲上公布了两个新服务和一系列新的实例,两个新服务都相当令人瞩目:第一个宣布的新服务是Amazon EC ...