我正在尝试学习 .NET 平台标准,但对于“不同平台”的概念感到很困惑。
我将尽力阐述我的观点。目前我了解的 .NET Framework 大致由 CLR、BCL 和支持软件组成,用于引导 CLR 并提供虚拟机与底层操作系统之间的接口。
因此,当我们使用 .NET Framework 进行编码时,我们确实会针对某个版本的框架进行编程,因为我们从 BCL 中使用的类型是随着该框架提供的,所以其取决于特定版本。
现在,就我所理解的而言,.NET Core 则完全不同。它并非像这样打包在一起。我们有 CoreCLR,它是一个轻量级 VM 用于运行 IL;CoreFX,是经过适当组织的 NuGet 包库;还有 DNX/DNVM/DNU,提供支持性的东西,如引导 CoreCLR 和与 OS 的接口。
无论如何,即使我们在 Windows 7、Windows 8 或者 Windows 10 上安装了框架,我们也是针对框架编程的。
现在,在 .NET 平台标准规范中,我们看到以下定义:
平台 - 如 .NET Framework 4.5、.NET Framework 4.6、Windows Phone 8.1、MonoTouch、UWP 等等。
之后我们看到一系列平台,包括:
- .NET Framework 2.0 - 4.6
- Windows 8
- Windows Phone 8.1
- Silverlight 4、5
- 基于 .NET Framework 4.5.1 - 4.6 的 DNX
- 基于 .NET Core 5.0 的 DNX
现在这完全把我搞糊涂了。我一直认为:我们针对 .NET Framework 进行编程,无论如何,框架就是框架。
但是这里有许多包括.NET框架在内的平台。例如,我们有Windows 8,但是等一下,将.NET运行在Windows 8上不仅仅意味着在任何其他操作系统上运行.NET?为什么它要与.NET Framework 2.0-4.6平台分开呢?
我们还有一个特定的平台DNX。这让我想知道:平台是指支持启动虚拟机并提供与操作系统接口相关的内容吗?还是平台包括虚拟机?
无论如何,可以看出我很困惑。这些平台到底是什么,以及它们如何与我现在对.NET Framework的了解相关联?另外,为什么.NET Framework 2.0-4.6被单独描述?除了.NET Core之外,难道不是这里描述的所有东西都是某个版本的.NET Framework吗?