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

    xiaoxiao2021-04-18  212

    在.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

    {

    //特定于平台的API

    void 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为目标平台。

    本文转自d1net(转载)

    相关资源:七夕情人节表白HTML源码(两款)

    最新回复(0)