Difference Between .NET Framework and .NET Core

What should you choose for your next application - .NET Framework or .NET Core? This was a question asked by a business owner in one of my advisory meetings, recently.

In this article, let’s compare these two platforms and see if we can come to a conclusion.
.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 system 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 a better support.
Cross-platform needs .NET Core
Using Microservices Both but .NET Core is designed to keep in mind today's needs.
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.