.Net Core 1.0是微軟推出的一個(gè)參考.NET Framework重新開發(fā)的.NET實(shí)現(xiàn),它是未來的所有.NET平臺(tái)的基礎(chǔ)。隨著.NET Core Framework的開發(fā)完成,.NET Framework與Mono將基于.NET Core重新構(gòu)建。.NET Framework將成為.NET Core在Windows上的一個(gè)發(fā)行版,Mono將成為.NET Core的一個(gè)跨平臺(tái)發(fā)行版。
軟件介紹:
隨著微軟的.NET開源的推進(jìn),現(xiàn)在在.NET的實(shí)現(xiàn)上有了三個(gè).NET Framework,Mono和.NET Core。經(jīng)常被問起Mono的穩(wěn)定性怎么樣,后續(xù)Mono的前景如何,要回答這個(gè)問題就需要搞清楚這三個(gè).NET 實(shí)現(xiàn)之間的關(guān)系和將來如何演進(jìn)。
到目前為止(2015.2.17),微軟在Windows平臺(tái)上的.NET Framework的實(shí)現(xiàn)最為完整,但是.NET Framework和windows操作系統(tǒng)有很深的綁定,難以跨平臺(tái)。Xamarin主導(dǎo)的Mono項(xiàng)目在.NET 的基礎(chǔ)類庫實(shí)現(xiàn)上有一些不夠完美。隨著2014年 Xamarin和微軟發(fā)起.NET基金會(huì),微軟在2014年11月份 開放.NET框架源代碼。在.NET開源基金會(huì)的統(tǒng)一規(guī)劃下誕生了.NET Core 。也就是說.NET Core Framework是參考.NET Framework重新開發(fā)的.NET實(shí)現(xiàn),Mono是.NET Framework的一個(gè)開源的、跨平臺(tái)的實(shí)現(xiàn)。經(jīng)常有朋友對(duì)Mono和.NET Core 有疑問,微軟主導(dǎo)開發(fā)了.NET Core,那么還有Mono什么事呢;卮疬@個(gè)問題就是要搞清楚我們有各式各樣的操作系統(tǒng),windows,linux,mac,bsd,unix,各種操作系統(tǒng)之間的差異是很大的,最明顯的就是UI方面,了解這些差異就很容易搞清楚Mono將來還是很有事情做的了。
.NET Core是一個(gè)模塊化的開發(fā)棧,它是未來的所有.NET平臺(tái)的基礎(chǔ)。.NET Core Framework團(tuán)隊(duì)的高級(jí)程序經(jīng)理Immo Landwerth在博客中也提到.NET Core開源有兩大原因:
作為跨平臺(tái)的.NET的基礎(chǔ)。
構(gòu)建并受益于一個(gè)更為強(qiáng)大的生態(tài)系統(tǒng)。
比如.NET和Mono兩者是完全獨(dú)立的,很多代碼是平臺(tái)無關(guān)的,所以很多工作都是重復(fù)勞動(dòng)。合作構(gòu)建一個(gè)單一的軟件棧是最理想的。根據(jù)文章 .NET Core Open Source Update,目前.NET Core 只完成了.NET Framework的25%的功能。
.net平臺(tái)三大件:
1、C#語言,也就是ECMA-334,這是天生跨平臺(tái)的,C#的附帶內(nèi)容,你應(yīng)該徹底的明白公共運(yùn)行時(shí)(CLR)。CLR以及公共語言基礎(chǔ)(CLI)標(biāo)準(zhǔn)在ECMA-335中有定義,這也是CLR標(biāo)準(zhǔn)。
2、Visual Studio,這是天生不能跨平臺(tái)的,Mono有Xamarin studio;
3、.NET Framework基礎(chǔ)類庫。如果.NET Framework基礎(chǔ)類庫不能跨平臺(tái),沒人會(huì)關(guān)心.NET的跨平臺(tái)。所以微軟不得不投入大量精力去開發(fā)全新的.NET Core Framework(就是現(xiàn)在github上的https://github.com/dotnet/corefx。,一邊將.NET Framework中有用的代碼搬過來,一邊根據(jù)跨平臺(tái)的需求重新實(shí)現(xiàn)。
從上面的分析,.NET跨平臺(tái)的最大障礙就是基礎(chǔ)類庫的跨平臺(tái),由此也可以看出.NET基礎(chǔ)類庫的重要性。Mono也是在基礎(chǔ)類庫的實(shí)現(xiàn)上存在瑕疵,比如對(duì)WPF,WCF等框架的支持上不完善。像WPF這樣的用戶界面開發(fā)技術(shù),各個(gè)平臺(tái)上都有自己的原生開發(fā)庫,用戶界面應(yīng)用原生開發(fā),iOS應(yīng)用應(yīng)該用iOS的用戶界面庫才會(huì)讓人覺得在iOS上最合適,.NET應(yīng)用應(yīng)該用微軟的Windows用戶界面庫。