最全.NET Core 、.NET 5、.NET 6和.NET 7简介和区别

.NET是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、Windows WPF、Windows窗体、通用 Windows平台 (UWP)、游戏、物联网 (IoT)、机器学习、控制台应用、Windows服务。框架主要包括:.NET Framework、.NET Standard、.NET Core、.NET 5/6/7 。本主要介绍一下.NET Core 、 .NET 5、.NET 6和.NET 7简介及区别。

1、.NET Core

.NET Core是适用于 Windows、Linux 和 macOS 的免费、开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台能力的应用程序开发框架 (Application Framework)。

.NET Core 是由许多项目所组成,除了基本的类库(Core FX) 之外,也包含采用 RyuJIT 编译的运行平台 Core CLR、编译器平台.NET Compiler Platform、采用 AOT 编译技术运行最优化的包 Core RT (.NET Core Runtime),以及跨平台的 MSIL 编译器 LLILC (LLVM-based MSIL Compiler) 等项目。NET Core 3.1是一个长期支持(LTS)版本,将支持三年。

NET Core 3.1支持的平台:

  • Alpine: 3.10+

  • Debian: 9+

  • Ubuntu: 16.04+

  • Fedora: 29+

  • centOS: 7+

  • RHEL: 6+

  • openSUSE: 15+

  • SUSE Enterprise Linux (SLES): 12 SP2+

  • macOS: 10.13+

  • Windows Client: 7, 8.1, 10 (1607+)

  • Windows Server: 2012 R2+

注意:Windows窗体和WPF应用程序仅在Windows上运行和支持。

CPU架构支持:

  • x64 支持 Windows, macOS, 和 Linux

  • x86 支持 Windows

  • ARM32 支持 Windows 和 Linux

  • ARM64 支持 Linux (kernel 4.14+)

注意: 需要确保.NET Core 3.1 ARM64部署使用Linux内核4.14版本或更高版本。例如,Ubuntu 18.04满足这个要求,但16.04是不满足的。

参考文档:https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/

2、.NET 5

.NET 5 是继 3.1 之后 .NET Core 的下一代的重要版本。命名为.NET 5出于以下两个原因:

1)跳过了版本编号 4.x,以避免与 .NET Framework 4.x 混淆。

2)从名称中删除了“Core”,是为了强调这是 .NET 未来的主要实现。与 .NET Core 或 .NET Framework 相比,.NET 5 会支持类型更多的应用和平台。

ASP.NET Core 5.0 虽以 .NET 5 为基础,但保留了名称“Core”以避免与 ASP.NET MVC 5 混淆。同理,Entity Framework Core 5.0 保留了名称“Core”,以避免与 Entity Framework 5 和 Entity Framework 6 混淆。

.NET 5 不会替换 .NET Framework,.NET 5 及更高版本是 .NET 未来的主要实现,但 .NET Framework 4.x 仍受支持。目前没有计划将以下技术从 .NET Framework 移植到 .NET 5,但 .NET 中有一些替代项:

技术

建议使用的替代项

Web 窗体

ASP.NET Core

Razor

Razor Pages

Windows 工作流 (WF)

Elsa-Workflows

.NET 5 不会替代 .NET Standard,新的应用程序开发可为所有项目类型(包括类库)指定 net5.0 目标框架名字对象 (TFM)。在 .NET 5 工作负载之间共享代码得到了简化,因为你只需要 net5.0 TFM。对于 .NET 5 应用和库,net5.0 TFM 合并和替换了 netcoreapp 和 netstandard TFM。但是,如果计划在 .NET Framework、.NET Core 和 .NET 5 工作负载之间共享代码,可以通过将 netstandard2.0 指定为 TFM 来实现此目的。

编写 .NET 5 应用的开发人员将有权访问最新的 C# 版本和功能。.NET 5 与 C# 9 搭配,为语言带来了许多新功能。

参考文档:https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-5

3、.NET 6

.NET 6 提供 .NET 统一计划的最终部分,该计划在 .NET 5 中启动。.NET 6 在移动、桌面、IoT 和云应用之间统一了 SDK、基础库和运行时。除了这方面的统一以外,.NET 6 生态系统还提供了以下功能:

1)简化开发

轻松入门。C# 10 中的新语言功能可减少需要编写的代码量。利用 Web 堆栈和最小 API 的投资,可以轻松地快速编写更小、更快速的微服务。

2)更佳的性能

.NET 6 是最快的完整堆栈 Web 框架,如果在云中运行,则会降低计算成本。

3)终极工作效率

