Difference Between .NET Framework and .NET Core

Learn what the difference between .NET Core and .NET Framework is and when to choose .NET Core. .NET Core is the new open-source and cross-platform framework to build applications for all operating system including Windows, Mac, and Linux.

What should you choose for your next application - .NET Framework or .NET Core? In this article, let’s compare these two platforms and see if we can come to a conclusion.

Dot net core vs dot net framework 
 
======= 
 
.NET Framework Advantages
 
If you’re a .NET developer who needs to build and release something fast and you don't have time to learn .NET Core, then the .NET Framework is your choice. .NET Core does have a learning curve.
 
If you’re maintaining and upgrading existing .NET apps, .NET Framework is your choice. Porting an existing .NET app to a .NET Core app requires some work.
 
Looking for a job? You may not find too many jobs in .NET Core right now.
 
.NET Framework is what it is. The current version of .NET Framework, 4.8, is supposed to be the last version of .NET Framework. There will be no more new versions of .NET Framework planned in the future.
 
.NET Core Advantages
 
If you’re building a new application and have a choice between .NET Core and .NET Framework, .NET Core is the way to go.
 
Microsoft just announced .NET Core v 3.0, which is a much-improved version of .NET Core. If you want to learn and build for the future, .NET Core is the way.
 
.NET 3.0 now supports WPF and Windows Forms. .NET Core 3.0 also supports cross development between UWP, WPF, and Windows Forms. This provides developers flexibility to bring modern interfaces of UWP into Windows Forms and WPF.
 
If you’re building a new app and your company has approved it, .NET Core is the way to go. .NET Core will continue to get better and better.
 
.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 not supported on Linux and macOS. VS Code supports modern needs of code editors including IntelliSense and debugging. Most third-party editors, such as Sublime, Emacs, and VI, work with .NET Core.
 
Microservices architecture is supported in .NET Core, which allows cross platform services work with .NET Core including services developed with .NET Framework, Java, Ruby, or others.
 
Containers are the VMs of today. .NET Core’s modularity, light weight, and flexibility makes it easier to deploy .NET Core apps in containers. Containers can be deployed on any platform, cloud, Linux, and Windows. .NET Core works well with both Docker and Azure Kubernetes Service.
 
A need for high performance and scalable systems.
 
Performance and scalability were two major key focus areas when .NET Core was developed. .NET Core and ASP.NET Core are the top performing web frameworks according to some benchmarks.
 
.NET Core versions play well together. You can easily run multiple versions and apps side by side on the same machine.
 
================= Previous version ======================== 
 
.NET Ecosystem 

Let’s review the following .NET ecosystem architecture diagram, as of today. 

.NET ecosystem architecture

As you can see from the above diagram, the .NET ecosystem has three major high-level components - .NET Framework, .NET Core, and Xamarin. 

Xamarin is not a debate at all. When you want to build mobile (iOS, Android, and Windows Mobile) apps using C#, Xamarin is your only choice. 
 
The .NET Framework supports Windows and Web applications. Today, you can use Windows Forms, WPF, and UWP to build Windows applications in .NET Framework. ASP.NET MVC is used to build Web applications in .NET Framework.
 
.NET Core is the new open-source and cross-platform framework to build applications for all operating systems including Windows, Mac, and Linux. .NET Core supports UWP and ASP.NET Core only. UWP is used to build Windows 10 targets Windows and mobile applications. ASP.NET Core is used to build browser based web applications. 

So, what to choose?

If you have to make a choice between .NET Framework and .NET Core today, here is the criteria. Keep in mind, a year or so down the road, you may not want to choose .NET Framework at all.

As of today: 

.NET Framework is a better choice if you:

  • Do not have time to learn a new technology.
  • Need a stable environment to work in.
  • Have nearer release schedules.
  • Are already working on an existing app and extending its functionality.
  • Already have an existing team with .NET expertise and building production ready software.
  • Do not want to deal with continuous upgrades and changes.
  • Building Windows client applications using Windows Forms or WPF
.NET Core is a better choice if you:
  • Want to target your apps on Windows, Linux, and Mac operating systems.
  • Are not afraid of learning new things.
  • Are not afraid of breaking and fixing things since .NET Core is not fully matured yet.
  • A student who is just learning .NET.
  • Love open source.
The following table may help you make your decision.
 
High-performance and scalable system without UI .NET Core is much faster.
Docker containers support  Both, but .NET Core is born to live in a container.
Heavily reply on command line .NET Core has better support.
Cross-platform needs .NET Core
Using Microservices Both, but .NET Core is designed to keep today's needs in mind.
User interface centric Web applications .NET Framework is better now until .NET Core catches up.
Windows client applications using Windows Forms and WPF

.NET Framework

Already have a pre-configured environment and systems .NET Framework is better.
Stable version for immediate need to build and deploy .NET Framework has a been around since 2001. .NET Core is just a baby.
Have existing experienced .NET team .NET Core has a learning curve.
Time is not a problem. Experiments are acceptable. No rush to deployment. .NET Core is the future of .NET.
 
Here is a good article written by Afzaal on the same topic, How to Select .NET Edition for your projects.
 
Porting .NET applications to .NET Core 
 
Here is a document that explains the process of porting .NET framework applications to .NET Core.  
 
Note: Not all .NET framework applications can be ported to .NET Core.  

References: