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