.NET?Core、Xamarin、.NET?Standard和.NET?Framework四者之间的区别介绍
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
前段时日微软(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四者之间的区别,希望对大家有所帮助。在此也非常感谢大家对程序员之家网站的支持!
相关文章
NopCommerce架构分析之(七)主题Theme皮肤管理器
本文主要介绍NopCommerce的皮肤管理机制,NopCommerce提供默认的皮肤,我们也可以制作自己的皮肤,以实现个性化定制。2016-04-04ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXml
ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXmlReader()之间的区别...2006-10-10在ASP.NET 2.0中操作数据之六十九:处理Computed Columns列
SQL Server创建表的时候允许我们创建computed columns列,这种列的值源与表达式,并且是只读的,所以我们不能通过Insert和Update为其赋值,本文具体讲解创建和调用显示的方法和步骤。2016-05-05在ASP.NET 2.0中操作数据之六十五:在TableAdapters中创建新的存储过程
本文主要讲解使用TableAdapter设置向导自动创建增删改查的存储过程,虽然自动创建存储过程可以节省时间,但他们会包含一些无用的参数,下节我们会介绍TableAdapter使用现有的存储过程。2016-05-05解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介
这篇文章主要介绍ASP.NET 5简介以及对各个版本号进行解释,ASP.NET 5中新的变化,需要的朋友可以参考下。2016-06-06ASP.NET 2.0中的数据操作之八:使用两个DropDownList过滤的主/从报表
本文主要介绍在ASP.NET 2.0中如何如何将DropDownList和另一个DropDownList控件关联,选择产品分类和具体的产品时,使用DetailsView显示产品的详细信息。2016-05-05在MacOS+Linux+Nginx中发布和部署Asp.Net?Core
这篇文章介绍了在MacOS+Linux+Nginx中发布和部署Asp.Net?Core,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-12-12在ASP.NET 2.0中操作数据之五十八:在程序启动阶段缓存数据
前面我们分别介绍了在ObjectDataSource缓存数据和在分层架构中缓存数据,本文介绍ASP.NET 2.0中在程序启动阶段在Global.asax文件中缓存数据。2016-05-05
最新评论