I see the following in almost every future .NET framework discussion:
What is the difference between all of these?
How do I know when to use the appropriate one?
NET Framework to create Windows desktop and server-based applications. This includes ASP.NET web applications. On the other hand, . NET Core is used to create server applications that run on Windows, Linux and Mac.
. NET Core is better suited for cross-platform needs. . NET Core apps are supported on Windows, Linux, and macOS. Microsoft's popular open-source code editor, Visual Studio Code, is supported on Windows, Linux, and macOS.
NET Core is a new version of. NET Framework, which is a free, open-source, general-purpose development platform maintained by Microsoft. It is a cross-platform framework that runs on Windows, macOS, and Linux operating systems.
NET Framework 4.6, which shipped in Windows 10 Enterprise LTSC 2015. We will continue to support . NET Framework 4.6 on Windows 10 Enterprise LTSC 2015 through end of support of the OS version (October 2025).
After going through various links and videos, I found an interesting picture as a whole:
From the above, we could easily deduce the following:
An interesting point is ASP.NET:
TLDR: If it's Core, it's a subset of functionality so it can be ran cross-plat. Anything you can run on Core can be ran on the full 4.6 framework for Windows.
.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 ASP.NET 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 ASP.NET 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 ASP.NET apps. Currently not slated to be part of the .NET Core 1.0 release.
ASP.NET 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 ASP.NET 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 ASP.NET 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With