.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 相同。

廣告

© . All rights reserved.