34

.NET生态系统概览

 4 years ago
source link: https://www.tuicool.com/articles/uyYnQn7
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文要点

  • .NET 5 预计会在 2020 年发布,届时将统一所有.NET 平台。

  • 在进行特性开发时优先考虑性能。

  • C#语言的发展直接推动了开发者的采用。

  • 开源社区让.NET 生态系统变得更好。

2002 年,.NET 发布。在接下来的 12 年多时间里,.NET 开发社区以看似稳定的速度增长。然后,情况开始迅速变化。微软预见到了生态系统的变化,采纳了开源开发理念,甚至收购了 GitHub。出现这样的变化,说明 .NET Framework 开发人员已经准备好迎接刚刚开始的加速发展。微软后来收购了全球领先的软件开发平台 GitHub,而 .NET Framework 开发人员也做好了迎接加速发展的准备。

2014 年 11 月,.NET Core 诞生。对于.NET 生态系统来说,这预示着一个革命性的开源新时代的到来,但这并非一帆风顺。困惑和沮丧随之而来;开发人员还没有准备好迎接如此巨大的变化。为了消除这种困惑,睿智的.NET 团队产品经理 Immo Landwerth 开始着手创建一系列视频,解释 .NET Standard、.NET Core、.NET Framework 和新的.NET 生态系统的各种细节——通常是坐在温暖的火炉旁,手里拿着苏格兰威士忌。尽管这看起来很惬意,但我认为,如果一位微软的 PM 愿意坐在火炉旁解释一些事情,这是一个令人担忧的迹象。

.NET Standard

开发人员必须了解 .NET Standard,但是多年以后,.NET Standard 仍然让那些不知道如何使用它的人感到困惑——他们将它误认为运行时,而它实际上只是一个规范。作为一个目标框架别名(TFM),开发人员可以编写面向 .NET Standard 的类库,并使生成的包可以供 .NET Core 或 .NET Framework 应用程序使用。考虑下多平台。借助编译器指令,包的作者可以编写条件代码,以 .NET Core 或 .NET Framework 为编译目标。这种标准化可以提供多种满足标准的实现。使用 .NET Standard,版本可以与 .NET Core 和 .NET Framework 实现保持一致。

.NET Standard 是一个规范。它代表所有.NET 平台都必须实现的一组 API。

——Immo Landwerth

想象一下代码维护;感觉如何——一个有趣的概念,但并非没有一点焦虑。

统一 .NET Core 和 .NET Framework

Landwerth 做了一项了不起的工作,视频也非常有用,但现在微软又开始转向了。在 2019 年微软 Build 大会上,他们发布了 .NET 5,统一了 .NET Core 和 .NET Framework。

以后将只有一个 .NET,你可以使用它开发面向 Windows、Linux、macOS、iOS、Android、 tvOS、watchOS、WebAssembly 等平台的应用。

——Richard Lander

是的,没错,但值得再重复一遍,.NET 5 的目标是统一 .NET Framework 和 .NET Core。要使这一公告成为现实还有许多工作要做。2019 年是不可能实现的,所以期待 2020 年吧。这将给开发人员社区带来极大的帮助,因为它让事情变得简单!

微软还利用了 Mono 运行时和 .NET Core 的成果。乍一看可能有点吓人(再强调一遍,作为开发人员,我们需要拥抱变化而不是害怕它),但是请放心,为实现 .NET 5 所做的所有工作都是以 .NET Core 和 Mono 的成功经验为基础。.NET 的统一在真正意义上终结了过去多年来困扰开发人员社区的.NET 生态系统分裂的问题。目前还不清楚 .NET Standard 是否会继续存在。

未来展望

虽然我们很容易沉溺于过去,对过去的担忧和挫折牢骚满腹,但我们必须前进。也许,最合理的方法之一就是统一 .NET Core 和 .NET Framework……我敢说:“让 .NET 再次变得伟大!”也许我的说法太过了,但我们还是讨论一下未来吧。微软将把我们引向何方?

让我们先退一步,讨论一下我们从哪里来,然后再深入讨论我们要到哪里去。并不是所有的.NET 开发人员都知道他们的代码是如何编译的以及最终生成了什么。

从一开始.NET 就是基于即时(JIT)编译器将中间语言(IL)翻译成最优的机器码。

——Richard Lander

回顾我之前提到的 Mono 项目,我们知道,在.NET 预编译(AOT)方面已经做了大量的工作。Mono 已经实现了业界领先的 LLVM 编译器基础设施。

Mono AOT 编译器可以将.NET 代码编译成一个可以在机器上运行的本地可执行代码,就像 C++ 代码一样。

——Richard Lander

重要的是要认识到,在 .NET 3.0 之后,不会再移植任何 .NET Framework 特性。再说一次,.NET 5 预计在 2020 年 11 月推出,所以时间是一个重要的因素。虽然这看起来可能是很长一段时间以后的事,但它会很快就会到来。你可以问下自己,“在此期间我们应该做些什么?”我们下次再讨论这个问题。

