What's the difference between ASP.NET 5, .NET Core, and ASP.NET Core 5? [closed]

Solution 1:

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

Solution 2:

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".

Solution 3:

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)

Solution 4:

ASP.NET Core is the next version of ASP.NET MVC 5, Yes, the version number is confusing! It has gone through a few name changes. It started as ASP.NET vNext, then changed to ASP.NET 5, next was renamed to ASP.NET MVC 6 and eventually became ASP.NET Core 1.0.

The main difference between ASP.NET and ASP.NET Core are

  • Platform Independent Features, ASP.NET Core provides hosting in multiple platform (Win / Linux / Mac OS) hosting (Cross platform).
  • Introduced new lighter version of CLR and assemblies with non-dependent frameworks.

  • Frameworks are a complete rewrite (removal of dependencies with DI) and Its Open source Project.

  • Project default project template is updated with Type scripts insted of JQuery.
  • Improved new security features and completely decoupling for all its dependent framework.

  • Updated project template with angular and json based configuration & enhanced packages support with node modules.

  • Supports for Visual Studio IDE ( 2015 v3 + 2017 and above) & VS Code IDE.

If you are new to this, Please refer Here

Solution 5:

By the way there is also a Mono runtime as an alternative to CoreCLR in the linux apt and Docker package. Mono is still the default when it's up to installing DNX. The whole thing about the "Core" is that it's a cross platform .net framework and at some point hosting an ASP.NET 5 app will not make use of IIS, Apache, Mono etc., but the DNX and Libuv.