.NET Standard - interface/API definition, not implementation, that specifies what functionality is supported at what version number.
.NET Framework - older desktop/windows-only that implements the .NET Standard. Various other smaller frameworks created over the years for mobile, embedded, etc.
.NET Core - newest cross-platform framework that implements the .NET Standard, although with less coverage than the full framework because it's new, but .NET Core 2.0 will have much more in parity and will eventually outpace.
ASP.NET - web framework built on top of the .NET Framework that offers webforms, mvc, web api, razor views, etc related to making webapps.
ASP.NET Core - web framework built on top of the .NET Core framework that offers a faster, streamlined pipeline/middleware model with mvc/web api, razor views, SPA services and integration, etc.
Yes Microsoft is one of the worst companies at naming -- however it makes perfect sense that ASP.NET Core (the web framework) targets .NET Core (the underlying cross-platform framework) which itself implements .NET Standard.
It's a case of superset functionality being layered on top. Eventually the .NET Core code will move faster and outpace .NET Framework, so you will be able to run .NET Framework libraries inside .NET Core apps but not run .NET Core apps inside .NET Framework.
> Yes Microsoft is one of the worst companies at naming
I think you're being too generous. Microsoft branded it's Office Suite, BA Suite and Operating system .NET once upon a time. They'd have named their own variety of orange juice OJ.NET if they'd had one.
Every major company has naming problems from Google to Oracle to IBM and more. It's just teams, bureaucracy and marketing forces all fighting against each other.
I do think Microsoft could just hire a VP of Naming who's in charge of all names and improve productivity by billions but alas, this is where we are today. However, once the names become familiar, the actual issues are not nearly as dire as made out to be.
I was looking into Microsofts ERP options, it was so incredibly frustrating to understand and compare their different offerings that I just gave up, but they did have an option to contact their sales department, which was probably their plan all along.
Don't forget that ASP.NET Core can target not only .NET Core but also .NET Framework. We had to target .NET Framework in our latest ASP.NET Core web app because we still need access to COM+/Interop.
This is exactly the issue being discussed here - ASP.NET Core will not run on .NET Framework in the future.
Today .NET Core is younger and smaller so it's easy to also run .NET Core apps on .NET Framework since .NET Framework is larger and has everything implemented already - but as we progress with new APIs in .NET Standard, .NET Framework will continue to fall behind (until it gets those major multi-year updates). So you can still use older ASP.NET Core versions (like today's 1.x) on .NET Framework but eventually the newer versions will be too far ahead of the .NET Framework.
However, .NET Core is cross-platform and runs just fine on windows, brings its own dependencies, and will be able to use .NET Framework libraries so this whole issue is overblown. System.Drawing, ActiveDirectory, and other APIs will be added to .NET Core soon enough. If you really need COM interop, then either just stick with .NET Framework apps or use older .NET Core apps.
".NET Framework" made sense when there was only one real framework available, but there is now Core, Compact, Mono, Unity, etc. which makes it confusing.
".NET Desktop" can be used instead, although it's also misleading since it has nothing to do with desktops. ".NET Full Framework" is also used often.
Perhaps the best name would be ".NET Legacy Framework" with the understanding that it is a heavy, slow-moving framework implementation that only runs on Windows (and is limited by the Windows version as well).
.NET Framework - older desktop/windows-only that implements the .NET Standard. Various other smaller frameworks created over the years for mobile, embedded, etc.
.NET Core - newest cross-platform framework that implements the .NET Standard, although with less coverage than the full framework because it's new, but .NET Core 2.0 will have much more in parity and will eventually outpace.
ASP.NET - web framework built on top of the .NET Framework that offers webforms, mvc, web api, razor views, etc related to making webapps.
ASP.NET Core - web framework built on top of the .NET Core framework that offers a faster, streamlined pipeline/middleware model with mvc/web api, razor views, SPA services and integration, etc.
Yes Microsoft is one of the worst companies at naming -- however it makes perfect sense that ASP.NET Core (the web framework) targets .NET Core (the underlying cross-platform framework) which itself implements .NET Standard.
It's a case of superset functionality being layered on top. Eventually the .NET Core code will move faster and outpace .NET Framework, so you will be able to run .NET Framework libraries inside .NET Core apps but not run .NET Core apps inside .NET Framework.