一、.Net Framework框架
C#、.Net Framework、CLR对应关系如下所示:
.Net Core是.Net Framework的下一个版本。
二、什么是.Net Core
微软官方对.Net Core的定义如下:
.NET Core是微软提供的一个开源的开发框架,支持跨平台,及可以在Windows、Linux和macOS等系统上开发和部署,是真正的跨平台。并且可以在硬件设备、云服务、嵌入式\物联网方案中进行使用。.NET Core的源代码在GitHub上面,由Microsoft和.NET社区共同维护。
.NET Core源代码地址:GitHub - dotnet/core: Home repository for .NET Core
三、.Net Core的组成部分
.Net Core主要有以下几部分组成:
NET Core Runtime:及.NET Core CLR。其与.NET Framework的CLR并没有多大区别,类型系统、进程管理、GC(垃圾回收)、JIT(RyuJIT编译器)等功能都是一样的,只是针对服务器系统做了相应的优化。现在.NET Framework CLR和.NET CoreCLR都在进行同步更新。
.NET Core Framework Libraries:及.NER Core框架类库。包括集合类、文件处理、XML处理等框架类库。
ASP.NET Runtime:及ASP.NET 运行时,提供框架以生成基于新式云的 Internet 连接的应用程序,例如 Web 应用、IoT 应用以及移动后端。
.NET Core CLI 工具和语言编译器(Roslyn 和 F#):提供 .NET Core 开发人员体验。
dotnet 工具:用于启动 .NET Core 应用和 CLI 工具。它选择运行时并托管运行时,提供程序集加载策略并启动应用和工具。
这些组件采用以下方式进行分步:
NET Core 运行时 -- 包括 .NET Core Runtime和框架库(.NET Core Framework Libraries)。
ASP.NET Core 运行时 -- 包括 ASP.NET Core 和 .NET Core 运行时(.NET Core Runtime)以及框架库(.NET Core Framework Libraries)。
.NET Core SDK -- 包括 .NET CLI 工具、ASP.NET Core 运行时以及 .NET Core 运行时和框架。
四、.NET Core特性
.NET Core具有以下特性:
跨平台:可以在Windows、Linux、macOS操作系统上面运行。
跨体系结构保持一致:在多个体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
灵活的部署方式:可以包含在应用或已安装的并行用户或计算机范围中。可搭配 Docker 容器使用。Portable applications(便携式应用),这种部署机制和传统的.NET Framework相似,只要目标平台上存在.NET Core Runtime即可。Self-contained application(自宿主应用):顾名思义,这种部署机制将应用和运行时共同打包,即便目标平台上没有安装.NET Core Runtime也能正常使用。
命令行工具(CLI):包括可用于本地开发和持续集成方案中的易于使用的命令行工具。
兼容性:.NET Core 通过 .NET Standard与 .NET Framework、Xamarin 和 Mono 兼容。
开源:.NET Core开放源代码,使用 MIT 和 Apache 2 许可证,由 Microsoft 依据 .NET Core 支持提供支持。
五、.Net Standard、.Net Framework、.Net Core关系
.Net Standard
.NET Standard 是一组由 .NET 实现的基类库实现的 API。更正式地说,它是构成协定统一集(这些协定是编写代码的依据)的特定 .NET API 组。这些协定在每个 .NET 实现中实现。这可实现不同 .NET 实现间的可移植性,有效地使代码可在任何位置运行。
.NET Standard 也是一个目标框架。如果代码面向 .NET Standard 版本,则它可在支持该 .NET Standard 版本的任何 .NET 实现上运行。
.Net Framework
.Net Framework 是自 2002 年起就已存在的原始 .NET 实现。它是当前 .NET 开发人员经常使用的 .NET Framework。4.5 版以及更高版本实现 .NET Standard,因此面向 .NET Standard 的代码都可在这些版本的 .NET Framework 上运行。它还包含一些特定于 Windows 的 API,如通过 Windows 窗体和 WPF 进行 Windows 桌面开发的 API。.NET Framework 非常适合用于生成 Windows 桌面应用程序。
.Net Core
.NET Core 是 .NET 的跨平台实现,专用于处理大规模的服务器和云工作负荷。可在 Windows、macOS 和 Linux 上运行。它实现 .NET Standard,因此面向 .NET Standard 的代码都可在 .NET Core 上运行。ASP.NET Core 在 .NET Core 上运行。
用一句话总结一下三者的关系:
.Net Standard是.Net基础类库(BCL)API规范,.Net Framework实现了这个API规范,.Net Core也实现了这个API规范,任何基于.Net Standard开发的类库,都可以在.Net Framework和.Net Core上面运行。
各版本对应关系如下: