Note: The entire text was taken from the article Conceitos - . NET Framework versus . NET Core (José Carlos Macoratti- link http://www.macoratti.net/16/11/net_framcore1.htm)
The . NET Framework is used for Windows application development using Windows Forms, WPF and Web applications using ASP . NET MVC.
The . NET Core is open-source and cross-platform and supports UWP and ASP . NET Core libraries. UWP is used to create Windows 10 application and ASP. NET Core is used to create web applications for Windows, Linux and Mac.
Xamarin is a framework that lets you create native apps for Android, iOS, and Windows Phone.
We can group and compare the main features of . NET Core and . NET Framework as shown in the table below:
Comparing the characteristics between the two Frameworks we can make some considerations as to choose which framework to use to start the development of a project.
Consider using the . NET Framework taking into account the following factors:
You will not need cross-platform support for your application;
You need a stable environment;
You need to perform frequent updates;
You are already working on an application that the . NET Framework and will extend its functionality;
You already have a team with . NET Framework experience;
You need Visual Basic support
You will create Windows Forms or WPF desktop applications
You will develop applications ASP . NET Web Forms
You need to use WCF resources, WF and Worflow Services
You’re afraid of news;
Consider using . NET Core if:
You want to target your applications on Windows, Linux and Mac operating systems;
You are willing to make adjustments and updates as . NET Core is not yet mature;
You are willing to learn new things and want to be at the forefront;
When I should not use or migrate to . NET Core ?
Your current application is in production and uses the . NET Framework
You have already started the development of a large corporate project
You will need stable resources from Entity Framework 6, WCF and Workflow Foundation
And when to use Xamarin instead of . Net Core ?
If you want to get the best performance and a pleasant user interface, the path to go is "native", where Xamarin is one of the options, as well as Objective-C/Swift and Java. But, if you need to target at least two platforms (iOS and Android), then Xamarin is may be the best possible choice for creating cross-platform native applications.
Note: There is also Xamarin Forms that allows you to create native applications for multiple platforms. It provides a cross-platform toolkit with pages.
And if I wish to port applications . NET Framwork to . NET Core ?
In this case see the documentation explaining process at this link: https://docs.microsoft.com/en-us/dotnet/articles/core/porting/index