在本章中,我們將了解.NET Core的執行過程,並將其與.NET Framework進行比較。被管理的執行過程包括以下步驟。
- 選擇一個編譯器
- 編譯程式碼成MSIL
- 將MSIL編譯為原生代碼
- 執行程式碼
註:感覺有點像Java的機制了。
參考下圖中的流程 -
1. 選擇一個編譯器
- 它是一個多語言執行環境,執行時支援各種資料型別和語言功能。
- 要獲得公共語言執行時提供的好處,必須使用一個或多個定位執行時的語言編譯器。
2. 編譯程式碼成MSIL
- 編譯將您的原始碼翻譯成Microsoft中間語言(MSIL)並生成所需的後設資料。
- 後設資料描述了程式碼中的型別,包括每種型別的定義,每種型別成員的簽名,程式碼參照的成員以及執行時在執行時使用的其他資料。
- 執行時在執行過程中根據需要從檔案以及框架類庫(FCL)中查詢和提取後設資料。
3. 將MSIL編譯為原生代碼
- 在執行時,即時(JIT)編譯器將MSIL轉換為原生代碼。
- 在編譯期間,程式碼必須通過驗證過程,檢查MSIL和後設資料,以確定程式碼是否可以被確定為型別安全的。
4. 執行程式碼
- 公共語言執行庫提供了執行過程的基礎結構和執行過程中可以使用的服務。
- 在執行期間,受控代碼接收垃圾收集,安全性,與非受控代碼的互操作性,跨語言偵錯支援以及增強的部署和版本支援等服務。
.NET Core程式碼執行過程
現在來看看一下如何使用.NET Core與.NET Framework進行程式碼執行。在.NET Core中,這些元件的很多替代品都是.NET Framework的一部分。執行流程圖如下所示 -
- 現在在.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編譯器。