上個月,微軟宣布它將開放更多.NET編程框架的源代碼,并且實現跨平臺,讓其能夠工作在Linux和Mac系統之上。這項工作的核心是.NET Core,這個開發堆棧將會是未來.NET版本的基礎。
12月4日,微軟的官員們給出了更多信息,介紹了該公司計劃如何停止建設不同版本的.NET Framework,并將所有.NET的工作統一起來跨越不同的Windows版本,以及非Windows操作系統。(感謝Tim Anderson和他分析這個問題的博客文章。)
微軟的官員們在本周的博客文章中承認,當微軟在2002年首次發布.NET Framework的時候,它只是一個框架。但是之后這個框架開始了飛速發展,出現了針對不同設備、不同平臺市場的不同子集。這種做法適用于開發者只需要瞄準特定垂直目標的情況——也就是說Windows Desktop、Windows Phone或者Windows Store。但是如果開發者們有水平的需求或者瞄準了一個以上Windows版本的時候,這種做法就沒用了。
微軟一直試圖用便攜類庫來解決這個問題,最近還加入了Windows Store應用(作為Windows 8的一部分)。但是這些解決方案都是有限的,并且有局限性。.NET Core想要超越這些局限,創建新的統一的.NET。
微軟的高管們解釋說,“.NET Core本質上是.NET框架的一個分支,它也是根據不同因素進行優化的。”他們還表示,“即使.NET Native(觸摸設備)和ASP.NET 5(服務器端網絡開發)有很大的不同,我們還是能夠提供統一的基類庫(BCL)。”
這個統一的BCL是微軟最新公開源代碼的.NET部分。
微軟的官員們表示,目前,微軟有兩個不同BCL的.NET CoreBCL:一個是.NET Native ("Project N"),另一個是針對CoreCLR使用的ASP.NET 5,但是大部分的BCL是通用的,這就意味著應用程序編程接口實際上使用了同樣的方式。
微軟的官員們表示,“我們認為.NET Core既不應該是專門針對.NET Native,也不應該是專門針對ASP.NET 5——這個BCL和運行時間都是通用的,并且采用了模塊化設計。因此,它構成了未來所有.NET垂直分類的基礎。”
微軟現在將.NET Core平臺作為NuGet包的一部分提供,這意味著將會在不同的時間推出不同的組件,如同Softies之前所說的那樣。
微軟的官員表示,.NET Framework將會繼續前進,并將不會基于.NET Core,但是仍然能夠通過PCL和共享項目實現代碼共享。
到明年有了Visual Studio 2015之后,微軟的目標是確保.NET Core是“.NET Framework的純子集”,所以不會有任何功能差距。但是在那以后,微軟希望.NET Core的“版本”將快于.NET Framework的版本,這意味著有時候會推出一個功能只適用于基于.NET Core的平臺,而不適用于.NET Framework平臺。
微軟的官員們表示,微軟計劃繼續更新.NET Framework,保持一年一次的節奏。會有一些功能子集被引入.NET Core之中。也將有一些專門針對.NET Framework的功能加入,諸如一些微軟將增加的、用以支持Windows Presentation Framework(WPF)的功能。
微軟的官員們表示,“我們的目標是盡量減少API和行為的差異性,同時不要打破現有.NET Framework應用程序的兼容性。”
在12月4日的“Introducing .NET Core”文章中,還有一些其他的點和細節值得一讀——特別是那些對微軟如何走向普適應用感興趣,對更通用的編程接口和開發工具有興趣的人更應該讀一讀。