1. 简单说,都是.net standard所定义的接口的实现,都是 .net standard的儿子。
C#
is a programming language, using which you can create a programs, with some new features in 7th version.
.Net Standard
is a rule (well, standard) by which libraries should be built to be understandable by each other.
Portable Class Libraries is a special version of libraries being able to be consumed either by .Net
Framework or .Net
Core.
.Net Core is a framework, like general .Net, with different architecture, which supports .Net Standard starting from v1.6
, so it cannot easily interact with previous versions of .Net
.
.Net 4.7
is a new version of .Net
Framework which supports .Net Standard 1.6 too, so it would be able to interact with a .Net
Core apps.
Announced .Net
Standard 2.0 will provide a universal platform for .Net
Framework, .Net
Core, Xamarin, etc., to run.
.NET Core & .NET Framework 都是 NET Standard Library 的实现,一种是跨平台,而另一种是Windows下特有的,除实现NET Standard Library外 .NET Core 和 .NET Framework 都有各自特有的实现。.NET Standard Library 是跨操作系统的关键所在,它定义了一组接口,而每个操作系统有各自的实现,.NET Core通过nuget可以动态下载当前操作系统的实现,从而实现跨操作系统(暨跨操作系统共享代码)。
.NET Core 更依赖于Nuget,允许本地application在部署时动态下载需要的class library。而.NET Framework需要在系统中预装。这样.NET Core的部署比.NET Framework 更简单快速同样也更轻便。
ASP.NET Core 有两种形态的存在:
ASP.NET Core Web Application(.NET Core)
依赖于.NET Core的ASP.NET 只可以调用.NET Core的API,可以在多个操作系统上运行。(可见下图下半部分的Reference Manager,在assemblies中没有.NET Framework 中的库)
ASP.NET Core Web Application(.NET Framework)
依赖于.NET Core & .NET Framework 的ASP.NET 可以调用.NET Core&.NET Framework的API ,只可以在Windows下运行
3 .NET Core & Mono
Mono是.NET Framework的开源版本的实现,在某些特性上和.NET Core 很类似比如开源,跨操作系统。目前.NET CORE 会从Mono上吸取经验,发展壮大最终可以更好的在除Windows外的其他操作系统上运行。另外Mone支持的App Models要比.NET Core多(例如Windows Forms)。