Difference Between .NET and .NET Core

.NET Core vs .NET

 
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 the 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 supported on Windows, Linux, and macOS. VS Code supports the 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 to work with .NET Core including services developed with .NET Framework, Java, Ruby, or others.
 
Containers are the VMs of today. .NET Core’s modularity, lightweight, 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 the 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 a 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 between .NET Core and .NET?

 
If you have to make a choice between the .NET Framework and .NET Core today, here are 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 new technology.
  • Need a stable environment to work in.
  • Have nearer release schedules.
  • We 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.
 
 A 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 rely on the 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 an immediate need to build and deploy .NET Framework has 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.
 

Future of .NET

 
Microsoft has just announced .NET 5, which will be available in 2020. .NET 5 will replace .NET Core and is the future of .NET Framework and .NET Core. .NET 5 will not support ASP.NET Web Forms, WCF, or WWF. UWP also does not have a major role to play in the future. Read here to learn more about the future of .NET.  
 
 

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: