ASP.NET Core is a collection of libraries that forms a framework for building web applications. It is not the upgrade of the current ASP.NET Framework. It is a brand new version written from scratch.
ASP.NET Core is an open source and cloud-optimized web framework for developing modern web applications that can be developed and run on Windows, Linux and the Mac. It includes the MVC framework, which now combines the features of MVC and Web API into a single web programming framework.
ASP.NET Core apps can run on .NET Core or on the full .NET Framework.
ASP.NET Core is a redesign of ASP.NET 4.x. For this reason it was initially, called ASP.NET 5, but later renamed to ASP.NET Core 1.0.
ASP.NET Core up to version 2.2 ran on both .NET Core & .NET Framework.
But since version 3.1, you can only use .NET / .NET Core to develop and run an ASP.NET Core application.
The latest version right now is ASP.NET Core 6.0 and is based on .NET 6.0
NET Core is an open-source framework maintained by Microsoft and available on GitHub under MIT and Apache 2 Licenses. View, download, or contribute to the source code using the following GitHub repositories:
.NET Core Runtime: https://github.com/dotnet/runtime
.NET Core SDK: https://github.com/dotnet/sdk
ASP.NET Core: https://github.com/dotnet/aspnetcore
Language Compiler Platform Roslyn: https://github.com/dotnet/roslyn
Why .NET Core?
There are some limitations to the .NET Framework. For example, it only runs on the Windows OS Platform. Also, you need to use different .NET APIs for different Windows devices such as Windows Desktop, Windows Store, Windows Phone, and Web Applications.
.NET Core Characteristics:
1. Cross-Platform: .NET Core runs on Windows, Linux, and macOS operating systems. There is different runtime for each operating system that executes the code and generates the same output.
2. Consistent Across Architecture: Execute the code with the same behavior in different instruction set architectures, including x64, x86, and ARM.
3. Wide Range of Applications: Various types of applications can be developed and run on .NET Core platforms such as Console, Desktop, Web, Mobile, Cloud, IoT, ML, Microservices, Gaming, etc…
4. Support Multiple Languages: You can use C#, F#, and Visual Basic programming to develop .NET Core applications. You can use your favorite IDE, including Visual Studio 2017/2019, Visual Studio Code, Sublime Text, Vim, etc…
5. CLI Tools: .NET Core includes CLI tools (Command Line Interface) for development and continuous integration.
6. Flexible Deployment: .NET Core applications can be deployed user-wide or system-wide or with Docker Containers.
7. Compatibility: Compatible with .NET Framework and Mono APIs by using .NET Standard Specification.
.NET Core Composition:
The .NET Core Framework is composed of the following parts:
CLI Tools: A set of tooling for development and deployment.
Roslyn: .NET Compiler Platform for C# and Visual Basic.NET languages from Microsoft.
CoreFx: A Set of framework libraries.
CoreCLR: A JIT-based CLR (Common Language Runtime). CoreCLR is the .NET execution engine in .NET Core, performing functions such as garbage collection and compilation of machine code.
Difference with Previous Versions
- Application based on version ASP.NET 4.x and before run only on windows platform, where as ASP.NET Core applications can be developed and run across different platforms like Windows, macOS, or Linux.
- Application based on version ASP.NET 4.x and before can be hosted only on IIS, where as ASP.NET Core applications can be hosted on IIS, Apache, Docker, or even self-host in your own process.
- From a development standpoint, you can either use Visual Studio or Visual Studio Code for building .NET Core applications. You can also use third party editors like Sublime.
Similarity with Previous Versions
- With ASP.NET core, we use the same unified programming model to create MVC style web applications and ASP.NET Web API's.
- In both the models, the Controller that we create inherits from the same Controller base class and returns IActionResult.