近日,微软发布了.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。

原文链接

http://www.infoq.com/cn/news/2017/10/dotnet-core-standard-difference

参考资料

https://github.com/dotnet/standard/blob/master/docs/versions.md

.NET Core和.NET Standard有什么不同的更多相关文章

  1. .NET Core和.NET Standard

    作为.NET家族的最新成员,有很多关于.NET Core和.NET Standard的误解,以及它们于.NET Framework之间的区别.在这篇文章,我会准确的解释他们究竟是什么,并看看何时应选择 ...

  2. .NET Standard - 揭秘 .NET Core 和 .NET Standard[转自MSDN]

    作为 .NET 系列的最新成员,.NET Core 和 .NET Standard 的概念及其与 .NET Framework 的区别并不十分明确.在本文中,我将准确介绍每个产品及其适用场景. 在详细 ...

  3. .NET Core、.NET Standard、Xamarin和.NET Framework对比

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

  4. 你不得不知道的 .NET CORE —— .NET Framework, .NET Core 和 .NET Standard 的区别

    .NET Framework 和 .NET Core 是平台应用框架,而 .NET Standard 是 .NET 底层库.因此只要用 .NET Standard 工程来写的代码可以直接在上层的平台应 ...

  5. .Net Core和.Net Standard直观理解

    .NET framework和.NET Core里面有一些部分,内容是相同的. 这部分相同的内容,就被称为标准库...即NET Standard Library. 而那些不同的部分,则分别叫做.NET ...

  6. Net Framework,Net Core 和 Net Standard 区别

    前几天我在一个群里看到有关这方面的讨论,最后感觉讨论的不是很清晰,有幸的是我们的项目去年就开始迁移NetCore的调研了,我个人多多少少也是有过这方面的研究.下面我将说一下我自己对着三个的认识如果有不 ...

  7. 一张图搞定 .NET Framework, .NET Core 和 .NET Standard 的区别

    最近开始研究.NET Core,有张图一看就能明白他们之前的关系. 上图己经能够说明.NET Framework和.NET Core其实是实现了 .NET Standard相关的东西,或者说Frame ...

  8. .NET Core和.NET Standard 区别与联系

    每一种托管实现(如Xamarin..NET Core或.NET Framework)都必须遵循.NET Standard实现BCL..NET STANDARD LIBRARY是.net 标准库,.NE ...

  9. DotNet .Net Framework与Net Core与Net Standard 以及.NET5

    Net Framework 是什么 1.Net Framework 是Net的一种实现,在此类库上我们可以使用C#,VB,F#进行程序编写,主要用于构建Windows 下的应用程序 2.有两部分组成部 ...

随机推荐

  1. 《HelloGitHub》第 26 期

    公告 五月初 hellogithub.com 网站做了优化和试错.因为我个人能力原因,导致这段时间网站出现了间断性不能访问,现在问题已经修复.多谢大家的支持.理解和反馈. 本期新增了"星图& ...

  2. 大白话5分钟带你走进人工智能-第三节最大似然推导mse损失函数(深度解析最小二乘来源)(1)

                                                    第三节最大似然推导mse损失函数(深度解析最小二乘来源)        在第二节中,我们介绍了高斯分布的 ...

  3. Python-爬取妹子图(单线程和多线程版本)

    一.参考文章 Python爬虫之——爬取妹子图片 上述文章中的代码讲述的非常清楚,我的基本能思路也是这样,本篇文章中的代码仅仅做了一些异常处理和一些日志显示优化工作,写此文章主要是当做笔记,方便以后查 ...

  4. 《前端之路》之 Babel 下一代 JavaScript 语法编译器

    写本章的内容的出发点主要是 为了对于之前关于 JS 版本的一个总结,在之前的开发中,我们始终对于 ECMAScript 的版本的更新不够重视,以至于在后面的 开发过程中,我们始终会被各种新奇的语法打断 ...

  5. 基于 HTTP 请求拦截,快速解决跨域和代理 Mock

    近几年,随着 Web 开发逐渐成熟,前后端分离的架构设计越来越被众多开发者认可,使得前端和后端可以专注各自的职能,降低沟通成本,提高开发效率. 在前后端分离的开发模式下,前端和后端工程师得以并行工作. ...

  6. Linux V4L2之camera

    一.硬件知识 1. 摄像头硬件结构和工作原理,如图1&图2 外部光线穿过lens镜头,经过红外滤光片后光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字 ...

  7. 从零单排学Redis【铂金二】

    前言 只有光头才能变强 好的,今天我们要上[铂金二]了,如果还没有上铂金的,赶紧先去蹭蹭经验再回来(不然不带你上分了): 从零单排学Redis[青铜] 从零单排学Redis[白银] 从零单排学Redi ...

  8. Docker最全教程之使用.NET Core推送钉钉消息(十九)

    前言 上一篇我们通过实战分享了使用Go推送钉钉消息,由于技痒,笔者现在也编写了一个.NET Core的Demo,作为简单的对照和说明. 最后,由于精力有限,笔者希望有兴趣的朋友可以分享下使用CoreR ...

  9. .net mvc + layui做图片上传(一)

    图片上传和展示是互联网应用中比较常见的一个功能,最近做的一个门户网站项目就有多个需要上传图片的功能模块.关于这部分内容,本来功能不复杂,但后面做起来却还是出现了一些波折.因为缺乏经验,对几种图片上传的 ...

  10. 面向对象OOP概念描述

    面向对象三大特征:封装,继承,多态 封装就是把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法 继承就是在已经存在的类的定义作为基础,建立新的技术.新定义的类可以添加新的数据或功能,也可以 ...