欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别介绍

程序员文章站 2022-03-04 13:09:57
前段时日微软(microsoft)正式发布了.net core 2.0,在很多开发社区中反响不错。但还是有一些开发者发出了疑问,.net core、xamarin、.net standard和.net...

前段时日微软(microsoft)正式发布了.net core 2.0,在很多开发社区中反响不错。但还是有一些开发者发出了疑问,.net core、xamarin、.net standard和.net framework之间有哪些不同呢?本文就为大家简单描述一下这四者之间的区别。

.net core

.net core是免费、跨平台的,是托管框架的开源实现。它支持4种类型的应用程序:控制台、http://asp.net core、云和通用windows平台(uwp)。windows forms和windows presentation foundation(wpf)并不包含在.net core中。

从技术上讲,.net core仅支持控制台应用程序。http://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、http://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)上的http://asp.net应用程序。它是第一个托管框架。
  • xamarin则是一个用于构建ios、android、macos和桌面应用程序的框架。
  • 以上所述是小编给大家介绍的.net core、xamarin、.net standard和.net framework四者之间的区别,希望对大家有所帮助。在此也非常感谢大家对网站的支持!