目的:
.NET Core是为了重新启动某些Framework组件而为其他人提供跨平台工作的机会。由于.NET Framework主要以托管(C#)代码为基础构建,因此这些部分不需要更改代码即可移至.NET Core。依赖于Windows特定组件的库必须被移除或重构以使用跨平台替代方案。这同样适用于您的应用程序。
历史:
.NET在2000年以前就已经出现了。框架代码在过去几年中已经得到了巩固,开发人员也从中受益。已经被移植到Core的大部分Framework代码都没有改变。这使.NET Core在构建应用程序的可靠框架方面领先一步。.NET Core也完全由Microsoft支持还有越来越活跃的开源社区例如红帽组织。这降低了为您的应用程序使用Core的风险。
为了理解.NET Core,它有助于理解.NET Framework。微软在21世纪初发布了.NET Framework。.NET Framework是一个仅限于Windows的开发框架,它在最底层提供了内存管理,安全性,异常处理和许多其他功能。.NET框架附带一大堆库,可执行从XML解析到HTTP请求的各种功能。它还支持几种语言,并将它们编译成相同的通用中间语言; 任何语言都可以使用任何其他语言构建的库。这些关键概念也出现在.NET Core中。
2016年,微软收购了Xamarin并发布了.NET Core 1.0。之前Xamarin已经移植了.NET框架的大部分内容来运行在基于Linux / Unix的操作系统上。一些代码可以在.NET Framework,Xamarin和新的.NET Core之间共享,但编译后的二进制文件不能。.NET Core的一部分努力是创建一个标准化的平台,允许所有.NET实现共享相同的库。
优点:
- ASP.NET Core和ASP.NET之间的性能差异是几个数量级。大部分的ASP.NET被传统的System.Web库所限制。.NET Framework支持旧版本的ASP.NET项目,而且这个约束限制了ASP.NET的发展。微软决定重写整个架构。这意味着打破变化,但结果是值得的。
- 如果正在编写Web应用程序或服务,那么ASP.NET Core是一个很好的搭建平台。它具有出色的性能和低内存占用。许多功能可以使您的应用程序更容易开发和维护。
差异:
.NET Core不仅是Linux和Mac的.NET Framework。微软并没有移植所有的.NET Framework,对于ASP.NET客户来说,ASP.NET团队是.NET Core的驱动因素。MVC,Web API和SignalR都可以在.NET Core中找到,或者在路线图上。
概念:
.NET Core是一个开源通用的开发框架,支持跨平台,即支持在Window,macOS,Linux等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式/物联网方案中进行使用。.NET Core的源码放在GitHub上,由微软官方和社区共同支持。
它和传统的.NET Framework,属于“子集—超集”的关系,或者你也可以简单地认为它就是.NET Framework的跨平台版本(基于BCL的层面上看)。这是因为在当前版本中(1.0),.NET Core中的大部分核心代码都是从.NET Framework中继承重写的,包括Runtime和Libraries(如GC, JIT, 部分类型)。
现在的.NET Core 1.0版本是一个很小的核心,APIs和工具也并不完整,但是随着.Net Core的不断完善,补充的Apis和创新也会一起整合到.NET Framework中。也就是说,.NET Core微软会同时更新.NET Framework和.NET Core,他们就像俩兄弟,共同努力致富(致谁的富?当然是.NET开发者们),实现所谓的天下大同,也就是.NET 标准2.0
组成:
- .NET Runtime
- Framework Libraries,
- SDK Tools 和 Language Compilers (SDK工具和编译器)
- dotnet’app host
用来选取并执行对应运行时,提供组件载入原则和启动.NET Core应用程序。SDK也是通过相同程序启动。
特性:
跨平台
可以在Windows,macOS,Linux上运行灵活的部署机制
Portable applications(便携式应用)
这种部署机制和传统的.NET Framework相似,只要目标平台上存在.NET Core Runtime即可。
Self-contained application(自宿主应用)
顾名思义,这种部署机制将应用和运行时共同打包,即便目标平台上没有安装.NET Core Runtime也能正常使用
- 命令行工具
.NET程序所有的运行脚本都可以用命令行工具执行(cmd,bash)这里有几个常见的donnet命令 - 兼容性
通过.NET Standard Library与.NET Framework,Xamarin,Mono兼容
- 开源
.NET Core从属于.NET基金会,由微软进行官方支持。使用MIT和Apache 2开源协议,文档协议遵循CC-BY
引用:
为什么选择.NetCore;
.NetCore