.NetCore簡介

引用:https://docs.microsoft.com/zh-cn/dotnet/articles/core/indexgit

 

.NET Core 是一個通用開發平臺,由 Microsoft 和 GitHub 上的 .NET 社區共同維護。 它是跨平臺的,支持 Windows、macOS 和 Linux,而且可用於設備、雲和嵌入式/IoT 方案。github

如下特徵對 .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 工具。windows

C# 和 F# 編譯器以及 .NET Core 工具已集成到或能夠集成到多個文本編輯器和 IDE 中,包括 Visual Studio、Visual Studio Code 和 Sublime Text 以及 Vim,使 .NET Core 開發能夠在你鍾愛的環境和 OS 中進行。 這種集成部分由 OmniSharp 項目的高手提供。api

.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 標準庫。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。

  • 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 實現。 .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 都是與平臺無關的代碼,該代碼可在全部平臺共享。 與平臺無關的代碼可做爲在全部平臺上使用的單個可移植程序集使用。

CoreFX:每一個平臺的代碼行數

Windows 和 Unix 實現大小類似。 Windows 具備較大的實現,由於 CoreFX 實現了某些僅適用於 Windows 的功能,如 Microsoft.Win32.Registry,但還沒有實現任何僅適用於 Unix 的概念。 你將發現大多數 Linux 和 macOS 實現都是在 Unix 實現中實現的,而特定於 Linux 和 macOS 的實現大小大體相同。

.NET Core 中混合存在特定於平臺和與平臺無關的庫。 能夠查看幾個示例中的模式:

與其餘 .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 的焦點是雲工做負荷。
相關文章
相關標籤/搜索