.NET Core與.NET Framework、Mono之間的關係

隨着微軟的.NET開源的推動,如今在.NET的實現上有了三個.NET Framework,Mono和.NET Core。常常被問起Mono的穩定性怎麼樣,後續Mono的前景如何,要回答這個問題就須要搞清楚這三個.NET 實現之間的關係和未來如何演進。html

到目前爲止(2015.2.17),微軟在Windows平臺上的.NET Framework的實現最爲完整,可是.NET Framework和windows操做系統有很深的綁定,難以跨平臺。Xamarin主導的Mono項目在.NET 的基礎類庫實現上有一些不夠完美。隨着2014年 Xamarin和微軟發起.NET基金會,微軟在2014年11月份 開放.NET框架源代碼。在.NET開源基金會的統一規劃下誕生了.NET Core 。也就是說.NET Core Framework是參考.NET Framework從新開發的.NET實現,Mono是.NET Framework的一個開源的、跨平臺的實現。常常有朋友對Mono和.NET Core 有疑問,微軟主導開發了.NET Core,那麼還有Mono什麼事呢。回答這個問題就是要搞清楚咱們有各式各樣的操做系統,windows,linux,mac,bsd,unix,各類操做系統之間的差別是很大的,最明顯的就是UI方面,瞭解這些差別就很容易搞清楚Mono未來仍是頗有事情作的了。linux

.NET Core是一個模塊化的開發棧,它是將來的全部.NET平臺的基礎。.NET Core Framework團隊的高級程序經理Immo Landwerth在博客中也提到.NET Core開源有兩大緣由:git

做爲跨平臺的.NET的基礎。github

構建並受益於一個更爲強大的生態系統。web

好比.NET和Mono二者是徹底獨立的,不少代碼是平臺無關的,因此不少工做都是重複勞動。合做構建一個單一的軟件棧是最理想的。根據文章 .NET Core Open Source Update,目前.NET Core 只完成了.NET Framework的25%的功能。windows

.NET平臺有三大件:框架

、C#語言,也就是ECMA-334,這是天生跨平臺的,C#的附帶內容,你應該完全的明白公共運行時(CLR)。CLR以及公共語言基礎(CLI)標準在ECMA-335中有定義,這也是CLR標準。模塊化

2、Visual Studio,這是天生不能跨平臺的,Mono有Xamarin studio;spa

3、.NET Framework基礎類庫。若是.NET Framework基礎類庫不能跨平臺,沒人會關心.NET的跨平臺。因此微軟不得不投入大量精力去開發全新的.NET Core Framework(就是如今github上的https://github.com/dotnet/corefx ),一邊將.NET Framework中有用的代碼搬過來,一邊根據跨平臺的需求從新實現。操作系統

從上面的分析,.NET跨平臺的最大障礙就是基礎類庫的跨平臺,由此也能夠看出.NET基礎類庫的重要性。Mono也是在基礎類庫的實現上存在瑕疵,好比對WPF,WCF等框架的支持上不完善。像WPF這樣的用戶界面開發技術,各個平臺上都有本身的原生開發庫,用戶界面應用原生開發,iOS應用應該用iOS的用戶界面庫纔會讓人以爲在iOS上最合適,.NET應用應該用微軟的Windows用戶界面庫。

隨着.NET Core Framework的開發完成,.NET FrameworkMono將基於.NET Core從新構建。.NET Framework將成爲.NET CoreWindows上的一個發行版,Mono將成爲.NET Core的一個跨平臺發行版。

相關文章
相關標籤/搜索