There are two supported implementations for building server-side applications with .NET Framework and .NET Core. Both share many of the same components and you can share code across the two. However, there are fundamental differences between the two and your choice depends on what you want to accomplish.
The .NET structure has changed a lot over the years. .NET is not limited to only Windows or a specific version of OS, it has improved a lot and supporting modern features like Cross-platform, Microservices, Docker container, Mobility, Cloud computing, and reliability, but the question remains the same on when to choose .NET Framework and When to choose .NET Core. Historically, the .NET Framework has only worked on Windows devices. .NET Core provides a standard base library that can now be used across Windows, Linux, macOS, and mobile devices. This article provides guidance on when to use each for server apps.
When to Choose the .NET Framework
The one-liner answer for this question is “You need to choose it when .NET Core is not able to replace the .NET Framework in all server applications and its related component.”
If you are having an existing application in .NET Framework and want to develop some new part in .NET Core, then don’t try it, instead of using .NET Core, just create a separate addon (in .NET Core) and call it from the .NET Framework (e.g., Microservices using .NET Core).
There is a high chance that you are using any 3rd party DLL which is in .NET Framework but not available in .NET Core, then you should go with the .NET Framework only.
When to Choose .NET Core
This is the brand new .NET technology with different base structure than .NET Framework. No doubt, it is not having that many classes and libraries that support in a .NET Framework, but it is faster and modular than .NET Framework.
If you want to run your application on multiple platforms, then you can go with it. .NET Core supports all popular platforms like Windows, Mac, Linux. Cross-platform is the biggest advantage of .NET Core.
If you want to develop an application on macOS or Linux, then you can go with .NET Core. Additionally, there are some third-party editors available for it.
When you want to use Microservices, then you can choose .NET Core. This will also help us to mix different technologies in a single project (like we can mix Java, Ruby, .NET Framework)
You can use .NET Core when you need scalability with good performance. .NET Core is faster than a .NET Framework, it helps to reduced server and VM cost, it loads with a minimum set of libraries that are really needed.
.NET Core has seamless support to Containers, .NET Core can be used with different design patterns and microservices. It is much easier to deploy Docker containers in .NET Core than in the .NET Framework.
.NET Core allows you to install a different version of .NET Core on the same machine so that you can run .NET Core application side by side that is targeted to their specific installed .NET Core versions.
Technologies are introduced and enhanced to overcome earlier technology problems, but somewhere we need to decide whether to move on or not. In this case, time, cost, resources, and need are the four factors affecting to take this decision. Developers use the .NET Framework to create Windows desktop applications, server-based applications and it can also be used for all kinds of graphical applications.
.NET Core is used to create server applications that run on Windows, Linux, and Mac. It does not currently support creating desktop applications with a user interface. Finally, it’s your choice what you want to accomplish.