.Net Core簡介

 

 1、爲何要推出.Net Coregit

  .Net FrameWrok在技術層面是徹底具有跨平臺的能力的,PC時代微軟出於商業利益上的考慮,並無對CRL提供非Windows平臺的實現。在Windows平臺上,.NET框架沒有太多的競爭。微軟能夠對從操做系統內核層到高級.NET庫的全部內容進行更改。2014年微軟新的CEO上臺,「開源」和「跨平臺」成了大勢所趨。經過將.NET引入其餘平臺,競爭環境發生了變化。.NET如今必須與其餘全部的開發框架競爭。github

2、.Net的跨平臺架構   web

  2016年,微軟收購了Xamarin併發布了.NET Core 1.0。以前Xamarin已經移植了.NET框架的大部份內容來運行在基於Linux / Unix的操做系統上。一些代碼能夠在.NET Framework,Xamarin和新的.NET Core之間共享,但編譯後的二進制文件不能。.NET Core的一部分努力是建立一個標準化的平臺,容許全部.NET實現共享相同的庫docker

 3、.Net Core編程

.NET Core 具備如下特性:後端

  • 跨平臺: 可在 Windows、macOS 和 Linux 操做系統上運行。
  • 跨體系結構保持一致: 在多個體繫結構(包括 x6四、x86 和 ARM)上以相同的行爲運行代碼。
  • 命令行工具: 包括可用於本地開發和持續集成方案中的易於使用的命令行工具。
  • 部署靈活: 能夠包含在應用或已安裝的並行(用戶或系統範圍安裝)中。 可搭配 Docker 容器使用。
  • 兼容性: .NET Core 經過 .NET Standard 與 .NET Framework、Xamarin 和 Mono 兼容。
  • 開放源代碼: .NET Core 平臺是開放源代碼,使用 MIT 和 Apache 2 許可證。 .NET Core 是一個 .NET Foundation 項目。
  • 由 Microsoft 支持: .NET Core 由 Microsoft 依據 .NET Core 支持提供支持。

.NET Core 包括如下部分:安全

  • .NET Core 運行時:提供類型系統、程序集加載、垃圾回收器、本機互操做和其餘基本服務。 .NET Core 框架庫:提供基元數據類型、應用編寫類型和基本實用程序。
  • ASP.NET 運行時:提供一個框架來生成基於雲且鏈接到 Internet 的新式應用程序,例如 Web 應用、IoT 應用和移動後端。
  • .NET Core CLI 工具和語言編譯器(RoslynF#):提供 .NET Core 開發人員體驗。
  • dotnet 工具:用於啓動 .NET Core 應用和 CLI 工具。 它選擇運行時並託管運行時,提供程序集加載策略並啓動應用和工具。

這些組件採用如下方式分佈:網絡

 

上圖描述了 .NET Core的系統構成,最上層是應用層,是開發基於UI應用的框架集,包括了ASP.NET Core(用於建立web app),和 UWP(用於建立Windows10 app)。架構

中間層是公共庫(CoreFX),實現了.NET Standard Library ,囊括了經常使用系統級操做例如(文件、網絡等)。併發

在CoreFx下是運行時環境,.NET Core 包含了兩種運行時(CoreCLR、CoreRT),CoreCLR是一種基於即時編譯程序(Just in time compiler,JIT)的運行時,它使用了跨平臺開源的編譯器RyuJIT,而CoreRT是使用提早編譯器(Ahead of time compiler,AOT)的運行時,它既可使用RyuJIT來實現AOT編譯也可使用其餘的AOT編譯器。因爲AOT提早編譯IL成了機器碼,在移動設備上也具備更好的啓動速度和節能性。

最後還要提到一個開源的跨平臺源代碼編譯器Roslyn,它有別於剛纔兩個編譯器,JIT和AOT編譯器主要用於將IL編譯成本機機器碼,而Roslyn是將C# 或 VB.NET 代碼編譯成程序中間語言(intermediate language,IL)

 

因爲 .NET Core 支持並行安裝及其運行時徹底獨立於 .NET Framework,它能夠安裝在裝有.NET Framework 的計算機上,不會出現任何問題

代碼開發、部署、運行過程

 4、與 .NET Framework 比較

   因爲.NET Framework主要以託管(C#)代碼爲基礎構建,所以這些部分不須要更改代碼便可移至.NET Core。可是像COM組件,註冊表項,特殊文件夾,GAC - 都是爲了利用Windows的特性而設計的。.NET Framework 依賴於這些構造,這使得它不適合其餘操做系統。依賴於Windows特定組件的庫必須被移除或重構以使用跨平臺替代方案。

.NET Core 和 .NET Framework 的主要差別在於:

  • 應用模型 - .NET Core 並不是支持所有 .NET Framework 應用模型。 具體而言,它不支持 ASP.NET Web 窗體和 ASP.NET MVC,但支持 ASP.NET Core MVC。 自 .NET Core 3.0 起,.NET Core 還支持 WPF 和 Windows 窗體(僅限在 Windows 上)。
  • API -- .NET Core 包含 .NET Framework 基類庫的一個大型子集,但具備不一樣的組成要素(程序集名稱不一樣;類型上公開的成員在關鍵用例中不一樣)。 在某些狀況下,這些差別要求進行更改,以將源移植到 .NET Core 中。 有關詳細信息,請參閱 .NET 可移植性分析器。 .NET Core 實施 .NET Standard API 規範。
  • 子系統 -- .NET Core 實現 .NET Framework 中子系統的子級,目的是實現更簡單的實現和編程模型。 例如,不支持代碼訪問安全性 (CAS),但支持反射。
  • 平臺 -- .NET Framework 支持 Windows 和 Windows Server,而 NET Core 還支持 macOS 和 Linux。
  • 開源 -- .NET Core 是開源的,而 .NET Framework 的只讀子集是開源的。

 

5、當前版本.NET Core 3.0

 

參見:https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0/

 6、將來

.NET 5 = .NET Core vNext

詳見:

https://devblogs.microsoft.com/dotnet/introducing-net-5/

相關文章
相關標籤/搜索