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.
Current Microsoft policy is to push .NET Core. However 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.
Microsoft policy is driven by the massive growth in Azure, which
up to 2018, has doubled in revenue every year. Should this change
then it is possible that there might be a change in Microsoft
policy - perhaps to a more unified architecture. But until then the
focus is likely to be on .NET features which further fuel