“ .NET: 犹如巡行和汇演,你眼光只接触我侧面。”
开篇引言对于许多开发者而言,.NET Framework、.NET Core 和 .NET 这几个名词就像一团迷雾。它们是什么关系?为何会有这样的演变?听着像哥仨,其实就是同一个人戴了三顶假发:最早的那顶叫Framework,只混Windows堂口,趁着Win系统家大业大,霸道得很;后来剃头跑路,整了顶Core,跨平台混码头;现在干脆不戴了,直接光头叫.NET,见谁都说‘我开源的,给根烟?’。
从2002到2025,从村头的曾阿牛到光明顶的白袍九阳功,今天以编年体的方式带你吃干抹净,翻译翻译什么叫"我战斗力只有六千,他起码有一万以上"。
第一章:村头插旗—
.NET Framework 时代 (2002-2019)
.NET Framework 是 .NET 技术的开山鼻祖。它的诞生旨在为 Windows 应用程序开发提供一个强大、统一、托管的运行环境。
核心特点:
- Windows 唯一:深度集成于 Windows 系统,是它的最大优势,也是日后最大的枷锁;
- 闭源: 由微软完全控制和维护;
- 强大的生态:伴随Windows的普及,催生了 WinForms/WPF/ASP.NET WebForms等大量成熟框架,奠定了企业级开发的基石。至今还被刚毕业时写winform UI事件的阴影笼罩;
关键版本里程碑:
- .NET Framework 1.0 - C# 1.0 (2002): 开创时代(这都是官方用词,太死板了),引入 CLR (公共语言运行时) 和 CTS (通用类型系统)。C# 1.0 奠定了基本的面向对象语法;
- .NET Framework 2.0 - C# 2.0 (2005): 革命性的升级。.NET 平台引入泛型,C# 2.0 同步支持,极大地提升了代码的类型安全和性能。还增加了匿名方法等特性;
- .NET Framework 3.5 - C# 3.0 (2007): 黄金时代。.NET 平台引入WCF、WPF、WF等。C# 3.0 带来了颠覆性的特性:LINQ、Lambda表达式、扩展方法、匿名类型、自动属性等,彻底改变了数据操作和代码书写方式;
- .NET Framework 4.0 - C# 4.0 (2010): 平台引入动态语言运行时 (DLR),并行任务库 (TPL) 等。C# 4.0 主要特性包括dynamic关键字、命名参数和可选参数等,增强了与COM组件的互操作性;
- .NET Framework 4.5 - C# 5.0 (2012): 这是一个至关重要的版本。C# 5.0 引入了 async 和 await 关键字,简化了异步编程模型,对现代Web和高并发应用产生了深远影响。.NET Framework 4.5 本身也深度集成了基于任务的异步模式 (TAP);
- .NET Framework 4.8 - C# 7.3 (2019): .NET Framework 的最后一个重大版本,进入维护模式。它支持最高到 C# 7.3,包含了模式匹配的初步增强、in 参数、ref readonly 等性能优化特性。但架构的陈旧、跨平台的确实以及更新缓慢的问题日益突出;
历史地位:
虽说功勋卓著,但"成也 Windows,败也 Windows"。在云原生和跨平台成为主流的时代,.NET Framework 显得步履蹒跚,左手六右手八,左脚直踢右脚画。
第二章:九阳初成—
.NET Core时代(2016-2020)
为了应对新时代的挑战,微软做出了一个大胆的决定:重写一个现代化的 .NET。这就是 .NET Core–其实就是被欺负得没法子了,再不开源从业人员都没得钟上了。
核心特点(与 Framework 的对比):
- 跨平台:可在 Windows、Linux、macOS 上运行!!!
- 开源:采用 MIT 协议,社区共同驱动;
- 高性能:从底层重构,性能远超 .NET Framework,尤其在 Web 服务器场景–这个确实,早期版本底层用的Libuv跨平台异步i/o,后来改为更为优秀的大名鼎鼎的kestrel;
- 模块化:通过 NuGet 包提供功能,应用可以只携带所需的依赖,部署体积更小。
- 侧配置部署:可以和应用一起发布,不依赖系统全局安装的运行时
关键里程碑:
- .NET Core 1.0 - C# 6.0 (2016): 一个最小可行产品 (MVP),实现了Asp.Net Core和Console App的跨平台。C# 6.0 提供了 ?. 空条件操作符、字符串插值、nameof 表达式等实用特性,让代码更简洁;
- .NET Core 2.0 - C# 7.0 (2017): 重大升级。引入了 .NET Standard。C# 7.0 带来了大量新功能,如元组、模式匹配、out 变量直接声明、局部函数等,进一步提升了表达能力和性能;
- .NET Core 2.1 - C# 7.3 (2018): 一个重要的长期支持 (LTS) 版本,性能提升显著,引入了 Span 相关的API(但大量使用需要C# 7.2/7.3支持),对高性能编程至关重要;
- .NET Core 3.0 - C# 8.0 (2019): 里程碑版本。支持 Windows 桌面开发。C# 8.0 是另一个重大更新,引入了默认接口方法、可空引用类型、异步流 (IAsyncEnumerable)、模式和索引,标志着语言向更安全、更灵活的方向发展;
历史地位:
.NET Core 是一次成功的“自我革命”,它让 .NET 技术栈重新回到了主流技术竞争的牌桌上,学完神功拍桌子,Linux和macOS都要给老子发牌。
第三章:一统江湖—
现代 .NET 时代 (2020 - 至今)
当.NET Core证明了其成功,而.NET Framework进入维护模式后,微软决定结束这种分裂的状态,实现统一。
核心事件:从.NET 5.0开始,名称中去掉了"Core",标志着这是未来唯一的.NET 平台。
- .NET Framework 4.x -> 旧版 Windows 应用的维护基线。
- .NET Core 3.1 -> 最后一个以"Core"命名的版本。
- .NET 5及以后 -> 所有新应用的开发目标。
统一愿景:用一个平台支持所有类型的应用,包括:
- 云原生与Web:
- ASP.NET Core桌面应用:
- WPF/WinForms/MAUI (跨平台移动和桌面UI)移动应用:
- Xamarin(现整合为 .NET MAUI)
- 游戏:Unity 引擎
- AI与物联网
关键版本里程碑(现代.NET):
- .NET 5 - C# 9.0 (2020): 统一的第一个版本,合并了.NET Core和.NET Framework的特性。C# 9.0 的核心是“简明代码”,提供了顶级语句、记录 (record) 类型、模式匹配的增强(关系模式、逻辑模式)等,特别适合编写小型程序和不可变数据结构。
- .NET 6 (LTS) - C# 10.0 (2021): 又一个里程碑,推出了MAUI(统一了Xamarin.Forms等),引入了热重载和最小API。C# 10.0 继续简化代码,引入了文件范围的命名空间、全局 using 指令、记录结构、插值字符串处理程序等,与 .NET 6 的性能主题相得益彰。
- .NET 7 - C# 11.0 (2022): 聚焦于性能提升,引入了用于构建云原生服务的Dapr集成等。C# 11.0 带来了原始字符串字面量、泛型数学、必需成员、列表模式等特性,为高性能数学计算和更严格的代码约束提供了支持。
- .NET 8 (LTS) - C# 12.0 (2023): 当前最新的稳定版,带来了前所未有的性能优化,原生AOT让应用启动极快,占用资源极少。C# 12.0 主要特性包括主构造函数(在任何 class 和 struct 中)、集合表达式、别名任意类型等,这些特性与 .NET 8 的原生 AOT 和云原生主题结合,共同致力于提升开发效率和运行时性能。
扩展—
LTS(长期支持版本)
在 .NET 的发布节奏中,微软采用了“奇偶版本”策略:
- LTS 版本: 每两年发布一次(如 .NET 6, .NET 8),提供长达三年的免费支持和补丁更新。这是生产环境、尤其是关键业务系统的首选,因为它保证了长期的稳定性和安全性。
- STS 版本: 或称为“当前”版本(如 .NET 7, .NET 9),提供为期六个月的短期支持。它们包含了最新的功能和性能改进,适合追求前沿技术的个人开发者或愿意频繁升级的团队进行探索。
.NET与AI/云原生
- AI 应用开发的首选平台之一
- Semantic Kernel(SK):这是微软推出的一个轻量级 SDK,允许你轻松地将大型语言模型(如 OpenAI GPT、Azure OpenAI)的 AI 功能集成到你的 .NET 应用中。你可以用 C# 编写插件(Plugins) 和规划(Plans),构建复杂的 AI 代理(Agent)。这块在将来的Azure云篇也会详细讲到;
- ML.NET:如果你需要构建自定义的机器学习模型,ML.NET 是一个开源的、跨平台的机器学习框架。它让 .NET 开发者无需离开熟悉的技术栈,就能进行模型训练、部署和消费;
- Azure AI 服务集成:通过官方的 .NET SDK,可以无缝地调用 Azure 上的视觉、语音、语言、决策等认知服务。
- 云原生技术的核心玩家
- 极致的性能与轻量级:.NET 8 的原生 AOT 编译技术能生成完全本地的可执行文件,启动速度极快(毫秒级),内存占用极低。这完美契合了云原生函数计算(如 Azure Functions)和微服务快速扩缩容的需求。
- 强大的容器化支持:.NET 镜像非常小巧,官方提供了针对不同场景(运行时、ASP.NET Core)的优化镜像。.NET 8 更进一步优化了容器内的 GC 和线程处理,提升了在 Kubernetes 等编排环境中运行的效率。
- 开发者体验的革命:ASP.NET Core 的最小 API 让编写微服务像写脚本一样简单;Blazor 则提供了全栈 Web UI 的解决方案,用 C# 统一前后端开发,极大地提升了开发效率。
.NET Framework和.NetCore/.Net区别
- .NET Framework 描述的是上层应用框架,底层只支持windows平台。BCL(basic class library)和CLR(common Language Runtime)都只有一个;
- 类库(Framework Class Library,FCL)就是.NET Framework内置的各种组件服务,如ASP.NET、MVC、WCF和WPF等组件,满足不同编程应用场景的需求;
- 基础类库(Base Class Library)BCL是FCL的一个子集,顾名思义就是一些比较基础、通用的类库,如基本数据类型、集合、线程、安全、字符串操作、网络操作、IO、XML操作等等,大多都包含在System命名空间下,如System.Text、System.IO。其他一些常用的名词,如核心 .NET 库、框架库、运行时库、共享框架,大多都指的是BCL;
- 公共语言运行库(Common Language Runtime)CLR,昨天好像介绍过了;

- .NET Core: .netcore 1.0-3.1,特点是3个CLR共存:.NET Framework,.NET Core,Xamarin

- .NET5:终结3个分支-.NET Framework/.Net Core/xamarin–Unified统一,一个CLR;.NET5

- .NET 6:因为.NET5 疫情期间发布,很多功能无法如期交付,未实现功能在.NET6中完成;

- .NET 7:进一步完成统一;

- .NET 8/9 的提升点,会在基础篇末尾详细介绍,目前我只也读过7的源码;.NET8

.NET9

再上点小图图这个路线图是园友"漫思"画的,这里借用下,极具参考性。原链接:https://www.cnblogs.com/sexintercourse/p/18176286

另外推荐一个online版本的:https://time.graphics/line/291016


被折叠的 条评论
为什么被折叠?



