一缩幸、.Net Framework框架
C#勺拣、.Net Framework、CLR對(duì)應(yīng)關(guān)系如下所示:
.Net Core是.Net Framework的下一個(gè)版本近刘。
二、什么是.Net Core
微軟官方對(duì).Net Core的定義如下:
.NET Core是微軟提供的一個(gè)開(kāi)源的開(kāi)發(fā)框架臀晃,支持跨平臺(tái)觉渴,及可以在Windows、Linux和macOS等系統(tǒng)上開(kāi)發(fā)和部署积仗,是真正的跨平臺(tái)疆拘。并且可以在硬件設(shè)備、云服務(wù)寂曹、嵌入式\物聯(lián)網(wǎng)方案中進(jìn)行使用哎迄。.NET Core的源代碼在GitHub上面,由Microsoft和.NET社區(qū)共同維護(hù)隆圆。
.NET Core源代碼地址:GitHub - dotnet/core: Home repository for .NET Core
三漱挚、.Net Core的組成部分
.Net Core主要有以下幾部分組成:
NET Core Runtime:及.NET Core CLR。其與.NET Framework的CLR并沒(méi)有多大區(qū)別渺氧,類(lèi)型系統(tǒng)旨涝、進(jìn)程管理、GC(垃圾回收)侣背、JIT(RyuJIT編譯器)等功能都是一樣的白华,只是針對(duì)服務(wù)器系統(tǒng)做了相應(yīng)的優(yōu)化】現(xiàn)在.NET Framework CLR和.NET CoreCLR都在進(jìn)行同步更新。
.NET Core Framework Libraries:及.NER Core框架類(lèi)庫(kù)弧腥。包括集合類(lèi)厦取、文件處理、XML處理等框架類(lèi)庫(kù)管搪。
ASP.NET Runtime:及ASP.NET 運(yùn)行時(shí)虾攻,提供框架以生成基于新式云的 Internet 連接的應(yīng)用程序,例如 Web 應(yīng)用更鲁、IoT 應(yīng)用以及移動(dòng)后端霎箍。
.NET Core CLI 工具和語(yǔ)言編譯器(Roslyn 和 F#):提供 .NET Core 開(kāi)發(fā)人員體驗(yàn)。
dotnet 工具:用于啟動(dòng) .NET Core 應(yīng)用和 CLI 工具澡为。它選擇運(yùn)行時(shí)并托管運(yùn)行時(shí)漂坏,提供程序集加載策略并啟動(dòng)應(yīng)用和工具。
這些組件采用以下方式進(jìn)行分步:
NET Core 運(yùn)行時(shí) -- 包括 .NET Core Runtime和框架庫(kù)(.NET Core Framework Libraries)缀壤。
ASP.NET Core 運(yùn)行時(shí) -- 包括 ASP.NET Core 和 .NET Core 運(yùn)行時(shí)(.NET Core Runtime)以及框架庫(kù)(.NET Core Framework Libraries)樊拓。
.NET Core SDK -- 包括 .NET CLI 工具、ASP.NET Core 運(yùn)行時(shí)以及 .NET Core 運(yùn)行時(shí)和框架塘慕。
四筋夏、.NET Core特性
.NET Core具有以下特性:
跨平臺(tái):可以在Windows、Linux图呢、macOS操作系統(tǒng)上面運(yùn)行条篷。
跨體系結(jié)構(gòu)保持一致:在多個(gè)體系結(jié)構(gòu)(包括 x64、x86 和 ARM)上以相同的行為運(yùn)行代碼蛤织。
靈活的部署方式:可以包含在應(yīng)用或已安裝的并行用戶(hù)或計(jì)算機(jī)范圍中赴叹。可搭配 Docker 容器使用指蚜。Portable applications(便攜式應(yīng)用)乞巧,這種部署機(jī)制和傳統(tǒng)的.NET Framework相似,只要目標(biāo)平臺(tái)上存在.NET Core Runtime即可摊鸡。Self-contained application(自宿主應(yīng)用):顧名思義绽媒,這種部署機(jī)制將應(yīng)用和運(yùn)行時(shí)共同打包,即便目標(biāo)平臺(tái)上沒(méi)有安裝.NET Core Runtime也能正常使用免猾。
命令行工具(CLI):包括可用于本地開(kāi)發(fā)和持續(xù)集成方案中的易于使用的命令行工具是辕。
兼容性:.NET Core 通過(guò) .NET Standard與 .NET Framework、Xamarin 和 Mono 兼容猎提。
開(kāi)源:.NET Core開(kāi)放源代碼获三,使用 MIT 和 Apache 2 許可證,由 Microsoft 依據(jù) .NET Core 支持提供支持。
五疙教、.Net Standard棺聊、.Net Framework、.Net Core關(guān)系
.Net Standard
.NET Standard 是一組由 .NET 實(shí)現(xiàn)的基類(lèi)庫(kù)實(shí)現(xiàn)的 API贞谓。更正式地說(shuō)躺屁,它是構(gòu)成協(xié)定統(tǒng)一集(這些協(xié)定是編寫(xiě)代碼的依據(jù))的特定 .NET API 組。這些協(xié)定在每個(gè) .NET 實(shí)現(xiàn)中實(shí)現(xiàn)经宏。這可實(shí)現(xiàn)不同 .NET 實(shí)現(xiàn)間的可移植性,有效地使代碼可在任何位置運(yùn)行驯击。
.NET Standard 也是一個(gè)目標(biāo)框架烁兰。如果代碼面向 .NET Standard 版本,則它可在支持該 .NET Standard 版本的任何 .NET 實(shí)現(xiàn)上運(yùn)行徊都。
.Net Framework
.Net Framework 是自 2002 年起就已存在的原始 .NET 實(shí)現(xiàn)沪斟。它是當(dāng)前 .NET 開(kāi)發(fā)人員經(jīng)常使用的 .NET Framework。4.5 版以及更高版本實(shí)現(xiàn) .NET Standard暇矫,因此面向 .NET Standard 的代碼都可在這些版本的 .NET Framework 上運(yùn)行主之。它還包含一些特定于 Windows 的 API,如通過(guò) Windows 窗體和 WPF 進(jìn)行 Windows 桌面開(kāi)發(fā)的 API李根。.NET Framework 非常適合用于生成 Windows 桌面應(yīng)用程序槽奕。
.Net Core
.NET Core 是 .NET 的跨平臺(tái)實(shí)現(xiàn),專(zhuān)用于處理大規(guī)模的服務(wù)器和云工作負(fù)荷房轿≡猎埽可在 Windows、macOS 和 Linux 上運(yùn)行囱持。它實(shí)現(xiàn) .NET Standard夯接,因此面向 .NET Standard 的代碼都可在 .NET Core 上運(yùn)行。ASP.NET Core 在 .NET Core 上運(yùn)行纷妆。
用一句話(huà)總結(jié)一下三者的關(guān)系:
.Net Standard是.Net基礎(chǔ)類(lèi)庫(kù)(BCL)API規(guī)范盔几,.Net Framework實(shí)現(xiàn)了這個(gè)API規(guī)范,.Net Core也實(shí)現(xiàn)了這個(gè)API規(guī)范掩幢,任何基于.Net Standard開(kāi)發(fā)的類(lèi)庫(kù)逊拍,都可以在.Net Framework和.Net Core上面運(yùn)行。
各版本對(duì)應(yīng)關(guān)系如下: