在我的博客《.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的更多相关文章

  1. .NET平台系列5 .NET Core 简介

    系列目录     [已更新最新开发文章,点击查看详细] 自1995年互联网战略日以来最雄心勃勃的事业 -- 微软.NET战略, 2000年6月30日. 微软公司于2002年2月13日正式推出第一代.N ...

  2. .NET6 平台系列4 .NET开源之路

    系列目录     [已更新最新开发文章,点击查看详细] .NET平台是微软于2000年推出的Windows操作系统的应用软件开发框架,发展至今形成巨大的技术栈,涉及多语言(支持C#.F#.VB.NET ...

  3. VMCloud云平台 系列博文

    VMCloud云平台 系列博文http://blog.51cto.com/zt/644http://blog.51cto.com/zt/650 http://ljbaby.blog.51cto.com ...

  4. Microsoft Azure 微软云平台系列新品发布

    在移动为先,云为先的今天,微软为拥抱云文化的企业提供了技术和工具.利用创新且全面的移动解决方案和开发者工具,微软有独到之处,它帮助所有客户在云为先时代中发现潜在价值. 正如希望加快云创新步伐的你们所期 ...

  5. Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core

    第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用. 官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutori ...

  6. C# 数据操作系列 - 6 EF Core 配置映射关系

    0. 前言 在<C# 数据操作系列 - 5. EF Core 入门>篇中,我们简单的通过两个类演示了一下EF增删改查等功能.细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端 ...

  7. C# 数据操作系列 - 8. EF Core的增删改查

    0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置. 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法. 1 ...

  8. Windows平台部署Asp.Net Core应用

    一. 简介 Asp.Net Core 部署方式有两种:依赖框架和独立部署. 1. 框架依赖的部署: 顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core. 由于 ...

  9. ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET 5.0 将改名为 ASP.NET Core 1.0 ASP.NET MVC 6  将改名为 ASP.NET MVC Core 1.0 Entity Framework 7.0    将 ...

  10. [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...

随机推荐

  1. SharePoint2016如何使用策略进行文档归档

    前言 最近项目用户需要提供文档按照日期或标题关键字进行对应的文档归档操作,为了实施这个操作,需要准备2个文档库,我这里准备了如下文档库: 1. 测试文档库:在测试文档中上传几篇文档,如下图: 2. 我 ...

  2. lucas定理,组合数学问题

    对于C(n, m) mod p.这里的n,m,p(p为素数)都很大的情况.就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了. 这里用到Lusac定理 ...

  3. VS小技巧

    1."清理解决方案":在对程序进行分发.上传时时常需要压缩解决方案文件夹,这时如果还嫌文件太大,可以在VS里右键解决方案---清理解决方.完成后,则该解决方案下的所有项目的将所有中 ...

  4. HDU3977(斐波那契数列模n的循环节长度)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3977 题意:求斐波那契数列模p的循环节长度,注意p最大是2*10^9,但是它的素因子小于10^6. 分析过 ...

  5. Mybatis学习笔记(一) 之框架原理

    原生态JDBC编程中问题总结 1.单独使用jdbc连接数据库 maven依赖包: <!-- mysql --> <dependency> <groupId>mysq ...

  6. RDLC系列(一)ASP.NET RDLC 报表自定义数据源

    最近一段时间开发ERP系统中要用到不少报表打印,在网上找了一圈发现想些好用的报表控件大部分要收费,一些面免费要么不好用要么IE8不兼容,最后还是用了微软自带的RDLC报表,把自己遇到的坑和技巧整理分享 ...

  7. 使用 Jaeger 完成服务间的链路追踪

    世上本没有路,走的人多了,便变成了路 -- 鲁迅     本次讨论的话题就是需要在各个服务之间踏出条"路",让问题有"路"可循. 至于为什么用 jaeger.. ...

  8. OC字典的使用

    在OC中,字符串.数组.字典是最常见的对象类型,但是在这三个当中,字典的用法相对较少,因为字典的属性和方法比较少,但是一个字典的用法比较复杂,因为在一个字典当中,既可以包含字符串,也可以包含数组,数组 ...

  9. 框架源码系列九:依赖注入DI、三种Bean配置方式的注册和实例化过程

    一.依赖注入DI 学习目标1)搞清楚构造参数依赖注入的过程及类2)搞清楚注解方式的属性依赖注入在哪里完成的.学习思路1)思考我们手写时是如何做的2)读 spring 源码对比看它的实现3)Spring ...

  10. BZOJ1127 POI2008KUP(悬线法)

    首先显然地,如果某个格子的权值超过2k,其一定不在答案之中:如果在[k,2k]中,其自身就可以作为答案.那么现在我们只需要考虑所选权值都小于k的情况. 可以发现一个结论:若存在一个权值都小于k的矩阵其 ...