標籤:電腦 商業 des rect win32 tco 開發平台 程式 大致
原文地址:https://docs.microsoft.com/zh-cn/dotnet/articles/core/
NET Core 是一個通用開發平台,由 Microsoft 和 GitHub 上的 .NET 社區共同維護。 它是跨平台的,支援 Windows、macOS 和 Linux,並且可用於裝置、雲和嵌入式/IoT 方案。
以下特徵對 .NET Core 進行了最好的定義:
- 部署靈活:可以包含在應用或已安裝的並行使用者或電腦範圍中。
- 跨平台:可以在 Windows、macOS 和 Linux 上運行;也可移植到其他動作系統。 Microsoft、其他公司和個人提供的支援的作業系統 (OS)、CPU 和應用程式方案會隨著時間推移而增多。
- 命令列工具:可在命令列中執行所有產品方案。
- 相容性: .NET Core 通過 .NET 標準庫與 .NET Framework、Xamarin 和 Mono 相容。
- 開放源:.NET Core 是一個開放源平台,使用 MIT 和 Apache 2 許可證。 文檔由 CC-BY 許可發行。 .NET Core 是一個 .NET Foundation 項目。
- 由 Microsoft 支援:.NET Core 由 Microsoft 依據 .NET Core 支援提供支援
撰寫
.NET Core 包括以下部分:
- .NET 運行時:提供類型系統、程式集載入、記憶體回收行程、本機互操作和其他基本服務。
- 一組 架構庫:提供基中繼資料類型、應用編寫類型和基本公用程式。
- 一組 SDK 工具和語言編譯器:提供基本的開發人員體驗,可用於 .NET Core SDK。
- “dotnet”應用主機,用於啟動 .NET Core 應用。 它選擇運行時並託管運行時,提供者集載入策略來啟動應用。 同一主機還可用於以大致相同的方式啟動 SDK 工具。
語言
可以使用 C# 和 F# 語言(即將推出 Visual Basic)編寫 .NET Core 的應用程式和庫。 在 .NET Core 上啟動並執行編譯器可以在其啟動並執行任何地方進行 .NET Core 開發。 一般情況下,不會直接使用編譯器,但會間接使用 SDK 工具。
C# 和 F# 編譯器以及 .NET Core 工具已整合到或可以整合到多個文字編輯器和 IDE 中,包括 Visual Studio、Visual Studio Code 和 Sublime Text 以及 Vim,使 .NET Core 開發可以在你鐘愛的環境和 OS 中進行。 這種整合部分由 OmniSharp 項目的高手提供。
.NET API 和相容性
可將 .NET Core 看作是 .NET Framework 在 .NET Framework 基底類別庫 (BCL) 的跨平台版本。 它執行 .NET 標準庫規範。 .NET Core 提供了一個可用於 .NET Framework 或 Mono/Xamarin 的 API 子集。 在某些情況下,類型未完全實現(某些成員不可用或已移動)。
有關 .NET Core API 的詳細資料,請參閱 .NET Core roadmap(.NET Core API 產品系列)。
與 .NET 標準庫的關係
.NET 標準庫是描述開發人員可以在每個 .NET 實現中看到的一組一致的 API 規範。 .NET 實現需要執行此規範才能被視為合規的 .NET 標準庫以及才能支援面向 .NET 標準庫的庫。
由於 .NET Core 可實現 .NET 標準庫,因此也支援 .NET 標準庫。
工作負載
就本身而言,.NET Core 包括單個應用程式模型(控制台應用),這對工具、本地服務和基於文本的遊戲很有用。 除 .NET Core 外,還產生了其他應用程式模型以擴充其功能,例如:
- ASP.NET Core
- Windows 10 通用 Windows 平台 (UWP)
- Xamarin.Forms
開放源
.NET Core 屬於開放源(MIT 許可證),由 Microsoft 於 2014 年提供給 .NET Foundation。 現在它是最活躍的 .NET Foundation 項目之一。 可由個人和企業自由採用,包括用於個人、學術或商業目的。 許多公司已使用 .NET Core 作為應用、工具、新平台和託管服務的一部分。 其中某些公司對 GitHub 上的 .NET Core 做出了巨大貢獻,並作為 .NET Foundation Technical Steering Group(.NET Foundation 技術控制組)的成員,指導產品方向。
擷取
.NET Core 主要以兩種方式發行,以包方式在 NuGet.org 上發行,以及以獨立方式發行。
分布
可以在 .NET Core 入門頁下載 .NET Core。
- Microsoft.NET Core 分發包括 CoreCLR 運行時、關聯庫、控制台應用程式主機和
dotnet 應用程式啟動器。 相關描述請參見 Microsoft.NETCore.App 元包。
- Microsoft .NET Core SDK 分發包括 .NET Core 和一套用來還原 NuGet 資料包以及編譯並產生應用的工具。
通常情況下,將首先安裝 .NET Core SDK,以開始 .NET Core 開發。 可以選擇安裝其他 .NET Core 版本(可以是預發行版)。
包
- .NET Core 包包含 .NET Core 運行時和庫(引用程式集和實現)。 例如,System.Net.Http。
- .NET Core 元包通過引用相應的帶有版本的庫包組合來描述各個層和應用程式模型。
體繫結構
.NET Core 是一個跨平台的 .NET 實現。 .NET Core 特有的主要體繫結構是為支援的平台提供特定於平台的實現。
環境
.NET Core 由 Microsoft 在 Windows、macOS 和 Linux 上提供支援。 在 Linux 上,Microsoft 主要支援 Red Hat Enterprise Linux (RHEL) 和 Debian 分發系列上啟動並執行 .NET Core。
.NET Core 目前支援 X64 CPU。 在 Windows 上,也支援 X86。 將支援 ARM64 和 ARM32。
有關工作負載和 OS 以及 CPU 環境支援和計劃的更詳細資料,請參閱 .NET Core Roadmap(.NET Core 產品系列)。
對於其他應用類型和環境,其他公司或團體可能支援 .NET Core。
針對適應性而設計
與其他 .NET 產品相比,產生的 .NET Core 與它們十分類似,但具有唯一性。 其目的是能夠適應廣泛的新平台、新的工作負載和新的編譯器工具鏈。 它有多個 OS 和 CPU 連接埠正在使用中,並可以移植到更多連接埠。 以 LLILC 項目為例,它是早期 .NET Core 通過 LLVM 編譯器進行本地編譯的原型。
該產品分為幾個部分,使各個組件能夠根據不同的計劃適應新的平台。 必須將運行時和特定於平台的基礎庫作為一個單元進行移植。 與平台無關的庫應在所有平台上按照構建的原樣運行。 對於通過減少特定於平台的實現以提高開發人員效率方面,項目存在偏差,但每當可以以此方式全部或部分實現演算法或 API 時,都應首選與平台無關的 C# 代碼。
人們經常會問,為支援多個作業系統應如何? .NET Core。 他們還會問是否存在單獨的實現,或是否使用 conditional compilation(條件編譯)。 這兩者都在用,但強烈偏向條件編譯。
可以在下面的圖表看出大多數 CoreFX 都是與平台無關的代碼,該代碼可在所有平台共用。 與平台無關的代碼可作為在所有平台上使用的單個可移植程式集使用。
Windows 和 Unix 實現大小相似。 Windows 具有較大的實現,因為 CoreFX 實現了某些僅適用於 Windows 的功能,如 Microsoft.Win32.Registry,但尚未實現任何僅適用於 Unix 的概念。 你將發現大多數 Linux 和 macOS 實現都是在 Unix 實現中實現的,而特定於 Linux 和 macOS 的實現大小大致相同。
.NET Core 中混合存在特定於平台和與平台無關的庫。 可以查看幾個樣本中的模式:
- CoreCLR 是特定於平台的。 它是使用 C/C++ 產生的,因此根據構造,它是特定於平台的。
- 考慮到每個 OS 上的儲存和加密 API 具有顯著差異,System.IO 和 System.Security.Cryptography.Algorithms 是特定於平台的。
- 考慮到它們是通過資料結構建立和操作,System.Collections 和 System.Linq 是與平台無關的。
與其他 .NET 平台比較
將 .NET Core 與現有平台進行比較,這可能是瞭解其大小和形狀最簡單的方法了。
與 .NET Framework 比較
.NET 平台由 Microsoft 於 2000 年首次發布,而後發展至今。 15 年多以來,.NET Framework 一直是 Microsoft 生產的主要 .NET 產品。
.NET Core 和 .NET Framework 的主要差異在於:
- 應用程式模型 -- .NET Core 不支援所有 .NET Framework 應用程式模型,某種程式上是因為其中許多模型都是基於 Windows 技術,如 WPF(基於 DirectX 產生)。 但 .NET Core 和 .NET Framework 兩者都支援控制台和 ASP.NET Core 應用程式模型。
- API -- .NET Core 包含很多與 .NET Framework 相同,但數量較少的 API,並且具有不同的組成要素(程式集名稱不同;關鍵用例中的類型形狀不同)。 目前,這些差異通常都需要更改,以將源移植到 .NET Core。 .NET Core 實現 .NET 標準庫 API,該 API 將隨著時間推移而增長,以便包含更多 .NET Framework BCL API。
- 子系統 -- .NET Core 實現 .NET Framework 中子系統的子級,目的是實現更簡單的實現和編程模型。 例如,不支援程式碼存取安全性 (CAS),但支援反射。
- 平台 -- .NET Framework 支援 Windows 和 Windows Server,而 NET Core 還支援 macOS 和 Linux。
- 開放源 -- .NET Core 屬於開放源,而 .NET Framework 的唯讀子集屬於開放源。
雖然 .NET Core 是唯一的且與 .NET Framework 和其他 .NET 平台大不相同,但使用源或二進位共用技術分享代碼仍很簡單。
與 Mono 比較
Mono 是原始的跨平台和 開放源 .NET 實現,於 2004 年首次發布。 可以把它看作是 .NET Framework 的社區複製。 Mono 項目團隊依賴於 Microsoft 發布的開放 .NET 標準(尤其是 ECMA 335),以便實現相容性。
.NET Core 和 Mono 的主要差異在於:
- 應用程式模型 -- Mono 通過 Xamarin 產品支援 .NET Framework 應用程式模型(例如,Windows Forms)和其他應用程式模型(例如,Xamarin.iOS)的子集。 而 .NET Core 不支援這些內容。
- API -- Mono 使用相同程式集名稱和組成要素支援 .NET Framework API 的 大型子集。
- 平台 -- Mono 支援很多平台和 CPU。
- 開放源 -- Mono 和 .NET Core 兩者都使用 MIT 許可證,且都屬於 .NET Foundation 項目。
- 焦點 --最近幾年,Mono 的主要焦點是移動平台,而 .NET Core 的焦點是雲工作負載。
[.net core]簡介(轉)