.NET Core和.NET Standard有什么不同
近日,微软发布了.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。
原文链接http://www.infoq.com/cn/news/2017/10/dotnet-core-standard-difference
参考资料
https://github.com/dotnet/standard/blob/master/docs/versions.md
推荐阅读
-
一张图搞定 .NET Framework, .NET Core 和 .NET Standard 的区别
-
为什么ASP.NET Core 数据库连接串的值和appsettings.json配的不一样?
-
为什么ASP.NET Core 数据库连接串的值和appsettings.json配的不一样?
-
C++ C# VC VC.net以及VC++有什么区别和联系?
-
.NET Core和.NET Standard有什么不同
-
.NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别介绍
-
一张图搞定 .NET Framework, .NET Core 和 .NET Standard 的区别
-
C++ C# VC VC.net以及VC++有什么区别和联系?
-
.NET Core和.NET Standard有什么不同
-
php和net有什么区别