.NET Framework v4.6 -- The full framework that can only run on Windows.
However, because this is the full framework,
that means you get WCF, WPF, and all functionality. You can think of this as your normal .NET Windows development that
you're probably doing today. It does include [Link] WebForms, MVC, Core, and SignalR. If you're using .NET 4.5 today,
this is your next natural upgrade path.
.NET Core -- A subset framework that doesn't include everything in the full 4.6 Framework. However it is intended to run
cross-platform on Windows, Mac, or Linux. You do lose some functionality however, such as WCF, WPF. But you'll still
have [Link] Core (no WebForms), but not SignalR yet. SignalR support is intended to come in a later version. This uses
the dotnet CLI (command-line interface) for compiling applications, or if you're on Windows then you can use Visual
Studio.
.NET Native -- Native compilation of the .NET Core framework. Instead of doing normal JIT compiling at runtime of your
.exe, this will do an AOT compilation that can potentially do some better optimizations of your code using the C++
backend compiler (or LLVM using LLILC). When you do this, you are targeting a specific platform, such as "Linux 64-bit".
The benefits are quicker start-up times, potentially smaller memory requirements, hopefully better runtime performance,
and emits only one single binary file (you won't need to install the .NET Framework on the target machine). The tradeoff
however is portability to other platforms--you'll have separate binaries for Linux, MacOS, Windows, 32-bit, 64-bit, etc.
This currently only works for Windows Store apps but more work is being done so it'll work on normal .NET apps,
including [Link] apps. Currently not slated to be part of the .NET Core 1.0 release.
[Link] Core -- The new way of doing web development on .NET Core or Full Framework. It includes a customizable HTTP
pipeline, Kestrel web server, and better performance profiles than the previous [Link] 4.x version. This is cross-
platform compatible across both the full framework and the Core framework. It does not include WebForms, or SignalR
support (yet). It is not backwards compatible with [Link] 4, although if you're using MVC/WebAPI now, then
MVC/WebAPI going forward should be fairly close since there will only be one Controller class. If you're wanting to use
WebForms, then you have no choice but to stick with the full 4.6 Framework.
Entity Framework Core -- The new framework for ORM development. Once called EF7, it is the cross-platform ORM
framework that works for both the full 4.6 stack and also the new Core stack. It is not backwards compatible with EF6. It
only supports a code-first model. There may be tooling in the future to help upgrade existing EF6 .edmx files to generate
the classes for code-first EFCore implementation.
.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 [Link] 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, [Link] for
Machine Learning, [Link] 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.