.NET 術語 1. AOT 預編譯器。與 JIT 類似,此編譯器還可將 IL 轉換為機器代碼。 與 JIT 編譯相比,AOT 編譯在應用程式執行前進行並且通常在不同電腦上執行。 由於在運行時 AOT 工具鏈不編譯,因此它們不需要最大程度地減少編譯所花費的時間。 這意味著它們可花更多的時間進行優化 ...
.NET 術語
1. AOT
預編譯器。
與 JIT 類似,此編譯器還可將 IL 轉換為機器代碼。 與 JIT 編譯相比,AOT 編譯在應用程式執行前進行並且通常在不同電腦上執行。 由於在運行時 AOT 工具鏈不編譯,因此它們不需要最大程度地減少編譯所花費的時間。 這意味著它們可花更多的時間進行優化。 由於 AOT 的上下文是整個應用程式,因此 AOT 編譯器還會執行跨模塊鏈接和全程式分析,這意味著之後會進行所有引用並會生成單個可執行文件。
2. ASP.NET
隨 .NET Framework 一起提供的原始 ASP.NET 實現。
有時 ASP.NET 是一個涵蓋性術語,指包含 ASP.NET Core 在內的兩個 ASP.NET 實現。
3. ASP.NET Core
.NET Core 上生成的跨平臺、高性能、 開放源 ASP.NET 實現。
4. 程式集
.dll/.exe 文件,其中包含一組可由應用程式或其他程式集調用的 API。
程式集可以包括介面、類、結構、枚舉和委托等類型。 有時,項目的 bin 文件夾中的程式集被稱為二進位文件。
5. CLR
公共語言運行時。
確切含義取決於上下文,但它通常指 .NET Framework 的運行時。 CLR 處理記憶體分配和管理。 CLR 也是一個虛擬機,不僅可執行應用,還可使用 JIT 編譯器快速生成和編譯代碼。 當前的 Microsoft CLR 實現僅限 Windows。
6. CoreCLR
.NET Core 公共語言運行時。
此 CLR 是採用與 CLR 相同的基本代碼生成的。 最初,CoreCLR 是 Silverlight 的運行時,專為在多個平臺(特別是 Windows 和 OS X)上運行而開發。CoreCLR 現屬於 .NET Core 並表示 CLR 的簡化版本。 它仍是跨平臺運行時,現包括針對許多 Linux 分發的支持。 CoreCLR 也是具有 JIT 和代碼執行功能的虛擬機。
7. CoreFX
.NET Core 基類庫 (BCL)
一組構成 System.(在一定的程度上構成 Microsoft.)命名空間的庫。 BCL 是用於生成 ASP.NET Core 等較高級應用程式框架的較低級通用框架。 .NET Core BCL 的源代碼包含在 CoreFX 存儲庫中。 但大部分 .NET Core API 也可在 .NET Framework 中使用,因此可將 CoreFX 視為 .NET Framework BCL 的一個分支。
8. CoreRT
.NET Core 運行時。
與 CLR/CoreCLR 相比,CoreRT 不是虛擬機,這意味著它不包含用於快速生成並運行代碼的功能,因為它不包括 JIT。 但它包含 GC 以及運行時類型標識 (RTTI) 和反射功能。 只是由於設計有類型系統,因此並不需要元數據反射功能。 包含這些功能使它具有 AOT 工具鏈,該工具鏈可去除多餘的元數據,更重要的是可識別應用不使用的代碼。
9. 跨平臺
能夠開發並執行可在多個不同操作系統(如 Linux、Windows 和 iOS)上使用的應用程式,而無需專門針對每個操作系統進行重新編寫。 這樣,可以在不同平臺上的應用程式之間重覆使用代碼並保持一致性。
10. 生態系統
所有針對給定技術生成和運行應用程式的運行時軟體、開發工具和社區資源。
11. 框架
一般指一個綜合 API 集合,便於開發和部署基於特定技術的應用程式。 從此常規意義上來說,ASP.NET Core 和 Windows 窗體都是示例應用程式框架。
12. “GC”
垃圾回收器。
垃圾回收器是自動記憶體管理的實現。 GC 可釋放對象占用的不再使用的記憶體。
13. IL
中間語言。
C# 等較高級的 .NET 語言編譯為稱為中間語言 (IL) 的硬體無關性指令集。 IL 有時被稱為 MSIL (Microsoft IL) 或 CIL(通用 IL)。
14. JIT
實時編譯器。
與 AOT 類似,此編譯器將 IL 轉換為處理器可理解的電腦代碼。 與 AOT 不同,JIT 編譯在需要運行代碼的同一臺電腦上按需執行。 由於 JIT 編譯在應用程式的執行過程中發生,因此編譯時是運行時的一部分。 因此,JIT 編譯器需要平衡優化代碼所花費的時間與生成代碼時可節約的時間。 但 JIT 知道實際硬體,這樣開發人員就無需提供不同的實現。
15 .NET 實現
.NET 的實現包括以下項:
一個或多個運行時。 示例:CLR、CoreCLR、CoreRT。
實現 .NET Standard 的某版本並且可能包含其他 API 的類庫。 示例:.NET Framework 基類庫、.NET Core 基類庫。
可選擇包含一個或多個應用程式框架。 示例: ASP.NET、Windows 窗體和 WPF 包含在 .NET Framework 中。
可包含開發工具。 某些開發工具在多個實現之間共用。
.NET 實現的示例:
.NET Framework
.NET Core
通用 Windows 平臺 (UWP)
16. 庫
可由應用或其他庫調用的 API 集合。 .NET 庫由一個或多個程式集組成。
詞庫和框架通常作同義詞使用。
17. 元包
一個 NuGet 包,沒有自己的庫,而只是一個依賴項列表。 所含包可選擇建立目標框架的 API。
18. Mono
Mono 是主要在需要小型運行時使用的開放源、跨平臺 .NET 實現。 它是運行時,在 Android、Mac、iOS、tvOS 和 watchOS 上為 Xamarin 應用程式提供技術支持,主要針對記憶體占用少的應用程式。
它支持所有當前已發佈的 .NET Standard 版本。
以前,Mono 實現更大的 .NET Framework API 並模擬一些 Unix 上最常用的功能。 有時使用它運行依賴 Unix 上的這些功能的 .NET 應用程式。
Mono 通常與實時編譯器一起使用,但它也提供在 iOS 之類的平臺使用的完整靜態編譯器(預先編譯)。
19 .NET
.NET Standard 和所有 .NET 實現及工作負荷的涵蓋性術語。 始終採用大寫形式,請勿使用“.Net”。
20 .NET Core
一種跨平臺、高性能的開放源 .NET 實現。 包括 Core 公共語言運行時 (CoreCLR)、Core AOT 運行時(正在開發的 CoreRT)、Core 基類庫和 Core SDK。
21 .NET Core CLI
用於開發 .NET Core 應用程式的跨平臺工具鏈。
22 .NET Core SDK
一組庫和工具,開發人員可用其創建 .NET Core 應用程式和庫。 包括用於生成應用的 .NET Core CLI、用於生成和運行應用的 .NET Core 庫以及運行 CLI 命令和運行應用程式的 dotnet 可執行文件 (dotnet.exe)。
23 .NET Framework
僅在 Windows 上運行的 .NET 實現。 包括公共語言運行時 (CLR)、基類庫和 ASP.NET、Windows 窗體和 WPF 之類的應用程式框架庫。
24 .NET Native
編譯器工具鏈,可預先 (AOT) 生成,而非實時 (JIT) 生成本機代碼。
編譯採用與 C++ 編譯器和鏈接器類似的工作方式在開發人員電腦上進行。 它刪除了未使用的代碼,留出更多時間進行優化。 它從庫中提取代碼,將它們合併到可執行文件中。 結果是表示整個應用的單個模塊。
UWP 是 .NET Native 支持的首個應用程式框架。 現在,我們支持為 Windows、macOS 和 Linux 生成本機控制台應用。
25 .NET Standard
在每個 .NET 實現中都可用的 .NET API 正式規範。
.NET Standard 規範有時被稱為文檔中的庫。 由於庫不僅包括規範(介面),還包括 API 實現,所以會誤將 .NET Standard 稱為“庫”。 我們計劃從本文檔中去除該用法,引用 .NET Standard 元包 (NETStandard.Library) 的名稱除外。
26. NGEN
本機(映像)生成。
可將此方法視為永久性 JIT 編譯器。 它通常在執行代碼的電腦上編譯該代碼,但通常在安裝時進行編譯。
27. 包
NuGet 包 — 或只是一個包 — 是一個 .zip 文件,其中具有一個或多個名稱相同的程式集以及作者姓名等其他元數據。
.zip 文件的擴展名為 .nupkg,且可以包含在多個目標框架和版本中使用的文件(如 .dll 文件和 .xml 文件)。 在應用或庫中安裝時,會根據應用或庫指定的目標框架選擇相應的文件。 定義介面的文件位於 ref 文件夾,而定義實現的文件位於 lib文件夾。
28. 平臺
操作系統以及運行它的硬體,例如 Windows、macOS、Linux、iOS 和 Android。
29. Runtime — 運行時
用於托管程式的執行環境。
OS 屬於運行時環境,但不屬於 .NET 運行時。 下麵是 .NET 運行時的一些示例:
公共語言運行時 (CLR)
Core 公共語言運行時 (CoreCLR)
.NET Native(適用於 UWP)
Mono 運行時
30. 堆棧
一組編程方法,一起用於生成並運行應用程式。
“.NET 堆棧”指 .NET Standard 和所有 .NET 實現。 短語“一個 .NET 堆棧”可能指一種 .NET 實現。
31. Target Framework — 目標 Framework
.NET 應用或庫依賴的 API 集合。
應用或庫可將某版本的 .NET Standard(例如 .NET Standard 2.0)作為目標,這是所有 .NET 實現中一組標準化 API 的規範。 應用或庫還能以特定 .NET 的某版本實現為目標,這樣便可獲得特定於實現的 API 的訪問許可權。 例如,面向 Xamarin.iOS 的應用有權訪問 Xamarin 提供的 iOS API 包裝器。
對於某些目標框架(例如 .NET Framework),可用 API 由 .NET 實現在系統上安裝的程式集定義,其中可能包括應用程式框架 API(例如 ASP.NET、WinForms)。 對於基於包的目標框架(例如 .NET Standard 和 .NET Core),框架 API 由安裝在應用或庫中的包定義。 在這種情況下,目標框架隱式指定一個元包,該元包引用一起構成框架的所有包。
32. TFM
目標框架名字對象。
一個標準化令牌格式,用於指定 .NET 應用或庫的目標框架。 目標框架通常由短名稱(如 net462)引用。 存在長格式的 TFM(如 .NETFramework,Version=4.6.2),但通常不用來指定目標框架。
33. UWP
通用 Windows 平臺。
用於為物聯網 (IoT) 生成新式觸控 Windows 應用程式和軟體的 .NET 實現。 它旨在統一可能想要以其為目標的不同類型的設備,包括電腦、平板電腦、平板手機、電話,甚至 Xbox。 UWP 提供許多服務,如集中式應用商店、執行環境 (AppContainer) 和一組 Windows API(用於代替 Win32 (WinRT))。 應用可採用 C++、C#、VB.NET 和 JavaScript 編寫。 使用 C# 和 VB.NET 時,.NET API 由 .NET Core 提供。