.NET 術語表

風靈使發表於2019-01-09

此術語表的主要目的是闡明所選術語和縮寫詞的含義,這些詞頻繁出現在 .NET 文件中但沒有定義。

AOT

預編譯器。

JIT 類似,此編譯器還可將 IL 轉換為機器程式碼。 與 JIT 編譯相比,AOT 編譯在應用程式執行前進行並且通常在不同計算機上執行。 由於在執行時 AOT 工具鏈不編譯,因此它們不需要最大程度地減少編譯所花費的時間。這意味著它們可花更多的時間進行優化。 由於 AOT 的上下文是整個應用程式,因此 AOT 編譯器還會執行跨模組連結和全程式分析,這意味著之後會進行所有引用並會生成單個可執行檔案。

ASP.NET

.NET Framework 一起提供的原始 ASP.NET 實現。

有時 ASP.NET 是一個涵蓋性術語,指包含 ASP.NET Core 在內的兩個 ASP.NET 實現。 該術語在任何給定例項中的含義取決於上下文。 若要指明不要使用 ASP.NET 表示這兩種實現,請參考 ASP.NET 4.x

請參閱 ASP.NET 文件。

ASP.NET Core

.NET Core 上生成的跨平臺、高效能、 開放源 ASP.NET 實現。

請參閱 ASP.NET Core 文件。
程式集

.dll/.exe 檔案,其中包含一組可由應用程式或其他程式集呼叫的 API

程式集可以包括介面、類、結構、列舉和委託等型別。 有時,專案的 bin 資料夾中的程式集被稱為二進位制檔案。 另請參閱庫。

CLR

公共語言執行時。

確切含義取決於上下文,但它通常指 .NET Framework 的執行時。 CLR 處理記憶體分配和管理。 CLR 也是一個虛擬機器,不僅可執行應用,還可使用 JIT 編譯器快速生成和編譯程式碼。 當前的 Microsoft CLR 實現僅限 Windows

CoreCLR

.NET Core 公共語言執行時。

此 CLR 是採用與 CLR 相同的基本程式碼生成的。 最初,CoreCLRSilverlight 的執行時,專為在多個平臺(特別是 Windows 和 OS X)上執行而開發。CoreCLR 現屬於 .NET Core 並表示 CLR 的簡化版本。 它仍是跨平臺執行時,現包括針對許多 Linux 分發的支援。 CoreCLR 也是具有 JIT 和程式碼執行功能的虛擬機器。

CoreFX

.NET Core 基類庫 (BCL)

一組構成 System.*(在一定的程度上構成 Microsoft.*)名稱空間的庫。 BCL 是用於生成 ASP.NET Core 等較高階應用程式框架的較低階通用框架。 .NET Core BCL 的原始碼包含在 CoreFX 儲存庫中。 但大部分 .NET Core API 也可在 .NET Framework 中使用,因此可將 CoreFX 視為 .NET Framework BCL 的一個分支。

CoreRT

.NET Core 執行時。

CLR/CoreCLR 相比,CoreRT 不是虛擬機器,這意味著它不包含用於快速生成並執行程式碼的功能,因為它不包括 JIT。 但它包含 GC 以及執行時型別標識 (RTTI) 和反射功能。 只是由於設計有型別系統,因此並不需要後設資料反射功能。 包含這些功能使它具有 AOT 工具鏈,該工具鏈可去除多餘的後設資料,更重要的是可識別應用不使用的程式碼。 CoreRT 正在開發中。

請參閱 .NET Native 和 CoreRT 簡介

跨平臺

能夠開發並執行可在多個不同作業系統(如 Linux、Windows 和 iOS)上使用的應用程式,而無需專門針對每個作業系統進行重新編寫。 這樣,可以在不同平臺上的應用程式之間重複使用程式碼並保持一致性。

生態系統

所有針對給定技術生成和執行應用程式的執行時軟體、開發工具和社群資源。

在所包含的第三方應用和庫方面,術語“.NET 生態系統”不同於類似的“.NET 堆疊”等術語。 請看以下這一句示例:

  • “推出 .NET Standard 的背後動機是要提高 .NET 生態系統中的一致性。”

