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 提供。