.NET 8
.NET 8 的发布引发了对平台发展的广泛讨论:开发者赞赏其性能提升、Native AOT 编译、新的 C# 12 特性(如集合表达式和拦截器),以及面向云的新增内容,例如 .NET Aspire。与此同时,许多人认为非 Windows 系统上的跨平台 GUI 和工具链仍显滞后,并对生态碎片化(.NET Framework、.NET Core、以及“统一后的 .NET”)、UI 框架频繁更替,以及 Microsoft 对 IDE 和扩展的变现方式保持警惕。总体而言,参与者认为现代 .NET 是一个快速、强大且工具完善的后端和云原生选择,但在跨平台桌面和移动 UI 方面,尚不明显是最佳选择。
C# 12 语言变化
- 新的集合表达式(
[1, 2, ..others])和展开语法重用了现有的..模式匹配形式,以便在构造与解构之间保持对称。 - 关于
..与...的争论;选择前者部分原因是为了为未来可能的功能保留...。 - 类的主构造函数看法不一:一些人认为它非常方便,另一些人则觉得可能令人困惑。
- 通过源生成器实现的拦截器被视为面向 DI/AOP 框架的“小众‘强力工具’”,而非日常业务逻辑所需。
Native AOT、性能与体积
- Native AOT 因生成小型、独立的二进制文件以及类似 Go 的部署体验而受到称赞,但许多人也指出其生态存在缺口(依赖反射的代码、较旧的 ASP.NET 模式、GUI)。
- 有人将其更类比为 Java/Graal native image:功能强大,但只有一部分库能顺畅工作。
- 动态 PGO 现在默认开启;预计尤其会使抽象层较多的代码受益。
Aspire、Dapr、Orleans 与云原生
- Aspire 引发了兴趣与怀疑并存;有人认为它有助于云原生 .NET 的集成,也有人担心它“魔法太多”并与 Dapr 重叠。
- 对 Dapr 和 Orleans 的长期投入存在疑问;维护者表示正在积极推进(Orleans 工作流、存储、Aspire 集成)。
工具链、成本与平台
- Visual Studio(Windows)、带 C# 扩展的 VS Code,以及 Rider 是主要选择;许多人称赞 Rider 在 macOS/ARM 上的表现。
- 在“企业规模”以及非 Windows 平台上,真正免费/开源工具链仍有摩擦,不过 CLI + VS Code 也能用。
- 围绕 VS / DevKit 面向更大公司的许可问题,引发了对未来变现的担忧;也有人认为运行时是 MIT 许可并且可被 fork。
跨平台与 GUI 故事
- 普遍共识是:非 GUI 的跨平台服务器/CLI 体验扎实且令人愉快。
- 桌面/移动 GUI 被认为较为碎片化:MAUI(原生后端)、Avalonia/Uno(类似 Skia)、Blazor(Web/WASM)、第三方选项(Eto、Godot)。
- 一些人担心 Blazor 重演 WebForms 式的陷阱;另一些人则对其统一的组件模型以及新的流式/服务端特性充满热情。
版本、Mono 与兼容性
- 反复出现的解释是:旧的仅限 Windows 的 .NET Framework,与现代跨平台的 .NET 5–8 不同;.NET Standard 主要用于旧库共享。
- Mono 基本已并入主仓库,但仍用于 Unity、MAUI 移动端以及一些小众平台。
- 许多人称赞 .NET 的向后兼容性;也有人反驳说 Java 的兼容性标准更严格。
其他语言与采用情况
- F# 8 与 C# 12 一同发布,并带来性能和互操作改进;社区担心它的能见度依然边缘化。
- 有几条讨论探讨为何/何时选择 .NET 而不是 Go/Java:强大的工具链、LINQ、async 模型,以及每年渐进式改进。