.Net Core是微軟推出的一個參考.net framework重新開發(fā)的.NET實現(xiàn),它是未來的所有.NET平臺的基礎。支持跨平臺,即支持在Window,macOS,Linux等系統(tǒng)上的開發(fā)和部署,并且可以在硬件設備,云服務,和嵌入式/物聯(lián)網方案中進行使用,需要的朋友們可以下載試試吧!
隨著.NET Core Framework的開發(fā)完成,.net framework與Mono將基于.NETCore重新構建。.NET Framework將成為.NET Core在Windows上的一個發(fā)行版,Mono將成為.NETCore的一個跨平臺發(fā)行版。
.NET Core是一個開源的、跨平臺的.NET實現(xiàn),是新一代.NET的基石,支持Windows, Linux, macOS, 以及Docker。
.net平臺三大件
1、C#語言,也就是ECMA-334,這是天生跨平臺的,C#的附帶內容,你應該徹底的明白公共運行時(CLR)。CLR以及公共語言基礎(CLI)標準在ECMA-335中有定義,這也是CLR標準。
2、Visual Studio,這是天生不能跨平臺的,Mono有Xamarin studio;
3、.NET Framework基礎類庫。如果.NETFramework基礎類庫不能跨平臺,沒人會關心.NET的跨平臺。所以微軟不得不投入大量精力去開發(fā)全新的.NET Core Framework,一邊將.NET Framework中有用的代碼搬過來,一邊根據(jù)跨平臺的需求重新實現(xiàn)。
從上面的分析,.NET跨平臺的最大障礙就是基礎類庫的跨平臺,由此也可以看出.NET基礎類庫的重要性。Mono也是在基礎類庫的實現(xiàn)上存在瑕疵,比如對WPF,WCF等框架的支持上不完善。像WPF這樣的用戶界面開發(fā)技術,各個平臺上都有自己的原生開發(fā)庫,用戶界面應用原生開發(fā),iOS應用應該用iOS的用戶界面庫才會讓人覺得在iOS上最合適,.NET應用應該用微軟的Windows用戶界面庫。
.NET Core SDK包含
.NETCore是由許多項目所組成,除了基本的類庫(CoreFX) 之外,也包含采用 RyuJIT 編譯的運行平臺CoreCLR、編譯器平臺.NETCompiler Platform、采用 AOT 編譯技術運行最優(yōu)化的包CoreRT (.NETCoreRuntime),以及跨平臺的 MSIL 編譯器 LLILC (LLVM-based MSIL Compiler) 等項目。
同時,微軟也發(fā)展了一個建置技術文件的平臺docfx,并運用于.NETCore的文件網站。
RyuJIT
RyuJIT 是微軟發(fā)展的新式即地編譯器 (Just-in-Time Compiler),用以替換現(xiàn)有的.NETFramework 的 JIT 以及 JIT64 即地編譯器,依據(jù)微軟公布的測試報告,RyuJIT 的性能較前一代的 JIT 提升約 25%,并支持SIMD(Single Instruction, Multiple Data) 的技術。RyuJIT 同時應用于.NETFramework 4.6 以及.NETCore。
CoreCLR
CoreCLR 移植.NETFramework 的 CLR 的功能,包含核心程序庫 mscorlib、JIT 編譯器、垃圾收集器 (GC) 以及其他運行 MSIL 所需要的運行期環(huán)境。
CoreRT
CoreRT 是以AOT (Ahead-of-time) 編譯方式為主的核心功能,在.NETCore內稱為CoreRT,在 UWP 則是稱為.NETNative。
CoreRT 會在建造時期 (非運行期) 在編譯時將 MSIL 轉換成平臺本地的機器碼,以獲取較短的引導時間 (JIT 采用的是運行時期編譯,使得引導時間拉長),以及內存用量減少的優(yōu)點。CoreRT 會在不同的平臺使用不同的 AOT 技術:
Windows 上使用的是.NETNative。
Mac OS 與 Linux 上使用的是 LLILC (同時支持 JIT 和 AOT)。
LLILC
LLILC (LLVM-based MSILCompiler,英文發(fā)音為 "lilac") 是.NETCore在非 Windows 平臺的 MSIL 編譯器 ,基于 ECMA-335 (Common Language Infrastructure) 的標準將 MSIL 編譯成原生碼運行,適用于可運行 LLVM 的操作系統(tǒng),例如 Mac OSX 與 Linux 操作系統(tǒng)。
LLILC 同時支持 JIT (內含 RyuJIT 的實現(xiàn)) 以及 AOT (未來將開始支持) 的編譯方式。
Roslyn
.NETCompiler Platform (項目代碼為 Roslyn) 是將.NET平臺的編譯架構標準化的平臺,它可提供程序管理工具 (如集成開發(fā)環(huán)境) 相當多的情報,用以發(fā)展有助于編寫程序與管理程序結構所需要的功能
例如類型信息、語法結構、參考鏈接、語義、編譯器、自動化、錯誤回報等等功能,只要是遵循 CLI 標準的編程語言,都可以利用.NETCompiler Platform 實現(xiàn)出編譯器,讓程序管理工具能實現(xiàn)如語法提示、語法自動完成、關鍵字高亮等可視化能力。
.NET Compiler Platform 可同時支持.NET Framework 4.6 以上版本,.NET Core也原生支持。