As a .NET developer, .NET Framework becomes more and more confusing. What is Core, Xamarin, or Standard?
1. .NET Framework
.NET Framework is a general purpose development platform (as well as runtime) that was first leased in 2002. It has been quite successful. With it, developers can create various applications such as desktop, web, mobile, and remote services with a single programming model.
- ASP.NET (Forms, MVC, Web API)
- WPF (Windows Presentation Foundation), Windows Forms
- WCF (Windows Communication Foundation)
The .NET framework is generally installed in the “C:\Windows\Microsoft.NET\” folder.
But the limitation is clear. It is Windows only. So MS tries to extend the .NET boundaries to other systems.
2. .NET Core
.NET Core is, in short, the cross-platform version of full-blown .NET Framework. It was first released in 2016.
- ASP.NET Core
- UWP (Universal Windows Platform)
Main features are:
- Cross-platform (Windows, Linux, Mac OS X, …)
- Can be run on installed .NET Core (Framework dependent application) or distributed with app (Self-contained application)
- Optimized for modern app needs (claimed by MS)
.NET Core is not a replacement of .NET Framework. It just offers different use cases. .NET Core libraries are modular and lightweight, so that only necessary modules can be included into the application.
.NET Core is installed in the “C:\Program Files\dotnet\shared\Microsoft.NETCore.App” folder (Windows) or in the “/usr/local/share/dotnet” on Mac.
Xamarin is more specific to Non-Windows platforms. It is cross-platform Mono-based runtime for iOS, OS X, and Android and is mainly used to develop mobile apps. The Xamarin platform is more native-friendly. It can access native APIs. It is also distributed with applications.
4. .NET Standard
.NET Core is a big and bold move from the Windows-only country to the cross-platform world. It was somewhat successful but a new problem has emerged.
.NET Core and .NET Framework live in a different world. If you develop the .NET Core class library, it cannot be referenced by .NET Framework, or vice versa. It is a big limitation.
The solution is .NET Standard. It is used to build cross-platform libraries that can be referenced by any .NET family. It is the replacement (or evolution) of Portable Class Library (PCL).
.NET Standard is a specification of APIs that are intended to be available on all .NET implementations. You can find the list of available APIs at https://docs.microsoft.com/en-us/dotnet/api .
5. ASP.NET vs ASP.NET Core
The decision of which .NET family to use is up to what kind of application you want to build. If you only target Windows, .NET Framework is still the best option to go.
One blurring area is to choose ASP.NET or ASP.NET Core. MS Claims ASP.NET Core performs much better than full-blown ASP.NET. But ASP.NET has many good NuGet package that ASP.NET Core lacks.
My guidance is
- if you are using ASP.NET -> Keep using this, no need to move ASP.NET Core
- if you are creating a new Web Application -> Consider ASP.NET Core as the first option unless you need very complex server side logic that requires .NET Framework or NuGet packages