如何实现 .NET Core 以支持多个操作系统
How .NET Core is implemented in order to support multiple operating systems
我想知道,为什么基于.Net framework 构建的应用程序不是Cross 平台(在操作系统级别),为什么基于.net core framework 构建的应用程序是CROSS 平台。
我知道为每个操作系统(Windows、Linux 和 mac os)创建了新的 CLR(运行时),这些操作系统特定的 CLR 将转换将通用 IL 转换为操作系统特定指令,这是唯一的新重大变化吗?
我不是在谈论 .net Core 的性能变化,而是想知道传统的 .Net 框架是如何在 OS 级别上使 cross-platform 成为 Operating系统 agnostic .Net Core.
围绕它做了一些研究(也在和@mason讨论(在评论中)),下面是具体的答案,我认为应该与大家分享。
.net 核心包含平台特定和平台中立的实现(库)。这是通过每个平台的单独实现和条件编译完成的。
One Such CoreFX(.NET Core 的基础 class 库):该库包含特定于平台和平台中立的代码。它的平台中立代码在所有平台之间共享。如:
- System.IO 和 System.Security.Cryptography.Algorithms 是
特定于平台,因为每个 OS 上的存储和加密 API 都不同。
- System.Collections 和 System.Linq 与平台无关。
另外,除了库之外,CLR(核心中的 CoreCLR)是特定于平台的。它建立在 OS 子系统之上,例如内存管理器和线程调度程序。
我想知道,为什么基于.Net framework 构建的应用程序不是Cross 平台(在操作系统级别),为什么基于.net core framework 构建的应用程序是CROSS 平台。
我知道为每个操作系统(Windows、Linux 和 mac os)创建了新的 CLR(运行时),这些操作系统特定的 CLR 将转换将通用 IL 转换为操作系统特定指令,这是唯一的新重大变化吗?
我不是在谈论 .net Core 的性能变化,而是想知道传统的 .Net 框架是如何在 OS 级别上使 cross-platform 成为 Operating系统 agnostic .Net Core.
围绕它做了一些研究(也在和@mason讨论(在评论中)),下面是具体的答案,我认为应该与大家分享。
.net 核心包含平台特定和平台中立的实现(库)。这是通过每个平台的单独实现和条件编译完成的。
One Such CoreFX(.NET Core 的基础 class 库):该库包含特定于平台和平台中立的代码。它的平台中立代码在所有平台之间共享。如:
- System.IO 和 System.Security.Cryptography.Algorithms 是 特定于平台,因为每个 OS 上的存储和加密 API 都不同。
- System.Collections 和 System.Linq 与平台无关。
另外,除了库之外,CLR(核心中的 CoreCLR)是特定于平台的。它建立在 OS 子系统之上,例如内存管理器和线程调度程序。