Microsoft .NET originally came in one flavor. However as it has
expanded to different platforms, it has spawned variants.
The original .NET platform is known as the .NET Framework. It
includes many sophisticated features but these are heavily based
around the Windows platform.
The .NET Core platform is a version adapted for cross-platform
deployment. As the name suggests, some features from the original
.NET Framework are not available. The numbers of missing features
are not large but they tend to be important. On the plus side, the
.NET Core platform can be faster than the original .NET Framework,
though this is rather dependent on your particular code and
The .NET Standard platform is an abstraction of the features
common to both the .NET Framework and the .NET Core. The benefit
here is that it allows assemblies to be built that will run on both
platforms. However of course it is a lowest common denominator
approach which means for practical purposes you are limited to the
features in .NET Core.
There are practical problems here as relates to the useful
features that the .NET Framework provides. Microsoft may want
people to move to a core platform but people who are relying on
these features are likely to wait until they have been implemented.
However Microsoft are unlikely to do this because there are good
reasons for each missing feature in .NET Core. Some features have
been intentionally deprecated while others are so heavily dependent
on Windows that they amount to a port of the entire system.
In .NET 5 we should see a unified .NET Core and .NET Framework
release. How fully this is backwards compatible will be interesting