.NET Core和.NET Standard有什么不同

近日,微软发布了.NET Core 2.0,但是开发人员中间仍然存在一些疑惑,就是.NET Core、.NET Standard、Xamarin和.NET Framework有什么不同

.NET Framework用于构建桌面应用程序和运行在互联网信息服务器(IIS)上的ASP.NET应用程序。它是第一个托管框架。

Xamarin是一个用于构建iOS、Android、macOS和桌面应用程序的框架。

.NET Core

.NET Core是免费、跨平台的,是托管框架的开源实现。它支持4种类型的应用程序:控制台、ASP.NET Core、云和通用Windows平台(UWP)。Windows FormsWindows Presentation Foundation(WPF)并不包含在.NET Core中。

从技术上讲,.NET Core仅支持控制台应用程序。ASP.NET Core和UWP是以.NET Core为基础构建的应用程序模型。

与.NET Framework不同,.NET Core没有作为Windows组件考虑。因此,更新是以NutGet包的形式,而不是通过Windows Update。由于.NET Core运行时安装成了App-Local,而应用程序升级是通过包管理器完成的,所以应用程序可以关联特定的.NET Core版本以及单独升级。

.NET Standard

托管框架的每一种实现都有一套自己的基类库。基类库(BCL)包含诸如异常处理、字符串、XML、I/O、网络和集合这样的类。

.NET Standard是一项实现BCL的规范。由于.NET实现需要遵循这项规范,所以应用程序开发人员就不用担心每一种托管框架实现的BCL不同。

框架类库(FCL),如WPF、WCF、ASP.NET,不包含在BCL中,因此,也就不包含在.NET Standard中。

.NET Standard与.NET实现之间的关系就和HTML规范与浏览器之间的关系一样。后者是前者的实现。

因此,.NET Framework、Xamarin和.NET Core,每一种托管框架都实现了.NET Standard中的BCL。随着计算机工业不断推出新的硬件和操作系统,将来还会出现新的.NET托管框架。该标准让应用程序开发人员知道,他们可以依赖于一套始终如一的API。

每个.NET版本都对应一个.NET Standard版本。

API一致,将应用程序移植到不同的托管实现以及提供工具都会更简单。

.NET Standard被定义为一个单独的NuGet包,因为所有的.NET实现都必须支持它。工具变得简单了,因为对于特定的版本,它们有一套相同的API。你还可以针对多个.NET实现构建一个库项目。

你还可以构建特定平台API的.NET Standard封装器。

.NET Standard vs 可移植类库

可移植类库做的不是同一件事吗?

可移植类使用多个平台均都支持的通用API。因此,支持的平台越多,可用的API就越少,而且,对于特定的平台组合,很难知道到底支持哪些API。对于一个新平台,已有的PCL必须重新编译。PCL还需要微软针对每个平台创建一个新的框架实现分支。

由于.NET Standard确定了API,而不是一个实现,所以不需要重新编译应用程序。任何新发布的.NET实现都实现了必须的库。应用程序不需要重新编译就可以运行在新的硬件平台或操作系统上。从理论上讲,在调用API时可能会捕获到NotSupportedException异常,但那种情况应该很少见。

小结

.NET Standard是一项API规范,每一个特定的版本,都定义了必须实现的基类库。

.NET Core是一个托管框架,针对构建控制台、云、ASP.NET Core和UWP应用程序进行了优化。每一种托管实现(如Xamarin、.NET Core或.NET Framework)都必须遵循.NET Standard实现BCL。

(0)

