引用:https://docs.microsoft.com/zh-cn/dotnet/articles/core/indexgit
.NET Core 是一個通用開發平臺,由 Microsoft 和 GitHub 上的 .NET 社區共同維護。 它是跨平臺的,支持 Windows、macOS 和 Linux,而且可用於設備、雲和嵌入式/IoT 方案。github
如下特徵對 .NET Core 進行了最好的定義:算法
.NET Core 包括如下部分:編程
可使用 C# 和 F# 語言(即將推出 Visual Basic)編寫 .NET Core 的應用程序和庫。 在 .NET Core 上運行的編譯器能夠在其運行的任何地方進行 .NET Core 開發。 通常狀況下,不會直接使用編譯器,但會間接使用 SDK 工具。windows
C# 和 F# 編譯器以及 .NET Core 工具已集成到或能夠集成到多個文本編輯器和 IDE 中,包括 Visual Studio、Visual Studio Code 和 Sublime Text 以及 Vim,使 .NET Core 開發能夠在你鍾愛的環境和 OS 中進行。 這種集成部分由 OmniSharp 項目的高手提供。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 實現中看到的一組一致的 API 規範。 .NET 實現須要執行此規範才能被視爲合規的 .NET 標準庫以及才能支持面向 .NET 標準庫的庫。框架
因爲 .NET Core 可實現 .NET 標準庫,所以也支持 .NET 標準庫。asp.net
就自己而言,.NET Core 包括單個應用程序模型(控制檯應用),這對工具、本地服務和基於文本的遊戲頗有用。 除 .NET Core 外,還生成了其餘應用程序模型以擴展其功能,例如:
.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。
dotnet
應用啓動器。 相關描述請參見 Microsoft.NETCore.App
元包。一般狀況下,將首先安裝 .NET Core SDK,以開始 .NET Core 開發。 能夠選擇安裝其餘 .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 中混合存在特定於平臺和與平臺無關的庫。 能夠查看幾個示例中的模式:
將 .NET Core 與現有平臺進行比較,這多是瞭解其大小和形狀最簡單的方法了。
.NET 平臺由 Microsoft 於 2000 年首次發佈,然後發展至今。 15 年多以來,.NET Framework 一直是 Microsoft 生產的主要 .NET 產品。
.NET Core 和 .NET Framework 的主要差別在於:
雖然 .NET Core 是惟一的且與 .NET Framework 和其餘 .NET 平臺大不相同,但使用源或二進制共享技術分享代碼仍很簡單。
Mono 是原始的跨平臺和 開放源 .NET 實現,於 2004 年首次發佈。 能夠把它看做是 .NET Framework 的社區克隆。 Mono 項目團隊依賴於 Microsoft 發佈的開放 .NET 標準(尤爲是 ECMA 335),以便實現兼容性。
.NET Core 和 Mono 的主要差別在於: