.NET平台系列22:.NET Core/.NET5/.NET6 对比 .NET Framework
在我的博客《.NET平台系列2 .NET Framework 框架详解》与 《.NET平台系列7 .NET Core 体系结构详解》 两篇文章中分别详细介绍了.NET Framewrok与.NET Core 的核心构成以及各部件的组成与原理。本文通过其他维度更加直接的对比说明两者的差异。


.NET平台自诞生之日起就具备跨平台的能力。.NET Framework本身是一个跨平台的解决方案,在这一基础上它还支持C#和VB等编程语言,且这些语言共同遵守公共语言规范( Common Language Specification 简称CLS),最终生成的应用程序都会被编译成公共中间语言(Common Intermediate Language 简称CIL)或者MSIL(微软中间语言)执行。从多层架构设计的角度来看,如果想让它不仅可以在多种 Windows操作系统中运行,也可以在macOS、 Linux操作系统中运行,则主要需要修改架构底层关于操作系统的部分,而原有的多种编程语言实际上与所运行的操作系统关系很小。
对比 .NET Framework 的公共语言运行时(Common Language Runtime 简称CLR),.NETCore 重新设计了 CoreCLR,以及一个被称为 CoreFX 的基础类库( Base Class Library 简称BCL)。
.NET Framework在不断升级过程中使自己变得更加强大和完备,但是在另一方面也使得自己变得越来越臃肿。随着版本的不断升级,构成.NET Framework的应用模型、BCL和运行时(CLR)都在不断地膨胀(.NET Framework 2.0/3.x和.NET Framework 4.x分别采用CLR 2.0和CLR 4.0)

.NET Core 是借鉴 .NET Frmawork 的优秀思想与强大功能重新构建的新框架,体积自然要比.NET Framework小的多。如Windows Forms 和 Windows Presentation Foundation(WPF)可用于构建图形用户界面(GUI应用程序与Windows生态系统紧密相连,无法跨平台,因此将他们从 macOS 和 Linux 的 .NET Core 中移除了。

下图引用微软官方帮助文档中的一幅图,图中通过饼图和柱状图两种形式展示了 CoreFX 中专门针对各个操作系统(Windows、Unix、 Linux和OX)的C#代码比例和代码行数,可以看到90%的 CoreFX 代码是与操作系统无关的,所以我们在使用 ASP.NET Core时受不同操作系统的影响也同样会非常小。

在.NET Framework 时代,每发布一个重大版本,需要经历1年,2年,甚至3年。发版周期相对较长。

从《.NET Core发展历程》图中可以了解到自.NET Core 1.0于2016年6月26日正式发布,至2019年12发布.NET Core 3.1版本,基本上是每年发布一个大的版本。.NET5已经于20201年11月正式发布。微软.NET团队规划未来每年第四季度发布一个重大版本,其中奇数标记的为GA版本,偶数标记的为LTS版本。


参考文献:
- https://devblogs.microsoft.com/dotnet/introducing-net-5/
.NET平台系列22:.NET Core/.NET5/.NET6 对比 .NET Framework的更多相关文章
- .NET平台系列23:.NET Core/.NET5/.NET6 和 .NET Framework 的选择建议
系列目录 [已更新最新开发文章,点击查看详细] 有两种支持的 .NET 实现可用于生成服务器端应用: .NET Framework .NET Core/5+,包括 .NET Core..NET ...
- .NET 平台系列6 .NET Core 发展历程
系列目录 [已更新最新开发文章,点击查看详细] 在我的上一篇博客<.NET平台系列5 .NET Core 简介>中主要介绍了.NETCore的基本情况,主要包括.NET跨平台的缘由 ...
- .NET平台系列5 .NET Core 简介
系列目录 [已更新最新开发文章,点击查看详细] 自1995年互联网战略日以来最雄心勃勃的事业 -- 微软.NET战略, 2000年6月30日. 微软公司于2002年2月13日正式推出第一代.N ...
- .NET平台系列26:在 Windows 上安装 .NET Core/.NET5/.NET6
系列目录 [已更新最新开发文章,点击查看详细] 本文介绍如何在 Windows 上安装 .NET. .NET 由运行时和 SDK 组成. 运行时用于运行 .NET 应用,应用可能包含也可能不包 ...
- .NET平台系列27:在 Linux 上安装 .NET Core/.NET5/.NET6
系列目录 [已更新最新开发文章,点击查看详细] .NET 在不同的 Linux 发行版上可用. 大多数 Linux 平台和发行版每年都有一个主要版本,并提供用于安装 .NET 的包管理器. 本 ...
- .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目
系列目录 [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...
- .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
- .NET Core/.NET5/.NET6 开源项目汇总9:客户端跨平台UI框架
系列目录 [已更新最新开发文章,点击查看详细] .NET Core 实现了跨平台,支持在 Windwos.Linux.macOS上开发与部署,但是也仅限于Web应用程序.对于Windows桌面 ...
- .NET Core/.NET5/.NET6 开源项目汇总10:实用工具
系列目录 [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...
随机推荐
- hdu5248序列变换(二分+贪心)基础题
题意(中文的直接粘题意吧) 序 ...
- 发布 .NET 5 带运行时单文件应用时优化文件体积的方法
自 .NET 发布起,.NET Framework 运行环境就是其摆脱不掉的桎梏.后来有了 .NET Core ,微软终于将自带运行时和单文件程序带给了我们.即便如此,大部分情况下开发者仍然不太满意: ...
- C异常处理和C++异常处理的对比
每一种编译器实现异常处理的方式会有所不同,但是都是基于Windows的SEH异常处理.这里以MSC编译器为例. C异常处理 #include <Windows.h> int main(in ...
- EFCore之增删改查
1. 连接数据库 通过依赖注入配置应用程序,通过startup类的ConfigureService方法中的AddDbContext将EFCore添加到依赖注入容器 public void Config ...
- [bug] CM / CDH 主机运行状态不良情况
参考 https://blog.csdn.net/fhfkv8644/article/details/82383196 无法发出查询:Host Monitor 未运行 https://blog.csd ...
- ubuntu16.04 通过命令,修改屏幕分辨率
ubuntu16.04 通过命令,修改屏幕分辨率 l185979505 2016-10-19 08:15:54 20293 收藏 5展开第一次写博客,,,好激动,,首先通过命令: xrandr 查看可 ...
- 在Linux中通过Top运行进程查找最高内存和CPU使用率
按内存使用情况查找前15个进程,在批处理模式下为"top" 使用top命令查看有关当前状态,系统使用情况的更详细信息:正常运行时间,负载平均值和进程总数. 分类:Linux命令操作 ...
- ELK学习实验019:ELK使用redis缓存
1 安装一个redis服务 [root@node4 ~]# yum -y install redis 直接启动 [root@node4 ~]# systemctl restart redis [roo ...
- Linux服务之nginx服务篇二(搭建)
一.简易搭建安装步骤 0.检查环境 1.配置yum源 使用yum list nginx 检查yum源中是否有nginx安装包 #官方网络源需要安装epel-* #或使用251的adv源(老师的yum源 ...
- mysql示例及练习2
#创建数据库并应用create database shopdb;use shopdb;#创建表customerscreate table customers(c_id int primary key ...