骑猪兜风

.Net Core及.Net Standard主要概念回顾

骑猪兜风 2016-10-10 13:22:03    201205 次浏览

  英文原文:Reviewing Key Concepts in .Net Core and .Net Standard

  在 .Net Core 之前,选择编译目标是一个相对简单的操作。现在,开发人员面临多种可能,选择一个目标不再那么显而易见了。要想对 .Net Core 有一个全面的了解,就要了解两个主要的概念:“目标框架别名(Target Framework Moniker)”和 .Net Standard。

  目标框架别名(TFM)

  目标框架别名是 .NET Core 中应用程序所针对的框架类型 版本号的 ID。我们可以把别名分成两个不同的类型:跨平台的目标 .Net Standard 和平台实现,如 .Net 4.6、.Net Core 1.0 和 Xamarin。

 .Net Standard

  .Net Standard 库是 .Net Core 可移植性的核心。其目的是定义标准的 API 集。这些 API,如集合、线程、反射,是由 .Net Core、.Net 4.5、Xamarin 和 Mono 等平台实现的。它们是开发人员用来构建自己的库和应用程序的基本构建块。

  从 1.0 到 2.0,.Net Standard 的每个版本都定义了一组特定的库。下面的代码直观地展示了标准库和平台之间的关系

interface INetStandard10 { void Primitives (); void Reflection (); void Tasks (); void Collections (); void Linq (); } interface INetStandard11 : INetStandard10 { void ConcurrentCollections (); void InteropServices (); } interface INetFramework45 : INetStandard11 { //特定于平台的 APIvoid AppDomain (); void Xml (); void Drawing (); void SystemWeb (); void WPF (); void WindowsForms (); void WCF (); }

  CoreFx GitHub 库提供了所有 API 的列表及其相关的 netstandard 版本。

  框架/运行时别名

  除 netstandard 之外的别名是可以让应用程序在其中运行的、实际的运行时环境。对于新应用程序,常用的别名如下:

  • .NET Core - netcoreapp
  • .NET Framework - net
  • Universal Windows Platform - uap
  • Xamarin IOs - xamarinios
  • Mono Android - monoandroid

  下面是一个简单的平台选择指南:

应用开发人员:编码应以 netcoreapp1.0、uap10.0、net452、xamarinios 等 TFM 为目标平台;

包/库作者:尽量以 netstandard 的最低版本为目标,那样可以在所有支持那个 netstandard 版本以及更高版本的平台上运行。

  .Net Core 和 netcoreapp1.0 比较

  虽然表面上看起来相似,但 .Net Core 和 netcoreapp1.0 的意思完全不同。.Net Core 这个叫法中没有版本号,通常用于描述实现 .Net 模块化、解决多个平台之间二进制兼容性问题的总体方案。但是,netcoreapp1.0 有更具体的意义。它是可以在 Windows、Mac OS 和 Linux 上运行的跨平台运行时的别名。简而言之,.Net Core 既可以指跨平台的方案,也可以指跨平台的运行时,这要视情况而定。

  关于这一点,一个具体的应用场景是从 Asp.Net 迁移到 Asp.Net Core 时依赖项不支持 .Net Core 的问题。如果只是想以 .Net Framework 为目标平台,则这种迁移是可能的。例如,这让你可以使用 Asp.Net Core,但仍然以 .Net 4.6 为目标平台

内容加载中