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 具備如下特性:後端
.NET Core 包括如下部分:安全
這些組件採用如下方式分佈:網絡
上圖描述了 .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 的主要差別在於:
5、當前版本.NET Core 3.0
參見:https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0/
6、將來
詳見: