低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

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

2017 年 10 月 12 日

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

查看英文原文.NET Core and .NET Standard: What Is the Difference?

2017 年 10 月 12 日 19:006639
用户头像

发布了 1008 篇内容, 共 315.1 次阅读, 收获喜欢 284 次。

关注

评论

发布
暂无评论
发现更多内容

Soul 网关源码阅读(四)Dubbo请求概览

Java 源码阅读 网关

百度面试被算法血虐,闭关29天肝完445页算法神仙笔记成功入职字节跳动!

Java架构之路

Java 程序员 架构 面试 编程语言

2021年,字节/百度/阿里相继发布50W+优质Java岗(含内部面试真题及答案)

996小迁

Java 程序员 架构 面试d 面试大厂真题

2020最新拼多多Java面试题(现场五面),全面涵盖Java高级到高并发

Java成神之路

Java 程序员 架构 面试 编程语言

在数据分析、挖掘方面,有哪些ETL工具值得推荐?

会飞的鱼

大数据处理 kettle 海豚调度 批量任务 ETL

刚参加完阿里P6面试归来(Offer已斩获),6点面试经验总结

Java成神之路

Java 程序员 架构 面试 编程语言

Java 程序经验小结:剖析@SuppressWarinings注解

后台技术汇

28天写作

物流快递公司APP架构设计

jorden wang

特斯拉自建ERP的背后

明道云

从CPU到XPU进化,英特尔对业界放了什么大招?

intel001

Soul 网关源码阅读(二)代码初步运行

Java 源码阅读 网关

工作10年,面试超过500人想进阿里的同学,总结出的108道Java面试题

Java成神之路

Java 程序员 架构 面试 编程语言

阿里开发10年技术核心总结,Springboot+Redis文档,送给努力上进的程序员

Java成神之路

Java 程序员 架构 面试 编程语言

Nginx 的负载均衡模式有哪些?它的实现原理是什么?

码农架构

nginx 架构 微服务

极客训练营知识点思维导图

jorden wang

矿机挖矿APP系统模式开发平台

v16629866266

训练营第十三周作业

大脸猫

GitHub标星150K的神仙笔记,3个月肝完成功面进美团定级3-2

Java架构之路

Java 程序员 架构 面试 编程语言

Soul 网关源码阅读(三)请求处理概览

Java 源码阅读 网关

Soul 网关源码阅读(一) 概览

Java 源码阅读 网关

PHP转JAVA开发30分钟实战攻略

dothetrick

Java php

初识ClickHouse——安装与入门

Simon

Clickhouse

安卓开发实战!闭关在家37天“吃透”这份345页PDF,成功定级腾讯T3-2

欢喜学安卓

android 程序员 面试 移动开发

蚂蚁Java三面:二叉树+HTTPS加密+自旋锁+缓存穿透(送答案)

Java成神之路

Java 程序员 架构 面试 编程语言

智能量化对冲搬砖套利交易软件APP系统开发

开發I852946OIIO

系统开发

解读容器的 2020:寻找云原生的下一站

阿里巴巴云原生

Docker 云计算 Serverless 容器 云原生

面试阿里Java岗,技术总监真正关心的核心能力是什么?

Java架构追梦

Java 编程 架构

Spring的@Import 注解的作用与用法

程序员小毕

Java spring 源码 架构 注解

架构师训练营第十三周笔记

李日盛

笔记

华云大咖说|企业混合云构建之道

华云数据

云计算 桌面云

iOS性能优化 — 五、App启动优化

iOSer

ios 性能优化 性能分析

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

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