如何实现.NET Core以支持多个操作系统

时间:2019-04-09 11:17:33

标签: asp.net asp.net-core asp.net-core-2.0

我想知道,为什么在.Net框架上构建的应用程序不是跨平台(在操作系统级别),为什么在.net核心框架上构建的应用程序是CROSS平台。

我知道将为每个操作系统(Windows,Linux和Mac OS)创建新的CLR(运行时)。这些特定于操作系统的CLR会将公共IL转换为特定于操作系统的指令,所以这是唯一的新重大变化吗?

我不是在谈论.net Core的性能变化,而是想知道,传统的.net框架如何在OS级别上实现跨平台,从而使其成为与操作系统无关的.Net Core。

1 个答案:

答案 0 :(得分:0)

围绕它做一些研究(也在与@mason讨论(在评论中)),以下是具体答案,我认为,我应该与大家分享。

.net核心包含特定于平台且与平台无关的实现(库)。这是通过每个平台的单独实现和条件编译完成的。

一个这样的CoreFX(.NET Core的基础类库):该库包含特定于平台的代码和与平台无关的代码。其与平台无关的代码在所有平台之间共享。如:

  • System.IO和System.Security.Cryptography.Algorithms是 特定于平台的,因为每个操作系统上的存储和加密API都不相同。
  • System.Collections和System.Linq与平台无关。

此外,除库外,CLR的(内核中的CoreCLR)是特定于平台的。它建立在OS子系统之上,例如内存管理器和线程调度程序。