.NET 生态

.NET 生态  2016年微软发布了.NET Core 1.0 迄今已有好几年了,但是很多.NET程序员也一定有以下疑问:

  • .NET Core到底是不是.NET 的下一个版本?还是说只是.NET支持跨平台的一个版本?
  • 作为传统的.NET开发者或者说开发的程序都是在windows环境下面工作的 , 有没有必要学习.NET Core?
  • .NET Core和.NET Framework有什么不同?
  • 在开发新的程序是应该怎么选择.NET Core 和.NET Framework?

.NET 生态

文章插图
 
  从上面图中我们可以看到.net 主要分为三个部分.net FrameWork,.net Core,Xamarin
  • XAMARIN 主要用来构建App的(包括IOS , Android Windows)主要用的是C#语言
  • .NET Framework这个是我们现在经常用的 , 用这个可以创建windows应用程序还有web applications  , 现在你可以用它创建Winform  , UWP ,wpf 等等相关的应用程序  , web 方面就是Asp.net MVC
  • .NET Core 是微软推出的最新的开源的 , 跨平台的框架 , 用它可以创建的应用可以运行在mac , linux上。.net core 支持UWP 和 ASP.NET Core 。
UWP即Windows 10 中的Universal Windows Platform简称 。即Windows通用应用平台 , 在Win 10 Mobile/Surface(Windows平板电脑)/PC/Xbox/HoloLens等平台上运行 , uwp不同于传统pc上的exe应用也跟只适用于手机端的app有本质区别 。它并不是为某一个终端而设计 , 而是可以在所有windows10设备上运行 。
.NET Standard  为什么要引入.NET Standard?
  .NET生态在发展的过程中长期都是.NET Framework这条线,后面加入适用于 iOS、Android 和 Windows 的新式高性能应用程序开发的Xamarin,后续又增加了适用于 Windows、macOS 和 Linux 的.NET Core 。于是.NET 生态出现了“三足鼎立”的局面 。
.NET 生态

文章插图
 
  有三种版本的`.NET` , 意味着你需要掌握三种不同的基础类库以写出可以在三种平台上运行的代码 。
  能不能让开发者们只需要掌握一种基础类库就可以适用于不同平台,换句话说写一份代码就可以在.NET Framework,.NET Core,Xamarin都能运行?而.NET Standard的出现就解决了这个问题 。.NET Standard背后的动机是在.NET生态系统中建立更大的一致性 。
.NET Standard是微软为跨平台所规划的.NET Framework相关平台于系统之间的相依性标准 , 在此标准之下 , 能确保标准的应用程序接口与对象能够跨平台使用 。.NET平台标准是以引用组件的方式存在 , 其本身并没有任何实现 , 真正的实现是由平台拥有者所进行 , 而客户端使用简单的NuGet版本戳记即可获得正确的平台版本 。
.NET Framework老项目能够迁移到.NET Core吗  我相信绝大数有一定资历的 .NET 程序员都已经在.NET Framework项目中积累了大量的经验,那么这些项目能否直接迁移到.NET Core中呢 。注意,并不是所有的.net Framework的代码都可以直接运行在.net core上 。
  这是微软一直在做的事情,也是广大开发者的心声 。
  在 .NET 的整个历史记录中 , 它都尝试在版本之间以及 .NET 各个风格之间保持高级别的兼容性 。.NET Core 将继续坚守这个准则 。尽管可以将 .NET Core 视为独立于 .NET Framework 的新技术 , 但下面的两个因素使 .NET Core 无法脱离 .NET Framework:
  • 有许多最初开发过或在继续开发 .NET Framework 应用程序的开发人员 。他们希望各个 .NET 实现中的行为保持一致 。
  • .NET Standard 库项目允许开发人员创建面向 .NET Core 和 .NET Framework 共享的通用 API 的库 。开发人员希望用于 .NET Core 应用程序的库与用于 .NET Framework 应用程序的同一个库的行为相同
  在希望保持各个 .NET 实现之间的兼容性的同时 , 开发人员还希望在各个 .NET Core 版本之间保持高级别的兼容性 。具体而言 , 为 .NET Core 早期版本编写的代码应在较高版本的 .NET Core 上无缝运行 。实际上 , 许多开发人员都希望新发布的 .NET Core 版本中的新 API 也应该与引入这些 API 的预发布版本兼容 。
从 .NET Framework 迁移到 .NET Core
  • 重大更改
  • 不可用的技术
  从微软官方的表述可以看到,依然存在影响兼容性的变更 。对新手来说,是没有思想包袱的,但是对于老鸟,建议空杯心态,将 .NET Core 当作全新的技术来学 。


推荐阅读