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

前段时日微软(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不一样。orm

框架类库(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和桌面应用程序的框架。
相关文章
相关标签/搜索