.NET Core代碼執行

在本章中,我們將瞭解.NET Core的執行過程,並將其與.NET Framework進行比較。被管理的執行過程包括以下步驟。

  • 選擇一個編譯器
  • 編譯代碼成MSIL
  • 將MSIL編譯爲本地代碼
  • 運行代碼

注:感覺有點像Java的機制了。

參考下圖中的流程 -

.NET Core代碼執行

1. 選擇一個編譯器

  • 它是一個多語言執行環境,運行時支持各種數據類型和語言功能。
  • 要獲得公共語言運行時提供的好處,必須使用一個或多個定位運行時的語言編譯器。

2. 編譯代碼成MSIL

  • 編譯將您的源代碼翻譯成Microsoft中間語言(MSIL)並生成所需的元數據。
  • 元數據描述了代碼中的類型,包括每種類型的定義,每種類型成員的簽名,代碼引用的成員以及運行時在執行時使用的其他數據。
  • 運行時在執行過程中根據需要從文件以及框架類庫(FCL)中查找和提取元數據。

3. 將MSIL編譯爲本地代碼

  • 在執行時,即時(JIT)編譯器將MSIL轉換爲本地代碼。
  • 在編譯期間,代碼必須通過驗證過程,檢查MSIL和元數據,以確定代碼是否可以被確定爲類型安全的。

4. 運行代碼

  • 公共語言運行庫提供了執行過程的基礎結構和執行過程中可以使用的服務。
  • 在執行期間,託管代碼接收垃圾收集,安全性,與非託管代碼的互操作性,跨語言調試支持以及增強的部署和版本支持等服務。

.NET Core代碼執行過程

現在來看看一下如何使用.NET Core與.NET Framework進行代碼執行。在.NET Core中,這些組件的很多替代品都是.NET Framework的一部分。執行流程圖如下所示 -

.NET Core代碼執行

  • 現在在.NET Core中,我們有了一個新的編譯器系列,就像用於 C# 和VB的Roslyn一樣。
  • 如果想在.NET Core中使用F#,也可以使用新的F# 4.1編譯器。
  • 實際上,這些工具是不同的,如果使用C# 6或更高版本,也可以使用Roslyn和.NET Framework,因爲C#編譯器最多隻能支持C# 5。
  • 在.NET Core中,沒有框架類庫(FCL),所以使用了一組不同的庫,現在有了CoreFx。
  • CoreFx是.NET Core的類庫的重新實現。
  • 也有一個新的運行時間與.NET Core CoreCLR,並利用JIT編譯器。