Understanding .NET Framework, .NET Core, .NET Standard And Future .NET

Introduction 

 
Microsoft .NET has three flavours in the market right now. Namely, .NET Framework, .NET Core and .NET Standard. All these types address different concerns related to application development. We will try to understand, How .NET Core and .NET Standard are related. Also, we look at how .NET Framework and .NET Standard are linked to each other, what is not available in .NET Standard, and their key differences. First, let us have a brief summary of each version.
 

.NET Framework

 
Microsoft .NET Framework is the original / initial implementation of .NET . It can run applications on Windows platform only. The full implementation of .NET is in .NET Framework. The latest version is .NET Framework 4.8. It was released on 2019-04-18. Web applications built using this platform can only be hosted on IIS. It supports ASP.NET Web Forms, WinForms, WCF, Silverlight, etc. The building blocks of .NET Framework are Common Language Runtime (CLR) and Base Class Libraries (BCL) and Common Intermediate Language (CIL). The Code written in C#, F# or VB is converted by the compiler into Common Intermediate Language. The code is executed by CLR using Just In Time Compiler (JIT) to machine-specific code.
 

.NET Core

 
.NET Core is the cross-platform and open-source implementation of .NET hosted on Github in the form of multiple repositories. It can run applications on multiple platforms. It is maintained by Microsoft and .NET community. They are released under MIT, Apache 2 and Creative Commons Attribution 4.0. It is free. The latest version available right now is .NET Core 3.1. It was released on 2020-02-18. It supports modern application frameworks such as gRPC, ML.NET for Machine Learning, ASP.NET Core Razor Pages, Blazor (for WebAssembly), UWP etc. The building blocks of .NET Core are CoreCLR and CoreFX. CoreCLR is a runtime for .NET Core. It includes JIT, GC and several low-level classes. CoreFX is made of foundation class libraries. These come as alternatives to CLR and BCL of .NET Framework. It comes integrated with .NET Core CLI. As per Microsoft, all the innovations will take place in .NET Core only.
 

.NET Standard

 
.NET Standard is a specification that can be used across all .NET implementations. It is used for developing library projects only. This means if we are creating a library in .NET Standard we can use those in .NET Framework and .NET Core. To create uniformity means to allow usage in all the .NET implementations. .NET Standard has support for Mono platform, Xamarin, Universal Windows Platform, and Unity. The implementation compatibility chart is available here. This can guide you which .NET Standard Implementation version is compatible with all the packages. This means we should use this to create library projects using .NET Standard, which must be used instead of Portable Class Libraries Project types. Now, let us take a look at a few more details.
 

Comparisons

 
.NET Core
.NET Framework
.NET Standard
For New Application Development.
For Maintenance of Existing Applications only.
For Developing Library Projects only.
Cross-Platform
Windows Only
Cross-Platform
High Performance
Average Performance
-
Open Source
https://github.com/dotnet/core-sdk
Private
Open Source
https://github.com/dotnet/standard
CoreCLR and CoreFX
CLR and BCL
-
Visual Studio / Visual Studio Code
Visual Studio
Visual Studio / Visual Studio Code
Free
Free
Free
 

And .NET 5, .NET 6 and So On

 
The future of .NET is .NET 5. This was announced by Microsoft on 6th May 2019. This platform is focused to be unified. This will be the next implementation of .NET Core. This release is expected in November 2020. It will expand and take all the best capabilities of .NET using .NET Core, Xamarin, Mono and .NET Framework. Applications built on this platform will be able to target from Windows, watchOS, WebAssembly, etc. This will be built on CoreFX. It will provide interoperability with Objective C, Java and Swift. It will also come with AOT - Compilation. The future shipment will be once a year. It will make it more standardised and simplified.
 
[Image Courtesy: https://devblogs.microsoft.com/dotnet/introducing-net-5/ ]
 
That’s it!! I hope that this post was informative. Thanks for reading.
 
Possible improvements are welcome in comments :)