.NET 很好,你可能對它有一些誤解
? >?作者:Charles Chen
在 20 年前的 2002 年, 微軟公布了下一代的軟件、服務(wù)的愿景和路線,2 月 13 日,Visual Studio .NET 推出,.NET 開發(fā)平臺的第一個版本正式向世界發(fā)布。
到現(xiàn)在為止,.NET 都已經(jīng) 20 歲了, 它已經(jīng)成長為一個成熟穩(wěn)定的平臺。
但是,我發(fā)現(xiàn)很多開發(fā)人員還是對 .NET 有一些偏見和誤解,讓我們來消除這些誤解吧!
如果你身邊也有這樣的朋友,請把這篇文章轉(zhuǎn)發(fā)給他們。
實際上這個說法從早期的 .NET 就一直存在,也確實如此,.NET Framework 最初是為 Windows 構(gòu)建的,因為包含了很多 Win 32 API 的引用,導(dǎo)致跨平臺變得困難。
直到微軟在 2016 年認(rèn)真對待 .NET Core,他們才開始解決 Mono 中的一些問題, 以及對 Win32 API 的揮之不去的依賴。但是在早期,.NET Core 、.NET Framework 、 .NET Standard 這些也讓開發(fā)人員感到混亂,不過值得慶幸的是,在 .NET 5 和現(xiàn)在的 .NET 6 中,這一切都已成為過去。
如今,.NET 6(最新的 .NET)可以在Windows、Linux和macOS上運行,并支持 x86、x64、Arm32和 Arm64。

Microsoft 為多個平臺提供 SDK 和運行時。
這意味著,您可以在最新的 M1 MacBook 上構(gòu)建 .NET 應(yīng)用程序:

在 2021 MacBook Pro M1 上使用命令行構(gòu)建一個簡單的控制臺應(yīng)用程序。
實際上,.NET 6 具有極高的吞吐量,并且在 Web 測試中提供的吞吐量是在 Node 和 Python 上運行的任何框架的多倍。
最近幾年,.NET 團隊非常關(guān)注運行時幾乎所有方面的核心性能,雖然顯然它不會在原始性能上擊敗 Rust 或 C++,但它在運行 Web 應(yīng)用方面并不落后。
而 Task Parallel Library 和 Span 為構(gòu)建吞吐量和性能提供了更高的上限。
根據(jù) TechEmpower Benchmarks 提供的Web 框架測試報告, 在 Round 15 from February 14, 2018 中,您可以看到 ASP.NET 實際上落后于 Node.js:

2018 年:Node.js 第 8位, ASP.NET Core 13 位 ,Express 在 28 位,F(xiàn)lask 57位, Django 61 位。
在 Round 20 in February 8, 2021 中,僅僅三年后,.NET 絕對壓倒了 Node 和 Python,并且僅次于基于 Rust 的服務(wù)。

2021 年: .NET Core 在第8位, Node.js 56 位, Express 94 位, Flask 111 位, Django 118位.
在 gRPC 基準(zhǔn)測試中,.NET 的表現(xiàn)也非常出色。

如果您正在使用 gRPC,請不要考慮 Node 或 Python。
和 Rust 和 Go 相比,很多人覺得 .NET 是一個過時的平臺,實際上,.NET 一直都在更新,并且語法和特性都很先進, 泛型, async/await, 匿名類型, 元組, 模式匹配,Expression 等等。
借助于強大的 LINQ,C# 看起來非常像 JavaScript:

根據(jù) GitHub 的 2021 年 Octoverse 狀態(tài)報告,C# 在過去幾年中略有復(fù)蘇:

實際上,早期的 Visual Studio 開發(fā)工具確實很貴!
但是現(xiàn)在,微軟不僅提供免費的、功能齊全的 Visual Studio 社區(qū)版,你還有其他的選擇:
?JetBrains Rider?適用于 macOS 的 Visual Studio?當(dāng)然還有VS Code
最近,我在 MacBook Pro M1 上使用 VS Code 完成了我的大部分 C#/.NET 開發(fā):

早期的 .NET 確實是這樣的,但是自從 Satya Nadella 掌權(quán)以來,微軟在開源方面的整個軌跡已經(jīng)發(fā)生了巨大的轉(zhuǎn)變。不過微軟在這方面的轉(zhuǎn)型和成長仍然還有很長的路要走。
.NET 本身由.NET Foundation管理,.NET 編譯器 (Roslyn) 和很多其他內(nèi)部組件都在 GitHub ,并且自 2015 年以來,它已通過 Red Hat Enterprise Linux 認(rèn)證。
實際上,.NET 現(xiàn)在已經(jīng)發(fā)展成一個統(tǒng)一平臺,你可以用它開發(fā)各種各樣的應(yīng)用,包括桌面軟件,Web 服務(wù),3D 游戲等等。
.NET 也有很多構(gòu)建跨平臺應(yīng)用程序的框架,比如:
?Multi-platform App UI?Uno Platform?Avalonia
全文完...?
