至2002微軟公司推出.NET平臺已近15年,在互聯網快速迭代的浪潮中,許多語言已被淘汰,同時也有更多新的語言涌現,但 .Net 依然堅挺的站在系統開發平臺的一線陣營中,而且隨着.NET Core 即將到來(2016年6月27日)的正式版,勢必迎來新一輪春天。html
要理解.NET Core就有必要了解以前的.NET平臺的衆多Framework們。2002年微軟公司發佈的第一個.NET框架————.NET Framework,不久後又發佈了.NET Compact Framework 用於在較小的移動設備(Windows mobile),而.NET Compact Framework 也含有一套 相似.NET Framework 體系(Runtime, Framework,Application Model),它是一個複製精簡版的 .NET Framework。在數年間微軟樂此不疲的推出了數個相似 .NET Framework的框架,以用於在不一樣的設備和平臺上運行。每一個Framework都有相似的體系但又不徹底相同的,這樣Framework愈來愈多,對開發者來講不同的設備即使功能相同也須要維護多套代碼,增長了開發的複雜度。linux
微軟對這些問題的從新思考和改進讓.NET Core橫空出世。
.NET Core是一個開源的模塊化的Framework,無論是開發web或移動設備都在同一個Framework(.NET Core)下運行,並且 .NET Core也可在不一樣的操做系統上運行,包括Windows、linux、MacOS,實現了跨平臺跨設備。
更棒的是.NET Core 在發佈程序時不用事先安裝Framework而是經過Nuget下載,這樣在初次部署時就不用安裝一個複雜而龐大Framework,而是按需下載。這種基於Nuget的按需加載鑄就了.NET Core 跨平臺。git
.NET Core 構成體系以下:github
在.NET Core 中有實現兩種RunTime,NativeRuntime 和 CoreCLR。NativeRuntime 將C# 或 VB.net 代碼直接轉換爲原生機器碼。而CoreCLR是一個開源的JIT運行時,會將代碼編譯成中間語言(IL)在最終運行時再轉換機器碼。web
Base Classlibrary即基礎類,例如 FileSystem、Console、XML操做等。windows
提供開發Windows系統的各類觸屏設備和ASP.NET程序的一組基礎庫。app
.NET Core & .NET Framework 都是 NET Standard Library 的實現,一種是跨平臺,而另外一種是Windows下特有的,除實現NET Standard Library外 .NET Core 和 .NET Framework 都有各自特有的實現。.NET Standard Library 是跨操做系統的關鍵所在,它定義了一組接口,而每一個操做系統有各自的實現,.NET Core經過nuget能夠動態下載當前操做系統的實現,從而實現跨操做系統(暨跨操做系統共享代碼)。框架
.NET Core 更依賴於Nuget,容許本地application在部署時動態下載須要的class library。而.NET Framework須要在系統中預裝。這樣.NET Core的部署比.NET Framework 更簡單快速一樣也更輕便。asp.net
從上圖能夠看到 ASP.NET Core 有兩種形態的存在:模塊化
ASP.NET Core Web Application(.NET Core)
依賴於.NET Core的ASP.NET 只能夠調用.NET Core的API,能夠在多個操做系統上運行。(可見下圖下半部分的Reference Manager,在assemblies中沒有.NET Framework 中的庫)
ASP.NET Core Web Application(.NET Framework)
依賴於.NET Core & .NET Framework 的ASP.NET 能夠調用.NET Core&.NET Framework的API ,只能夠在Windows下運行。(可見下圖上半部分的Reference Manager,在assemblies中含有全部.NET Framework 中的庫)
Mono是.NET Framework的開源版本的實現,在某些特性上和.NET Core 很相似好比開源,跨操做系統。目前.NET CORE 會從Mono上吸收經驗,發展壯大最終能夠更好的在除Windows外的其餘操做系統上運行。另外Mone支持的App Models要比.NET Core多(例如Windows Forms)。
微軟CEO薩提亞·納德拉睿智的決定拋棄以PC爲中心,擁抱各類設備和平臺,成爲一家軟件服務型企業。爲了達成這種願景必須構建新的微軟生態鏈,囊括Windows,Linux,OS X及其餘操做系統,覆蓋X86/ARM等處理器以及不一樣的設備(包括PC,Phone,全息眼鏡及其餘)。這些足見微軟的「野心」。隨着.NET Core 正式發佈大戰略邁出堅實的一步,6月27日讓咱們拭目以待吧。
參考內容
【1】 https://blogs.msdn.microsoft.com/dotnet/2014/12/04/introducing-net-core/
【2】 https://www.linkedin.com/pulse/too-many-net-jargons-net-what-balaje-sankar
【3】 https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/