因为现在很多人对这几者之间的关系还不甚了解,这里根据我所知来做一个大概的介绍......
.NET Standard:
.NET标准,只要符合这个标准实现类库,即可在支持此标准的Runtime上运行
>>>>>>>>>
.NET Framework:
完整的.NET,只支持Windows,不同版本支持的.NET Standard不同,最新支持.NET Standard 2.x
>>>>>>>>>
Mono:
Mono即为.NET Framework的跨平台完整实现(除去WPF/WCF等少部分未实现),支持 X64/X86/部分ARM 平台,
同样支持.NET Standard,不同版本支持的.NET Standard不同,最新支持.NET Standard 2.x,
注:
使用Mono对现有项目进行跨平台需要注意项目所引用的库是否使用了Windows独有的功能/API等
>>>>>>>>>
.NET Core:
.NET跨平台实现的版本,支持X64/X86/部分ARM平台,虽说是.NET跨平台实现的版本,但和原来的.NET Framework实际有极大的不同,
包括不同的底层实现(如 RyuJIT,Core CLR,LLILC 等),性能更加优越,没有WINFORM/WPF这种桌面开发的框架等等
并且.NET Core也是完全对.NET Standard的支持,最新支持.NET Standard 2.x
(有兴趣的小伙伴可以搜一搜博客园中对.NET Core的性能测试文章)
注:
依托于.NET Core的应用程序/WEB程序可直接发布内嵌Runtime的版本,无需额外安装Runtime环境
>>>>>>>>>
ASP.NET Core(MVC/WebAPI等等):
最新的.NET WEB开发框架,完全按照.NET Standard实现,完全的模块化安装(按需安装模块),
没有ASP.NET的System.Web.dll这一大坨的拖累,性能优于原有ASP.NET(MVC/WebAPI)(有兴趣的小伙伴可以测试一下),
同样,因为是完全按照.NET Standard实现的WEB框架,
所以可运行在: .NET Framework , Mono , .NET Core 上,
注:
由于至今ORACLE未出.NET Core的驱动,并且 .NET Core 现有第三方类库较少,
所以可考虑使用.NET Framework/Mono作为 ASP.NET Core 的运行环境
(但使用第三方库需要注意是否调用了Windows独有功能/API等)
>>>>>>>>>
以上.....如有不对还望诸位多多指正....别误导了别人.....
(由 玩双截棍的熊猫 2017-11-30 整理发布,转载请注明出处和链接以及作者名字...)