以性能为中心的创新

微软官方建议您在此期间开始使用 .NET Core 开发新应用程序。如果可能的话,考虑将现有的 .NET Framework 应用程序移植到 .NET Core 也是一个好主意。

新应用程序应该基于 .NET Core 构建。未来针对 .NET 的投入都将投入到 .NET Core 上。

——Scott Hunter

在.NET 生态系统中,.NET Core 一直处于创新的中心。它是一种可以替代 .NET Framework 的运行时,从头开始进行了完全重写;这使得针对性能的积极创新成为可能。.NET Core 和 ASP . NET Core 的每次迭代都会在保证一致性的情况下进行改进。“减少分配”是一个非常常见的主题,为的是提升性能。一个新的行业术语诞生了:

Allocaty(形容词:al·lo·caty)——进行不必要分配的代码。

——David Fowler

CoreCLR 和 CoreFX 的 GitHub 存储库不断收到大量的拉取请求,都是聚焦于通过减少分配来提高性能。这些努力直接导致了 ASP . NET Core 的诞生。根据 Tech Empower 的基准测试,.NET Core 已经成为世界上速度最快的 Web 服务器之一。见证这些进步令人难以置信,但它们源于大量时间和精力的付出以及社区的参与。微软是在开放的环境下发展的,这使得开源开发者社区能够为这些创新做出贡献。性能改进不局限于减少分配;通过利用硬件的固有特性,甚至可以获得更底层的收益。

不断发展的 C#

不用说,我是 C#语言的超级粉丝,而 .Net Core 是用 C#构建的并且以性能为中心。所以,我想在这里稍微讨论一下,这可能有点出乎意料。

作为 .Net Core 的一个主题,只要有可能,以性能为重心的新功能不仅应该公开给公众使用,而且应该在内部使用。

——Stephen Toub

C# 7 及其后续的单点版本,以及现在的 C# 8,都触及到了社区采用的容忍界限。我非常信赖语言的进化。我支持这样做,但与此同时,我同情那些因为业务限制而无法采用新版本的开发人员。我能理解这样的担忧;您要问下自己——“价值定位是什么?”某些新特性以性能为中心,您可以根据自己的需要考虑这些特性。

在最近 Twitter 上的一个帖子中,Nick Craver 说:“ C# 8 对我来说已经死了,”这句话大致的意思是“StackExchange 要很多年才能升级到 C# 8。”这部分是因为某些 C#特性依赖于公共语言运行时 CLR 的更新。一个例子是“默认接口成员”特性,它目前依赖于 .NET Core 3.0。绝大多数其他特性只依赖于 C#编译器,这就完美了。

.NET 基金会

鉴于 .NET 术语在 Web 上满天飞,再多告诉您一个也无妨了。

.NET 基金会是一个独立的组织,旨在促进围绕.NET 生态系统的开放开发和协作。它为社区和商业开发人员提供了一个论坛,旨在通过促进开放性和社区参与来鼓励创新,从而拓宽和强化 .NET 生态系统的未来。

一定要访问他们的网站并参与其中,或者成为其中的一员。作为成员,你就有资格在董事会投票——同样,你也有资格成为董事会年度选举的候选人。我实际上是 2019 年董事会候选人之一。

我建议你订阅他们的时事通讯,以便可以了解最新消息。

富有意义的发展之路

.NET 生态系统是一个不断变化的生态圈,我相信它正在朝着一个伟大的方向发展。有了开源和跨平台这两个关键优先事项,您就可以放心了。当我意识到 .NET Core 和 .NET Framework 是 .NET 生态系统的压力源,并导致了 .NET 5 的统一时,我个人感到振奋。虽然这几年颇痛苦,但它也使这样的创新成为可能。我建议您尝试移植到 .NET Core,并开始使用 .NET Core 进行任何新的开发;这就是未来。尽管 .NET Standard 的方向尚且未知,但在有进一步的消息之前,我们仍然建议使用它。我希望,无论决定是什么,影响都不会太大。

关于作者

David Pine 是微软的 MVP、谷歌开发专家和内容开发人员。David 喜欢与技术社区共享知识,并在国际会议、用户组和技术会议上发言。David 热衷于通过写作来分享他的想法,并在 davidpine.net 上积极地维护着一个博客。David 的文章已经发表在 ASP . NET、MSDN Web-Dev、MSDN .NET、Dot NET Curry 和 InfoQ 上。作为回报社区的另一种方式,David 喜欢为开源项目和 StackOverflow.com 做贡献。David 是技术委员会成员,并且是近四年来 Cream City Code 的主要组织者之一。工作之余,他会和他的妻子以及他们的三个儿子 Lyric、Londyn 和 Lennyx 呆在一起。您可以在推特上关注 David(@davidpine7)。

原文链接:https://www.infoq.cn/article/A6XZ1b5XSZgGHgOjExr6

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

b2Q7ryq.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK