CHAPTER 2
Before trying to understand the reason for its existence, let's first try to define what .NET Core and ASP.NET Core are.
The framework .NET Core 2.2 is a modular, cross-platform, cloud-optimized version of the .NET Framework, consisting of the CoreCLR and the implementation of the .NET Standard Library 2.0. One of the main features of this library is the ability to install only the features that are needed for the application you are building, reducing its footprint and the possibility of installing the library itself within the application. This makes it possible for applications built with different versions to co-exist on the same machine without the compatibility problems typical of the full .NET Framework.
ASP.NET Core is a complete rewrite of ASP.NET, built to be cross-platform, completely open-source, and without the limitations of backward compatibility. Like .NET Core, ASP.NET Core is built with a modular approach. This means the application you build can include only the needed features without taking on additional burdens. This is made possible by the new startup and execution environment, based on the Open Web Interface for .NET (OWIN) standard. In addition, ASP.NET Core comes with many interesting features that we are going to see throughout this book, like an integrated dependency injection system and a new application framework that unifies the programming models of ASP.NET MVC and Web API.
The .NET Standard won't be covered in detail in this book, but since it has been mentioned (and you have probably heard about it), let's define what it is.
.NET Standard is a specification that defines a set of APIs a .NET platform must implement. Its aim is to simplify the sharing of code and libraries among different implementation of .NET. The latest version of these specifications, .NET Standard 2.0, includes all the APIs available in the .NET Framework 4.6.1.
.NET Standard 2.0 is also supported by:
This means that libraries developed for .NET Standard 2.0 can be used in any of those platforms. It's a big advantage for libraries’ developers, since they no longer have to develop different libraries to target different platforms.
For you as a developer, the main takeaway is that .NET Core 2.0 has feature parity with the "full" .NET Framework 4.6.1, and this makes it possible to port older applications to .NET Core.