相关推荐

  • 【翻译】.NET 5 Preview 1 发布

    去年年底,我们发布了.NET Core 3.0和3.1.这些版本添加了桌面应用程序模型Windows Forms(WinForms)和WPF,ASP.NET Blazor用于构建SPA应用程序和用于构 ...

  • C#/NET Core推荐学习书籍升职加薪,值得拥有)

    思维导航: 前言 C#/.NET/.NET Core推荐学习书籍GitHub仓库地址 <APS.NET Core框架揭秘> <深入理解C#(第3版)> <CLR via ...

  • 【翻译】.NET 5 Preview8发布

    今天,.NET 5预览8发布了,对于.NET5.0的功能开发已经完成了,这必须要排除待处理的bug,预览8是最后一次预览版本.预计11月正式的.NET5.0版本发布之前还将发布两个正式之前的候选版本, ...

  • 3.介绍ASP.NET Core框架

    介绍ASP.NET Core框架 在这篇文章中,我将要向你们简短介绍一下ASP.NET Core 框架.当今社会,当提到软件开发,每个人都是讨论着开源以及跨平台开发.总所周知,微软是以它的基于Wind ...

  • .Net Core 3.x Api开发笔记 -- 创建新的Api项目(一)

    本节演示如何创建 .Net Core 3.1 Web Api 项目 使用环境:vs2019 第一步:选择项目模板 有人习惯给项目起名时用点分开,这里Api项目的名字我没有用点 . 分开(后期使用第三方 ...

  • 部署 Asp.Net Core 应用到 Docker

    前言: 今天不说Docker 是啥,容器是啥镜像又是啥(如果这些不知道,请自行学习),今天很单纯的将 .Net Core 应用程序部署到Docker上. 起因: 好多同学私信让我写篇能落地的[一步步] ...

  • 动手实现一个适用于.NET Core 的诊断工具

    今天 以下文章来源于全球技术精选 ,作者SpringLeee 全球技术精选dotnet 国内外新鲜技术资讯,优秀博客,开源项目分享平台 前言 大家可能对诊断工具并不陌生,从大名鼎鼎的 dotTrace ...

  • 【META分析】20-04-21 Standard Super Qualifier

    往期推荐 [META分析]周末两场标准构筑MO挑战赛 注:这场比赛时翟鲁达的 bug 仍在修复 在前两天 MO 上又举办了一场超级资格赛,相比于周末的 Challenge 挑战赛,这种决赛直接拿 PT ...

  • 20-02-15 Standard Challenge八强牌表

    上周末和世冠同时进行的还有每周的MO挑战赛,在上上周末标准环境陷入被白蓝控统治的僵局中后,上周末似乎局面又被完全打破,挑战赛八强共有3套不同组法的纯红快攻.1套铁木尔复归荒野.1套蓝绿闪现.1套白蓝控 ...

  • 2020-02-08 Standard Challenge 八强牌表

    T2环境已经由"稳定"发展成"病态",八强中共有6套白蓝控制和2套红黑牺牲,白蓝控制不出意料地已经统治了标准环境,在本周末将在夏威夷举办的世冠赛中,我个人预测还 ...

  • 2020-02-02 Standard Challenge八强牌表

    T2环境趋于稳定,上周末的MO大比赛中,八强是有1套白蓝控制.3套红黑牺牲.2套纯红快攻.1套纯白回血.1套铁木尔复归荒野 冠军  白蓝控制 这应该是目前看来T2最好的套牌了.主牌选择满编狗男女(4理 ...

  • 2020-01-18 Standard Challenge八强牌表

    新系列的第一场Mo大型T2比赛,看看有哪些强势的新套牌新思路 冠军 - 纯白快攻 没有用一张新牌,高爆发.胡了就无敌的小白快的确是新环境初期的一个好选择 亚军 - 纯黑献力 纯黑献力的思路是新系列一出 ...

  • 深入探究ASP.NET Core读取Request.Body的正确方式

    dotNET跨平台 今天 以下文章来源于yi念之间 ,作者yi念之间 前言 相信大家在使用ASP.NET Core进行开发的时候,肯定会涉及到读取Request.Body的场景,毕竟我们大部分的POS ...

  • 乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时

    TaylorShi dotNET跨平台 昨天 Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间 ...

  • ML.NET 示例:对象检测-ASP.NET Core Web和WPF桌面示例

    dotNET跨平台 今天以下文章来源于My IO ,作者My IO My IO记录工作和生活,将输入变成输出ML.NET 版本API 类型状态应用程序类型数据类型场景机器学习任务算法v1.5.0动态A ...