.NET Core – 代码执行

.NET Core – 代码执行


在本章中,我们将了解 .NET Core 的执行过程,并将其与 .NET Framework 进行比较。托管执行过程包括以下步骤。

  • 选择编译器
  • 将代码编译为 MSIL
  • 将 MSIL 编译为本机代码
  • 运行代码

代码执行

选择编译器

  • 它是一个多语言执行环境,运行时支持多种数据类型和语言特性。

  • 要获得公共语言运行时提供的好处,您必须使用一种或多种面向运行时的语言编译器。

将代码编译为 MSIL

  • 编译会将您的源代码转换为 Microsoft 中间语言 (MSIL) 并生成所需的元数据。

  • 元数据描述代码中的类型,包括每种类型的定义、每种类型成员的签名、代码引用的成员以及运行时在执行时使用的其他数据。

  • 运行时在执行期间根据需要从文件和框架类库 (FCL) 中定位和提取元数据。

将 MSIL 编译为本机代码

  • 在执行时,即时 (JIT) 编译器将 MSIL 转换为本机代码。

  • 在此编译期间,代码必须通过检查 MSIL 和元数据的验证过程,以确定代码是否可以确定为类型安全的。

运行代码

  • 公共语言运行时提供了使执行能够发生的基础结构以及可以在执行期间使用的服务。

  • 在执行期间,托管代码接收诸如垃圾收集、安全性、与非托管代码的互操作性、跨语言调试支持以及增强的部署和版本控制支持等服务。

.NET Core 代码执行过程

现在让我们将代码与 .NET Framework 相比如何使用 .NET Core 执行。在 .NET Core 中,这些组件有很多替代品,它们是 .NET Framework 的一部分。

.NET Core 代码执行

  • 在 .NET Core 中,现在我们有一系列新的编译器,就像我们有用于 C# 和 VB 的 Roslyn。

  • 如果要将 F# 与 .NET Core 结合使用,还可以使用新的 F# 4.1 编译器。

  • 实际上这些工具是不同的,如果我们使用 C# 6 或更高版本,我们也可以将 Roslyn 与 .NET Framework 一起使用,因为 C# 编译器最多只能支持 C# 5。

  • 在 .NET Core 中,我们没有框架类库 (FCL),因此使用了一组不同的库,我们现在拥有 CoreFx。

  • CoreFx 是 .NET Core 类库的重新实现。

  • 我们还有一个新的 .NET Core 运行时,称为 CoreCLR,并利用了 JIT 编译器。

  • 现在的问题是,为什么我们要重新实现 .NET 框架中已有的所有这些组件。

  • 所以答案与微软实施 .NET Core 的原因相同。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