.NET Core初探

微软在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运行时的薄层之上。

.NET Core初探_第1张图片

据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

你可能感兴趣的:(.NET Core初探)