[转].NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别
转至:https://segmentfault.com/a/1190000011539920
前段时日微软(Microsoft)正式发布了.NET Core 2.0,在很多开发社区中反响不错。但还是有一些开发者发出了疑问,.NET Core、Xamarin、.NET Standard和.NET Framework之间有哪些不同呢?本文就为大家简单描述一下这四者之间的区别。
.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 Framework用于构建桌面应用程序和运行在互联网信息服务器(IIS)上的ASP.NET应用程序。它是第一个托管框架。
- Xamarin则是一个用于构建iOS、Android、macOS和桌面应用程序的框架。
[转].NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别的更多相关文章
- .NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别
前段时日微软(Microsoft)正式发布了.NET Core 2.0,在很多开发社区中反响不错.但还是有一些开发者发出了疑问,.NET Core.Xamarin..NET Standard和.NET ...
- ASP.NET Core中GetService()和GetRequiredService()之间的区别
上篇文章<在.NET Core 3.0中的WPF中使用IOC图文教程>中,我们尝试在WPF中应用.NET Core内置的IOC进行编程,在解析MainWindow的时候我用了GetRequ ...
- ASP.NET Core 基础知识(一) ASP.NET Core是什么?与.NET Framework、Mono之间的关系 ?
一.概念: ASP.NET Core 是一个开源的.跨平台的 .NET 实现.而 .NET Framework 是基于 Windows 的 .NET 实现,Mono 是 .NET Framework ...
- .NET Core、.NET Standard、Xamarin和.NET Framework对比
近日,微软发布了.NET Core 2.0,但是开发人员中间仍然存在一些疑惑,就是.NET Core..NET Standard.Xamarin和.NET Framework有什么不同. .NET F ...
- .NET Core和.NET Standard有什么不同
近日,微软发布了.NET Core 2.0,但是开发人员中间仍然存在一些疑惑,就是.NET Core..NET Standard.Xamarin和.NET Framework有什么不同. .N ...
- .NET Core和.NET Standard
作为.NET家族的最新成员,有很多关于.NET Core和.NET Standard的误解,以及它们于.NET Framework之间的区别.在这篇文章,我会准确的解释他们究竟是什么,并看看何时应选择 ...
- .NET Standard - 揭秘 .NET Core 和 .NET Standard[转自MSDN]
作为 .NET 系列的最新成员,.NET Core 和 .NET Standard 的概念及其与 .NET Framework 的区别并不十分明确.在本文中,我将准确介绍每个产品及其适用场景. 在详细 ...
- DotNet .Net Framework与Net Core与Net Standard 以及.NET5
Net Framework 是什么 1.Net Framework 是Net的一种实现,在此类库上我们可以使用C#,VB,F#进行程序编写,主要用于构建Windows 下的应用程序 2.有两部分组成部 ...
- Qt,Qt/E,Qtopia Core, Qtopia之间的区别和联系
转自:http://www.qtcn.org/bbs/read.php?tid=10373 关于Qt,Qt/E,Qtopia Core, Qtopia这些版本之间的区别和联系: Qt泛指Qt的所有桌面 ...
随机推荐
- jmeter-用户定义的变量
添加-配置元件-用户定义的变量 请求中出现变量值的位置,用${_tbip}替换 脚本执行完成,在查看结果树中debug sampler中可以看见变量名和变量值
- pandas 中有关isin()函数的介绍,python中del解释
- pip升级后出现cannot import name 'main'
运行pip install --upgrade pip还有出现这个情况. cd /usr/bin/pip3 修改成: from pip import __main__ if __name__ == ...
- Hillstone设备管理-恢复出厂设置
1.CLI命令行操作 unset all: 根据提示选择是否保存当前配置y/n: 选择是否重启y/n: 系统重启后即恢复到出厂设置. 2.webUI操作 “系统”—“配置”,点击“清除”按钮,系统会提 ...
- python爬虫系列之初识爬虫
前言 我们这里主要是利用requests模块和bs4模块进行简单的爬虫的讲解,让大家可以对爬虫有了初步的认识,我们通过爬几个简单网站,让大家循序渐进的掌握爬虫的基础知识,做网络爬虫还是需要基本的前端的 ...
- layer弹出层不居中解决方案(转)
@感谢参考文章 原文内容: 一.问题描述 用layer做操作结果提示时,发现如果页面超出屏幕的高度时,弹出的提示不是屏幕居中,而是在页面高度的中间,如果一个页面的高度比较大,就看不到提示了. 还有一种 ...
- Unity正交模式摄像机与屏幕适配的方法
public class CameraAuto : MonoBehaviour { float fDefaultRatio = 720.0f / 1280.0f;//预先设定屏幕大小1280*720 ...
- jmeter导入DB数据再优化
由于同一个迭代中每天都在执行.之前设计的思路是同个迭代只执行一次插入DB操作!! 因而没有在插入数据前没有做版本.产品类型.页面类型.接口名.接口名是否相等判断操作. 因此,若是这些条件相等,数据不是 ...
- 检查手机是否安装外置SD卡
/** * 检测是否安装外置SD卡 * * @return */ public boolean checkSDcard() { StorageList list = new StorageList(t ...
- 机器学习之支持向量机(SVM)学习笔记
支持向量机是一种二分类算法,算法目的是找到一个最佳超平面将属于不同种类的数据分隔开.当有新数据输入时,判断该数据在超平面的哪一侧,继而决定其类别. 具体实现思路: 训练过程即找到最佳的分隔超平面的过程 ...