作为一个在 .NET 上构建了不止一个流行平台的人,我经常被问到它的相关性,以及它是不是一个值得投入的生态系统。这个问题在旧金山湾区的技术世界里尤为流行,这里的技术潮流就像四季一样变更交替,但 .NET 始终是一个坚定、持续流行的平台。而在我看来,它还是最具整体生产力、最令人愉快和最易访问的平台。
这个世界上确实还有其他很棒的编程语言,比如 Rust;还有其他很棒的 App UX 平台,比如 Flutter。但说到全面的生产力和优雅,可能没有能与 .NET 一较高下的了。
今天的 .NET 已经不是老一辈的 .NET 了,在一年一度的 StackOverflow 开发者调查中,它连续 3 年成为最受喜爱的平台,这是有原因的。事实上,.NET Framework 和新 .NET Core 的结合远远超过了其他所有东西。甚至可以说,在这些问卷调查的所有框架当中,.NET 体现了最强烈的爱与恐惧的正面情绪。
为了理解为什么开发者如此热爱 .NET,让我们全面考察一下 .NET 的开发者体验。
一流的工具
首先是工具。Windows 和 Mac 的 Visual Studio 为 .NET 提供了一流的支持,VS Code 也为其提供了有限的支持(微软的一个疏忽,我们将在下面讨论)。它们代表了世界上使用率最高的 IDE,事实上,VS Code 是 IDE 的绝对统治者,使用人数是 Visual Studio(位居第二)的两倍多。
JetBrains Rider 被许多人认为是现有最好的 IDE,它不仅与 Visual Studio 一样为 .NET 提供支持,而且在此基础上进行了相当大的改进,带来了可能是所有工具中最好的 .NET 工具体验。
工具本身是基于底层的平台功能(如健壮的一键式构建和部署系统)而构建的,提供了轻松的首次运行体验,开发者能够在几分钟内完成从平台安装到应用程序部署的过程。事实上,无需纠缠于复杂的工具链、构建文件或平台版本控制就能从零开始使用 .NET 来部署应用程序,这种能力已经为其他平台树立了标准,并提升了开发者对平台的忠诚度。
随处运行
就像 20 世纪 90 年代的 Java 梦一样,.NET 也运行在所有的主流平台上,并拥有定制的集成工具来充分利用每一个平台。虽然它最初被锁定在 Windows 上,但在今天,它已经可以运行在 Windows、macOS、iOS、Android、Linux、大型机甚至微控制器上。它也运行在云端,Azure、AWS 和谷歌云都提供了内置的 .NET 应用程序支持。
一系列优雅的编程语言
公共语言运行时(CLR)是 .NET 的一个核心特性,开发者可以使用超过 25 种语言编写应用程序,包括 C#和 F#——世界上最好的两种编程语言,以及 VB.NET——虽然人们喜欢调侃它,但它本身确实非常强大。
强大的社区和开发者
根据具体的计算方式,活跃的开发者数量在 200 万到 250 万之间。而根据我们自己的研究,世界上将近一半的活跃开发者知道或者正在用 .NET。
自 .NET 诞生以来,开发者生态系统每年都在增长。因此,在难以招到开发人员的时候,你可以放心,.NET 是最大的开发人才库之一。
它还在快速增长。最新的 TIOBE 编程语言指数显示,在过去的一年中,C#的受欢迎程度增长最快,有望进入前三,取代 C 语言。事实上,如果与 VB.NET 一起,它将轻松位居榜首。
技术之美
2016 年的 .NET Core 重构对 .NET 进行了彻底的改造,提供了一种现代的、轻量级的、可组合的、点菜式的方式,直接通过 Nuget 从它的现代包生态系统中获取必要的平台库。它放弃了传统的 Win32 平台连接,融合了 Mono 和 Xamarin 团队在运行时和工具上带来的创新,为真正的跨平台体验铺平了道路。
.NET Core 也带来了更好的性能。通过打破旧有 .NET Framework 运行时的限制,微软带来了一系列性能改进。
说到性能,Xamarin 的预先编译器(现在已被纳入 .NET)让开发人员可以直接在构建时为特定芯片架构的汇编代码编译出二进制文件,从而在内存托管的应用程序中实现原生的 C/C++性能。
这种内在的内存托管方式也为可靠性和安全性带来了好处。从可靠性角度来看,它实际上消除了非托管应用程序(如用 C/C++编写的应用程序)中常见的内存泄漏所造成的不稳定和崩溃。从安全性角度来看,内存托管平台的安全性消除了由内存使用引起的一系列安全问题,谷歌的安全数据显示,内存使用引起的 Bug 大约占所有非托管安全性的三分之二。
百分百开源
.NET 的所有东西都是开源的,可以免费使用,包括类库、运行时、编译器、编程语言和应用程序框架。你可以在 GitHub 上的 DotNet 存储库中找到所有的源代码。
一流的生态系统
除了微软的投入之外,第三方生态系统也非常庞大,拥有大量高质量的库、插件、工具和框架。
下面列出了几个非常引人注目的第三方集成的例子:
Uno Platform 和 Avalonia——两个成熟的 MAUI 替代解决方案,Uno Platform 和 Avalonia 提供了一个优雅的、令人愉快的、高性能、跨平台 UX 框架。
Meadow——由 Wilderness Labs 开发,可以用它为运行在微控制器上的 .NET 构建物联网解决方案。
Telerik——几乎在任何平台上都可以使用的可插拔 UI 控件。
还有其他无数的咨询公司、解决方案提供商和 .NET 商店,它们都获得了构建 .NET 解决方案的认证和资格。
受企业信任
众所周知,.NET 是企业的中流砥竿,虽然微软没有公开发布 .NET 的采用情况,但有 95% 的财富 500 强企业都在使用 Azure。而且,我私下里也被告知,至少 80% 的财富 500 强企业在使用 .NET,但实际数字可能更高,因为遥测技术经常会被关闭。
.NET 尤其适用于关键任务型应用程序,在这些应用程序中,.NET 的可靠性和久经考验的运行时让人心情舒畅。事实上,美国国防部在广泛使用 .NET。
它并不完美
尽管 .NET 有这些神奇之处,但它并不完美。我要指出的是,尽管微软用它提供了这么多好东西,但它也有缺点。其中,大部分直接归因于微软内部优先级的转变,以及领导团队一直在艰难地跟上一线的开发者文化。
MAUI 是微软的旗舰跨平台 UI 库,Xamarin 的继承者,同时也结合了之前的 Windows UI 框架 WPF,但长期以来资金不足,这使得 Flutter 成为当今最好的跨平台 UX 平台。在 Linux 平台上尤其如此,因为 Linux 目前还不支持 MAUI。
同样是这些领导团队,他们有时候也错误地处理了与社区的关系,缺失方向感的 .NET 基金会和 Hot-Reload 的惨败就足以证明。
优先级转变也可能是限制为 VS Code 提供支持的原因,虽然有了基本的 .NET 支持,但仍然缺少适当的插件来处理 .NET 的多项目解决方案格式,而这对于支持更复杂的项目来说是必要的。这是由于微软一直以来优先将 .NET 开发者引向 Visual Studio 的销售,以此来实现变现,而不是为他们提供免费的 VS Code。
话虽如此,很明显,微软内部的优先级正在转移到提供更好的跨平台工具支持上,而且我听说一个完整的 VS Code 解决方案正在进行当中。
结束语
然而,即使有一些小缺点,.NET 仍然可以轻松地成为世界上最高效、最值得信赖的开发者平台生态系统。没有什么比 .NET 更完整、更开放、更高效的平台了。
所有迹象表明,在可预见的未来,.NET 将继续保持这种态势,因为它将继续发展,团队和生态系统将继续创新。因此,把赌注押在 .NET 上是件好事!
原文链接:
https://medium.com/@bryancostanich/its-good-to-bet-on-net-c22853f501c7