框架

一般指一個綜合 API 集合,便於開發和部署基於特定技術的應用程式。 從此常規意義上來說,ASP.NET CoreWindows 窗體都是示例應用程式框架。 另請參閱庫。

“框架”一詞在以下術語中有更具體的技術含義:

  • .NET Framework
  • 目標框架
  • TFM(目標框架名字物件)

在現有的文件中,“框架”有時指 .NET 的實現。 例如,某文章可能會將 .NET Core 稱為框架。 我們計劃從文件中去掉這種令人困惑的用法。

“GC”

垃圾回收器。

垃圾回收器是自動記憶體管理的實現。 GC 可釋放物件佔用的不再使用的記憶體。

請參閱垃圾回收。

IL

中間語言。

C# 等較高階的 .NET 語言編譯為稱為中間語言 (IL) 的硬體無關性指令集。 IL 有時被稱為 MSIL (Microsoft IL)CIL(通用 IL)。

JIT

實時編譯器。

與 AOT 類似,此編譯器將 IL 轉換為處理器可理解的計算機程式碼。 與 AOT 不同,JIT 編譯在需要執行程式碼的同一臺計算機上按需執行。 由於 JIT 編譯在應用程式的執行過程中發生,因此編譯時是執行時的一部分。 因此,JIT 編譯器需要平衡優化程式碼所花費的時間與生成程式碼時可節約的時間。 但 JIT 知道實際硬體,這樣開發人員就無需提供不同的實現。

.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)

可由應用或其他庫呼叫的 API 集合。 .NET 庫由一個或多個程式集組成。

詞庫和框架通常作同義詞使用。

元包

一個 NuGet 包,沒有自己的庫,而只是一個依賴項列表。 所含包可選擇建立目標框架的 API

請參閱包、元包和框架

Mono

Mono 是主要在需要小型執行時使用的開放源、跨平臺 .NET 實現。 它是執行時,在 Android、Mac、iOS、tvOSwatchOS 上為 Xamarin 應用程式提供技術支援,主要針對記憶體佔用少的應用程式。

它支援所有當前已釋出的 .NET Standard 版本。

以前,Mono 實現更大的 .NET Framework API 並模擬一些 Unix 上最常用的功能。 有時使用它執行依賴 Unix 上的這些功能的 .NET 應用程式。

Mono 通常與實時編譯器一起使用,但它也提供在 iOS 之類的平臺使用的完整靜態編譯器(預先編譯)。

若要了解有關 Mono 的詳細資訊,請參閱 Mono 文件。

.NET

.NET Standard 和所有 .NET 實現及工作負荷的涵蓋性術語。 始終採用大寫形式,請勿使用“.Net”。

請參閱 .NET 指南

.NET Core

一種跨平臺、高效能的開放源 .NET 實現。 包括 Core 公共語言執行時 (CoreCLR)、Core AOT 執行時(正在開發的 CoreRT)、Core 基類庫和 Core SDK。

請參閱 .NET Core。

.NET Core CLI

用於開發 .NET Core 應用程式的跨平臺工具鏈。

請參閱 .NET Core 命令列介面 (CLI) 工具。

.NET Core SDK

一組庫和工具,開發人員可用其建立 .NET Core 應用程式和庫。 包括用於生成應用的 .NET Core CLI、用於生成和執行應用的 .NET Core 庫以及執行 CLI 命令和執行應用程式的 dotnet 可執行檔案 (dotnet.exe)。

請參閱 .NET Core SDK 概述。

.NET Framework

僅在 Windows 上執行的 .NET 實現。 包括公共語言執行時 (CLR)、基類庫和 ASP.NET、Windows 窗體和 WPF 之類的應用程式框架庫。

請查閱 .NET Framework 指南。

.NET Native

編譯器工具鏈,可預先 (AOT) 生成,而非實時 (JIT) 生成本機程式碼。

編譯採用與 C++ 編譯器和連結器類似的工作方式在開發人員計算機上進行。 它刪除了未使用的程式碼,留出更多時間進行優化。 它從庫中提取程式碼,將它們合併到可執行檔案中。 結果是表示整個應用的單個模組。