.Net 6 和 Visual Studio 2022 提供热重载、新的 git 工具、智能代码编辑、可靠的诊断和测试工具以及更好的团队协作。

.NET 6 将作为长期支持 (LTS) 版本得到三年的支持。.NET 6 重写 System.IO.FileStream 类型,以便在 Windows 上提供更佳的性能和可靠性。现在 FileStream 绝不会在为 Windows 上的异步 I/O 创建时阻止。按配置优化 (PGO) 是指 JIT 编译器根据最常使用的类型和代码路径生成优化后的代码。.NET 6 引入了动态 PGO。动态 PGO 与分层编译配合运作,以根据层级 0 中实施的其他检测来进一步优化代码。动态 PGO 默认情况下处于禁用状态,但可以使用 DOTNET_TieredPGO环境变量来启用它。

.NET 6 引入了 Crossgen2,它是已被删除的 Crossgen 的后继版本。Crossgen 和 Crossgen2 是用于提供预先 (AOT) 编译的工具,可改进应用的启动时间。Crossgen2 是用 C# (而不是 C++)编写的,可执行之前的版本无法实现的分析和优化。

.NET 6 版本支持 macOS Arm64(或“Apple Silicon”)和 Windows Arm64 操作系统,支持本机 Arm64 执行和 x64 模拟。此外,x64 和 Arm64 .NET 安装程序现在会并行安装。

使用热重载功能,可以修改应用源代码,并立即将这些更改应用到正在运行的应用。此功能的目的是避免在编辑之间重新启动应用程序,从而提高工作效率。热重载在 Visual Studio 2022 和 dotnet watch 命令行工具中可用。热重载适用于大多数类型的 .NET 应用以及 C#、Visual Basic 和 C++ 源代码。

参考文档:https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-6

4、.NET 7

.NET 7 为应用程序带来了更高的性能和C# 11/ F# 7、.NET MAUI、ASP.NET Core/Blazor, Web api, WinForms, WPF等等。有了.NET 7\还可以轻松地将.NET 7项目进行容器化,在GitHub操作中设置CI/CD工作流,并实现云原生的可观察性。

.NET仍然是最快、最受喜爱和信任的平台之一,它拥有庞大的.NET包生态系统,包括超过33万个包。

.NET 7版本与其他产品、库和平台一起发布,包括:

  • ASP.NET Core 7

  • Entity Framework Core 7

  • .NET MAUI

  • Windows Forms

  • WPF

  • Orleans 7

更新与优化包括如下:

1).NET MAUI

.NET多平台应用程序 UI (MAUI) 将 Android、iOS、macOS 和 Windows API 统一到一个API中,开发者可以编写一个在多平台上本机运行的应用。作为.NET 7的一部分,.NET MAUI提供了一个项目来处理跨设备及其平台的多目标。

2)ARM64

ET可帮助开发者构建在ARM设备上运行的应用,.NET 7将迎来多项改进。

3)性能

.NET 7是目前最快的.NET。.NET 7对反射、堆栈替换 (OSR)、启动时间、本机 AOT、循环优化和许多其他领域进行了超过一千项影响性能的改进。

5、.NET Framework、.NET Standard、.NET Core与.NET 5/6/7 区别

.NET Framework框架只能在windows上运行,但各种跨平台的需求原来越强烈,不能满足跨平台、模块化的需求。微软把.NET Framework可以跨平台的部分提取出来,封装成标准库就是.NET Standard。无论哪个系统平台上,标准库里内容是完全通用的。但其他系统的特有的部分在Windows中也没有,所以在标准库.NET Standard基上开发出来.NET Core。.NET Core稳定后,改名成.NET 5/6/7。

1).NET Core

适用于windows、linux、macos操作系统的免费开源托管的计算软件框架。最初是为了支持ASP.NET Core而创建的。.NET Core可以在Windows、Linux和macOS上运行,并且支持多种编程语言,如C#、F#和Visual Basic。

2).NET Standard

基础的规范标准,把.NET Framework的某些程序集对应到.NET Core。如果本来就是.NET Core以上的版本就没必要使用.NET Standard。

3).NET 5/6/7

.NET Core的稳定版本 官方也有文档说明如何 从 ASP.NET Core 3.1 迁移到 6.0。

.NET 5是.NET Core的下一个版本,它是一个统一的开发平台,用于构建应用程序和服务,可以在Windows、Linux和macOS上运行。.NET 5支持多种编程语言,包括C#、F#、Visual Basic和C++/CLI。

