当前位置: 移动技术网 > IT编程>开发语言>.net > .NET Core和.NET Standard有什么不同

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

2018年10月27日  | 移动技术网IT编程  | 我要评论

男子吸毒认错孩子,浮沉陆帆,奥巴马 罗姆尼

 

 

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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网