UWP 是 .NET Native 支援的首個應用程式框架。 現在,我們支援為 Windows、macOSLinux 生成本機控制檯應用。

請參閱 .NET Native 和 CoreRT 簡介

.NET Standard

在每個 .NET 實現中都可用的 .NET API 正式規範。

.NET Standard 規範有時被稱為文件中的庫。 由於庫不僅包括規範(介面),還包括 API 實現,所以會誤將 .NET Standard 稱為“庫”。 我們計劃從本文件中去除該用法,引用 .NET Standard 元包 (NETStandard.Library) 的名稱除外。

請參閱 .NET Standard。

NGEN

本機(映像)生成。

可將此方法視為永久性 JIT 編譯器。 它通常在執行程式碼的計算機上編譯該程式碼,但通常在安裝時進行編譯。

NuGet 包 — 或只是一個包 — 是一個 .zip 檔案,其中具有一個或多個名稱相同的程式集以及作者姓名等其他後設資料。

.zip 檔案的副檔名為 .nupkg,且可以包含在多個目標框架和版本中使用的資產(如 .dll 檔案和 .xml 檔案)。 在應用或庫中安裝時,會根據應用或庫指定的目標框架選擇相應的資產。 定義介面的資產位於 ref 資料夾,而定義實現的資產位於 lib資料夾。

平臺

作業系統以及執行它的硬體,例如 Windows、macOS、Linux、iOSAndroid

下面是在句子中使用的示例:

“.NET Core 是一個跨平臺 .NET 實現。”
“PCL 配置檔案代表 Microsoft 平臺,而 .NET Standard 與平臺無關。”

.NET 文件經常使用“.NET 平臺”表示一個 .NET 實現或包括所有實現的 .NET 堆疊。 這兩種用法往往會與主(OS/硬體)含義混淆,因此我們計劃從文件中去除這些用法。

Runtime — 執行時

用於託管程式的執行環境。

OS 屬於執行時環境,但不屬於 .NET 執行時。 下面是 .NET 執行時的一些示例:

  • 公共語言執行時 (CLR)
  • Core 公共語言執行時 (CoreCLR)
  • .NET Native(適用於 UWP)
  • Mono 執行時

.NET 文件有時使用“執行時”表示 .NET 的實現。 例如,在以下句子中應使用“實現”替換“執行時”:

  • “各種 .NET 執行時實現特定版本的 .NET Standard。”
  • “計劃在多個執行時上執行的庫應將此框架作為目標。” (參閱 .NET Standard)
  • “各種 .NET 執行時實現特定版本的 .NET Standard。 … 每個 .NET 執行時版本都將會公佈它所支援的最高 .NET Standard 版本…”

我們計劃消除此不一致的用法。

堆疊

一組程式設計方法,一起用於生成並執行應用程式。

“.NET 堆疊”指 .NET Standard 和所有 .NET 實現。 短語“一個 .NET 堆疊”可能指一種 .NET 實現。

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 由安裝在應用或庫中的包定義。 在這種情況下,目標框架隱式指定一個元包,該元包引用一起構成框架的所有包。

請參閱目標框架。

TFM

目標框架名字物件。

一個標準化令牌格式,用於指定 .NET 應用或庫的目標框架。 目標框架通常由短名稱(如 net462)引用。 存在長格式的 TFM(如 .NETFramework,Version=4.6.2),但通常不用來指定目標框架。

請參閱目標框架。

UWP

通用 Windows 平臺。

用於為物聯網 (IoT) 生成新式觸控 Windows 應用程式和軟體的 .NET 實現。 它旨在統一可能想要以其為目標的不同型別的裝置,包括電腦、平板電腦、平板手機、電話,甚至 Xbox。 UWP 提供許多服務,如集中式應用商店、執行環境 (AppContainer) 和一組 Windows API(用於代替 Win32 (WinRT))。 應用可採用 C++、C#、VB.NET 和 JavaScript 編寫。 使用 C# 和 VB.NET 時,.NET API 由 .NET Core 提供。

相關文章