Recently in an official .NET Framework Blog it was announced that .NET Core is going open source. Ironically author mentions that what .NET Core
is will be explained in next post. Some more details are mentioned in another announce post.
From a supplied diagram:
and articles text itself, I would assume that .NET Core (beside obvious things like being open-sourced) is a modular re-implementation of full .NET. i.e. framework components are loaded as necessary, much like NuGet packages are loaded now. And now ASP.NET 5 is one of the modules that is already implemented. Is my understanding of .NET Core correct? Maybe I'm missing something?
I have found recent article which I found both short and very good. It covers .NET Standard, .NET Core and .NET Framework and their relationship. Highly recommend it.
I have found recent article which I found both short and very good. It covers .NET Standard, .NET Core and .NET Framework and their relationship. Highly recommend it. Unfortunatelly have no time to adapt and put it here.
Original answer content below:
So, based on latest official entry on the subject, here some key points as I see them:
So .NET Native and ASP.NET 5 are just a test "subjects" for new framework configuration, partially this maybe because they are quite different:
see, they even need separate low-level, but major part of BCL is still common:
I.e. magenta rectangles on top will be added massively with new App Models, but base will remain common.
Nuget deployment:
Relationship with current frameworks:
Summary:
Basically this can be thought as a .NET 4.6 with changed distribution model, which, simultaneously, is being in a process of becoming open source.
.NET Core is a general purpose development platform maintained by Microsoft and the .NET community on GitHub . It is cross-platform, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios.
See the full community documentation
From the .NET blog Announcing .NET 2015 Preview: A New Era for .NET:
And:
In short: first, there was the Microsoft .NET Framework, which consists of a runtime that executes application and library code, and a nearly fully documented standard class library.
The runtime is the Common Language Runtime, which implements the Common Language Infrastructure, works with The JIT compiler to run the CIL (formerly MSIL) bytecode.
Microsoft's specification and implementation of .NET were, given its history and purpose, very Windows- and IIS-centered and "fat". There are variations with fewer libraries, namespaces and types, but few of them were useful for web or desktop development or are troublesome to port from a legal standpoint.
So in order to provide a non-Microsoft version of .NET, which could run on non-Windows machines, an alternative had to be developed. Not only the runtime has to be ported for that, but also the entire Framework Class Library to become well-adopted. On top of that, to be fully independent from Microsoft, a compiler for the most commonly used languages will be required.
Mono is one of few, if not the only alternative implementation of the runtime, which runs on various OSes besides Windows, almost all namespaces from the Framework Class Library as of .NET 4.5 and a VB and C# compiler.
Enter .NET Core: an open-source implementation of the runtime, and a minimal base class library. All additional functionality is delivered through NuGet packages, deploying the specific runtime, framework libraries and third-party packages with the application itself.
ASP.NET Core is a new version of MVC and WebAPI, bundled together with a thin HTTP server abstraction, that runs on the .NET Core runtime - but also on the .NET Framework.
Current documentation has good explanation of what is .NET Core, areas to use and so on. The following characteristics best define .NET Core:
And here is what .NET Core includes: