What's the difference between ASP.NET 5, .NET Core, and ASP.NET Core 5?
ASP.NET 5 (now ASP.NET Core 1.0)
Is the next generation of ASP.NET that provides a familiar and modern framework for web and cloud scenarios. It includes the next versions of ASP.NET MVC, Web API, Web Pages and SignalR. It is a high-performance and modular design, and supports full side by side to make it seamless to migrate from on premise to the cloud. These products are actively developed by the ASP.NET team in collaboration with a community of open source developers. Together we are dedicated to creating the best possible platform for web development.
Update: It has been renamed from ASP.NET 5 to ASP.Net Core 1.0.
.NET Core:
.NET Core is the small optimized runtime that is the basis of ASP.NET Core. It currently runs on Windows, Linux, and Mac. It is a high-performance and modular design, and supports having several applications on a web server each one with its own copy of the .NET Core runtime, enabling a full side by side experience, and that will make it easy to adopt new .NET Core versions without affecting other apps, and this makes .NET Core architecture a leap forward from the current classic .NET 4.6. These products are actively developed by the .NET team and in collaboration with a community of open source developers. Together we are dedicated to improving and extending the .NET platform with new features and for new scenarios.
.NET Core has two major components. It includes a small runtime that is built from the same codebase as the .NET Framework CLR. The .NET Core runtime includes the same GC and JIT (RyuJIT), but doesn’t include features like Application Domains or Code Access Security. The runtime is delivered on NuGet, via the Microsoft.CoreCLR package.
.NET Core also includes the base class libraries. These libraries are largely the same code as the .NET Framework class libraries, but have been factored (removal of dependencies) to enable us to ship a smaller set of libraries. These libraries are shipped as System.* NuGet packages on NuGet.org.
For more information, see Introducing .NET Core
ASP.NET 5 is a new platform based on DNX (.NET Execution Environment). DNX is on duty for loading CLR. There're two kind of DNX now: for Full .NET CLR (from .NET Framework) and for CoreCLR. CoreCLR is a new cross-platform light CLR (runs on Win/Linux/Mac).
ASP.NET 5 works seamlessly on CLR/CoreCLR as DNX abstracts it from runtime being used.
IL assemblies build for old .NET still be used with new CoreCLR and DNX. So ASP.NET 5 functionality is a bunch of nuget packages.
Strictly speaking there're no such things as "asp.net core 5" and ".net core" now (as CLR != .NET). There's "ASP.NET 5 running on CoreCLR".
IMO it's better to consider "ASP.NET 5" as ".NET 5".
There is no ASP.net Core 5 yet. In fact, Microsoft decided to change the .net 5 (The version after 4.6) to a brand new name : .net Core
So the version released on June 2016 is actually .net Core 1.0
The reason why they gave it a new name is the very fundamental change they've made in it.
These fundamental changes include :
- Cross platform: It works on Windows/Linux/Mac as opposed to the previous versions working only on Windows/IIS
- It's fully open source now and you can see every bit of its code in GitHub.
- Its performance (especially in ASP.net) is way better than the previous versions, as you can easily customize your request pipeline according to what you need (through middlewares).If you are familiar with nodejs and ExpressJs framework it's so similar to ExpressJs. In some cases it performs better than NodeJs. Have a look into this benchmark.
- It's designed with a modern mindset of app development, for highly distributed cloud applications, microservices and containers (docker)