从 .NET Framework 到 .NET 8:跨平台融合史诗与生态演进全景
引子:一次部署,多端运行
2002 年 .NET Framework 1.0 发布时,ASP.NET WebForms 把“拖控件”文化推向巅峰,却也把 Windows Server 与 IIS 牢牢绑定。二十年后的今天,同一套 C# 业务代码可以跑在 Windows、Linux、macOS、云原生容器、IoT 边缘甚至浏览器 WASM 沙盒里。这场跨越两代的技术长征,被社区称作“.NET Everywhere”。本篇文章将用一万字的时间轴与生态视角,复盘 .NET 如何从一家专属平台进化为开源跨平台的标准答案。
第一章:Windows 黄金时代(2002-2014)
1.1 CLR 与 CTS 的奠基
1.2 WebForms、WinForms、WPF 的三驾马车
1.3 企业级特质的沉淀——COM+ 互操作、GAC、ClickOnce
1.4 第一次性能觉醒:.NET 4.0 TPL 与并行计算库
第二章:分裂的种子——Mono 与 Xamarin
2.1 Miguel de Icaza 的野望:让 C# 跑在 Linux 桌面
2.2 Mono 的 AOT 编译与 JIT 博弈
2.3 移动浪潮下的 Xamarin:C# 统一 iOS & Android
2.4 专利阴影与社区裂痕:为什么微软迟迟不合并
第三章:.NET Core 破茧(2014-2019)
3.1 Roslyn 开源——语言编译器即服务
3.2 CoreCLR、CoreFX、CoreRT 的三核心架构
3.3 跨平台 CLI、Kestrel 服务器与中间件管道
3.4 从 project.json 到 MSBuild:构建系统大一统
3.5 Docker 官方镜像的首次合入:镜像体积从 1.8 GB 到 100 MB 的瘦身史
第四章:融合奇点——.NET 5 与统一愿景
4.1 版本号跳跃背后的战略:One .NET
4.2 BCL 统一、TFM 合并、WinForms/WPF 的跨平台移植
4.3 MAUI 横空出世:从 Xamarin.Forms 到多端 UI
4.4 Native AOT 与 ReadyToRun:启动时间缩短 70% 的技术内幕
第五章:.NET 6-8 的进化飞轮
5.1 C# 10-12 语言特性:record struct、global using、required modifier
5.2 性能怪兽:Profile-Guided AOT、Dynamic PGO、loop vectorization
5.3 gRPC JSON transcoding 与 HTTP/3 原生支持
5.4 云原生就绪:dotnet-monitor、Prometheus exporter、OpenTelemetry 深度集成
5.5 .NET Aspire:下一代分布式应用编排框架
第六章:生态与治理
6.1 NuGet 与中央包管理的供应链安全
6.2 Dev Drive 与 ReFS:Windows 开发机 IO 提速 30%
6.3 Visual Studio、Visual Studio Code、Rider 的三国杀
6.4 基金会治理模式:从微软独裁到社区共治
第七章:企业迁移实录
7.1 迁移评估矩阵:API 兼容、第三方库、部署拓扑
7.2 混合模式调试:Attach to Process 跨 Windows/Linux 容器
7.3 性能基线对比:.NET Framework 4.8 vs .NET 8 在同等硬件上的吞吐差异
7.4 回滚策略:蓝绿 + 金丝雀发布双保险
第八章:未来十年展望
8.1 WASI 与 WebAssembly 组件模型:C# 进入浏览器插件时代
8.2 AI 加持:Semantic Kernel + ONNX Runtime 的端侧推理
8.3 量子计算 Q# 与经典 .NET 的统一调试体验
8.4 可持续计算:绿色 SDK 与碳排监控 API
结语:技术债的终结者
当 .NET 8 在 2023 年 11 发布时,微软宣布每年 11 月固定推出 LTS,奇数年推出 STS(Standard-Term Support)。这种节奏让“升级焦虑”成为过去式。正如 .NET 团队 slogan 所说:“Build anything, run everywhere, maintain forever.” 从 Framework 到 8,我们见证的不只是版本号的堆叠,而是一场真正的平台革命。