2016年微软发布了.NET Core 1.0 迄今已有好几年了,但是很多.NET程序员也一定有以下疑问:
从上面图中我们可以看到.net 主要分为三个部分.net FrameWork,.net Core,Xamarin
UWP即Windows 10 中的Universal Windows Platform简称。即Windows通用应用平台,在Win 10 Mobile/Surface(Windows平板电脑)/PC/Xbox/HoloLens等平台上运行,uwp不同于传统pc上的exe应用也跟只适用于手机端的app有本质区别。它并不是为某一个终端而设计,而是可以在所有windows10设备上运行。
为什么要引入.NET Standard?
.NET生态在发展的过程中长期都是.NET Framework这条线,后面加入适用于 iOS、Android 和 Windows 的新式高性能应用程序开发的Xamarin,后续又增加了适用于 Windows、macOS 和 Linux 的.NET Core。于是.NET 生态出现了“三足鼎立”的局面。
有三种版本的`.NET`,意味着你需要掌握三种不同的基础类库以写出可以在三种平台上运行的代码。
能不能让开发者们只需要掌握一种基础类库就可以适用于不同平台,换句话说写一份代码就可以在.NET Framework,.NET Core,Xamarin都能运行?而.NET Standard的出现就解决了这个问题。.NET Standard背后的动机是在.NET生态系统中建立更大的一致性。
.NET Standard是微软为跨平台所规划的.NET Framework相关平台于系统之间的相依性标准,在此标准之下,能确保标准的应用程序接口与对象能够跨平台使用。.NET平台标准是以引用组件的方式存在,其本身并没有任何实现,真正的实现是由平台拥有者所进行,而客户端使用简单的NuGet版本戳记即可获得正确的平台版本。
我相信绝大数有一定资历的 .NET 程序员都已经在.NET Framework项目中积累了大量的经验,那么这些项目能否直接迁移到.NET Core中呢。注意,并不是所有的.net Framework的代码都可以直接运行在.net core上。
这是微软一直在做的事情,也是广大开发者的心声。
在 .NET 的整个历史记录中,它都尝试在版本之间以及 .NET 各个风格之间保持高级别的兼容性。 .NET Core 将继续坚守这个准则。 尽管可以将 .NET Core 视为独立于 .NET Framework 的新技术,但下面的两个因素使 .NET Core 无法脱离 .NET Framework:
在希望保持各个 .NET 实现之间的兼容性的同时,开发人员还希望在各个 .NET Core 版本之间保持高级别的兼容性。 具体而言,为 .NET Core 早期版本编写的代码应在较高版本的 .NET Core 上无缝运行。 实际上,许多开发人员都希望新发布的 .NET Core 版本中的新 API 也应该与引入这些 API 的预发布版本兼容。
从微软官方的表述可以看到,依然存在影响兼容性的变更。对新手来说,是没有思想包袱的,但是对于老鸟,建议空杯心态,将 .NET Core 当作全新的技术来学。