.NET Core初探

infoq發表於2014-12-11

  微軟在connect()大會上宣佈.NET Core將開源。它將提供一個支援包括Windows、Linux和Mac OSX在內的所有平臺的單一程式碼庫。近日,微軟專案經理Immo Landwerth給出了更多關於.NET Core是什麼以及它將如何“為未來所有的.NET平臺奠定基礎”的資訊。

  Immo解釋說,.NET實際上是一系列框架,每個框架針對一個特定平臺,而且歸不同的微軟團隊所有,這在API和實現方面都不可避免地產生了差異。.NET Core是.NET Framework的一個新的分支,旨在為特定於平臺的擴充套件提供一個共同的基礎。每個擴充套件提供只能用於特定應用程式模型的API,例如,面向.NET本地應用程式的WinRT互操作擴充套件或者面向ASP.NET 5應用程式的MVC。這個共同的層稱為統一基類庫(BCL),它位於一個包含.NET執行時的薄層之上。

  據Immo介紹,基類庫在.NET已經提供的可移植類庫的基礎上又邁進了一步。在.NET中,PCL只定義API外觀,而實現仍然特定於每個平臺,這樣就產生了不同程度的實現不一致性。BCL不僅提供一個跨所有支援平臺的共同的API,而且實際上也以統一的方式實現:“BCL大部分是純MSIL程式集,可以原樣共享。”有趣地是,微軟為那些只能用於特定平臺的API選擇的方法確保他們在所有平臺上都可以工作:

比起回過頭來努力在上層提供一個一致的API棧,要求每個擁有特定元件的團隊思考他們的API如何跨所有平臺工作要簡單許多。那是因為可移植性不是可以後續提供的東西。

  .NET Core帶來的另外一項有趣的變化是使用NuGet作為基本的交付系統。.NET Core將會作為一個細粒度的包的集合交付,每個包對應一個程式集。同時,微軟將提供.NET Core分發包。本質上,它只是經過微軟測試的、特定.NET版本的所有包的快照副本,用於那些不需要額外的自由進行NuGet包混搭的場景。

  Immo介紹,NuGet的使用以及向更加模組化的設計轉變使“.NET Core平臺有可能轉變成一種應用程式本地框架。”如此一來,每個應用程式將只需要部署框架中它需要的部分。這樣做的主要好處是,當應用程式需要升級.NET Core時,將不會破壞與其它現有應用程式的相容性,而升級整臺機器共享的.NET Framework就會如此。

  最後,Immo明確指出,在Visual Studio 2015釋出之前,.NET Core將是.NET Framework的一個純子集。不過將來,.NET Core的釋出週期將會比.NET Framework短,所以在有一些時間點上,一項功能將只在基於.NET Core的平臺上提供,直到.NET Framework平臺的版本趕上來。

  有一點必須注意,.NET Core目前並不支援桌面應用程式,後者將仍然使用.NET Framework,而且“沒有計劃提供一個跨平臺的UI框架。”在回覆其博文的一條評論時,Immo寫道,他們“絕對會在.NET Core中提供Console API”。因此,開發人員將可以用它編寫控制檯應用程式,雖然他並沒有提供任何時間表。

  讀者可以在NuGet上瀏覽所有的.NET Core包,它們用字首“System.”或“Microsoft.”標識。原始碼在GitHub上提供。要試用.NET Core,可以下載Visual Studio 2015預覽版

  英文原文:A First Look to .NET Core

相關文章