.NET 6是.NET 5的后续版本,它将在2021年发布。.NET 6将包括更多的功能和改进,如更好的性能、更好的可靠性、更好的安全性和更好的开发人员体验。

.NET 7是.NET 6的后续版本,它将包括更多的功能和改进,以进一步提高性能、可靠性、安全性和开发人员体验。

出处:https://www.cjavapy.com/article/2823/

来源公众号:DotNet开发跳槽

原文链接:https://www.cnblogs.com/xbhp/p/17286028.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:最全.NET Core 、.NET 5、.NET 6和.NET 7简介和区别 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • C# 定时器定时更新的简单实例

    C#定时器定时更新的简单实例 在C#中,我们可以使用定时器来定时执行某些操作。本文将介绍如何使用定时器定时更新,包括以下步骤: 创建WinForms应用程序 添加定时器控件 实现定时更新 1. 创建WinForms应用程序 首先,我们需要创建一个WinForms应用程序。可以使用Visual Studio创建一个新的WinForms应用程序。以下是具体步骤:…

    C# 2023年5月15日
    00
  • c#高效率导出多维表头excel的实例代码

    c#高效率导出多维表头excel的实例代码 介绍 在实际开发过程中,我们常常遇到需要将数据导出到excel的场景。而有些情况下,导出的excel中可能会有多维表头,这时候我们需要一种高效的方法来实现这个功能。本文将介绍一种使用C#语言实现高效率导出多维表头Excel的实例代码。 准备工作 在该实例的实现中,我们需要使用到两个第三方库,分别是EPPlus和Cl…

    C# 2023年5月15日
    00
  • C# 限制输入为字母或数字以及长度

    日常开发过程中,验证字符的合法性一直是一个必不可少的步骤,以前都是在用户输入完再做判断,不仅麻烦在不符合标准的时候还要提示用户修改,体验很差,为什么不在输入的时候加以限制呢? 以 Winform的TextBox控件为例,这里提供两种方案: 通过字符匹配 正则表达式 在用户输入时限制,所以选用KeyPress事件。 字符匹配 private void txt_…

    C# 2023年4月19日
    00
  • c# 泛型类型参数与约束的深入分析

    C# 泛型类型参数与约束的深入分析 泛型类型参数 C# 泛型是指在编译时不确定数据类型,而在运行时再确定数据类型的一种机制。可以通过泛型类型参数来定义泛型类型。泛型类型参数在定义泛型类型时作为占位符使用。 具体来说,泛型类型参数的格式如下所示: class MyGenericClass<T> { } 在上述代码中,<T> 就是一个泛型…

    C# 2023年6月7日
    00
  • 本人常用的asp代码 原创

    “本人常用的ASP代码原创”攻略 什么是ASP? ASP(Active Server Pages)是微软公司开发的动态网页技术。通过使用ASP,可以在网页中嵌入服务器端脚本代码,并将动态产生的结果发送回客户端浏览器。 如何使用ASP? 要使用ASP,需要一台安装了IIS(Internet Information Services)服务器软件的Windows计…

    C# 2023年5月31日
    00
  • C#获取视频某一帧的缩略图的方法

    C#获取视频某一帧的缩略图的方法 在C#中,我们可以使用FFmpeg库和GDI+库来获取视频某一帧的缩略图。本文将提供详细的“C#获取视频某一帧的缩略图的方法”的完整攻略,包括如何使用FFmpeg库和GDI+库获取视频某一帧的缩略图,以及两个示例代码。 使用FFmpeg库获取视频某一帧的缩略图 在使用FFmpeg库获取视频某一帧的缩略图时,我们可以使用以下步…

    C# 2023年5月15日
    00
  • C# 如何调用C++ dll string类型返回

    C# 调用 C++ DLL 的过程中,若遇到需要返回 string 类型的情况,可以使用字符缓冲区来传递字符串,并通过指针参数来返回。 以下为详细步骤: 定义 C++ 端的 DLL 接口函数 在 C++ 中,需要定义一个导出函数用于将 C# 中的字符串传递到 DLL 中,例如以下代码段: // Example.cpp extern "C"…

    C# 2023年6月6日
    00
  • C#如何防止程序多次运行的技巧

    C#如何防止程序多次运行的技巧有多种,下面我们将介绍两种实现方法。 方法一:利用文件锁 利用文件锁是一种简单有效的防止程序多次运行的技巧。具体实现方法如下: 首先在程序的入口处创建一个文件,例如使用FileStream类创建一个空的文件,命名为lockfile: using System.IO; // … FileStream fs = new File…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部