.NET Core - 代码执行



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

  • 选择编译器
  • 将代码编译为 MSIL
  • 将 MSIL 编译为本地代码
  • 运行代码
Code Execution

选择编译器

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

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

将代码编译为 MSIL

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

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

  • 运行时根据需要在执行期间从文件以及框架类库 (FCL) 中查找并提取元数据。

将 MSIL 编译为本地代码

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

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

运行代码

  • 公共语言运行时提供支持执行的基础结构以及可在执行期间使用的服务。

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

.NET Core 代码执行过程

现在让我们了解一下代码如何与 .NET Core 相比 .NET Framework 执行。在 .NET Core 中,这些组件的许多替换都是 .NET Framework 的一部分。

.NET Core Code Execution
  • 在 .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 Framework 中已经拥有的所有这些组件。

  • 所以答案与 Microsoft 为什么实现 .NET Core 相同。

广告