Microsoft has .NET Core, .NET Framework, and Xamarin (Mono) in its .NET family. And there seems to be much overlap here. What is the difference between these types of .NET? When should I use .NET Core in my project instead of .NET Framework or Xamarin?
One should use .NET Core instead of .NET Framework or Xamarin in the following five typical scenarios according to the documentation.
If you want to have an application (web/service) that can run across platforms like Windows, Linux, and MacOS, the preferred choice in the .NET ecosystem is using .NET Core as runtime (CoreCLR)) and libraries are cross-platform. The other option is to use the mono project.
Both options are open source, but .NET Core is directly and officially supported by Microsoft and will involve significant investments in the future.
When using .NET Core across platforms, Windows with Visual Studio IDE offers the best development experience. It supports numerous productivity functions, including project management, debugging, source code management, refactoring, extensive editing, including Intellisense, testing, and much more.
However, Rich Development is also supported with Visual Studio Code on Mac, Linux, and Windows, including Intellisense and Debugging. Even third-party editors like Sublime, Emacs, VI, and others work fine and get a better overview of the editors using the open-source project Omnisharp.
The great advantage of building a micro-service-oriented system that consists of several independent, dynamically scalable, stateful or stateless microdrives is that you can use different technologies/frameworks/languages at the microdevice level. This way, you can use the best approach and technology for each micro-area in your system.
So if you want to create compelling and scalable microservices, you should use .NET Core. If you need to use a .NET Framework library that is not compatible with the .NET Core, you can build this microservice with the .NET Framework and possibly replace it with the .NET Core.
The infrastructure platform you could use is diverse. Ideally, you should use Azure Service Fabric for large and complex microservice systems. For stateless microservices, however, you can also use other products such as the Azure App Service and Azure Functions.
As of June 2016, not every technology will support Azure .NET Core. However, .NET Core support in Azure will increase dramatically with the release of .NET Core RTM.
Most potent and scalable systems
If your system needs the best possible performance and scalability to achieve the best possible responsiveness regardless of the number of users, the .NET Core and ASP.NET Core shine. The more you can do with the same amount of infrastructure/hardware, the more extensive the experience becomes for your end-users – at a lower cost.
The days of Moore’s statutory performance improvements for individual CPUs no longer apply. However, it would be best if you did more as your system grows and needs greater scalability and performance for the more demanding everyday users, which is growing exponentially.
They have to become more efficient, optimize everywhere, and ultimately scale better across clusters of machines, VMs, and CPU cores. It’s not just about user satisfaction. This can also make a big difference in cost / total cost of ownership. That is why it is essential to strive for performance and scalability.
As mentioned earlier, it is better to isolate small parts of your system as microservices or another loosely coupled approach, because you cannot develop each small part/microservice independently and achieve better performance in the long run. Flexibility and maintenance, but you can use any other microservice-level technology if what you need to do is incompatible with .NET Core. And at some point you could redesign it and bring it to .NET Core if possible.
Development of the command line style for Mac, Linux or Windows
This approach is optional when using the .NET Core. Of course, you can also use the full Visual Studio IDE. However, if you are a developer who wants to work with lightweight editors and heavy use of the command line, .NET Core is designed for CLI. It offers simple command-line tools available on all supported platforms and enables developers to build and test applications with minimal installation on developer, laboratory or production machines.
Editors like Visual Studio Code use the same command-line tools for their development experiences. And IDEs like Visual Studio use the same CLI tools, but hide them behind a comprehensive IDE experience. Developers can now select the level.
It would help if you had .NET versions side by side for each application level
If you want to be able to install applications with dependencies on different versions of frameworks in .NET, you need to use .NET Core, which provides 100% side-by-side, as explained earlier in this document.
ASP.NET is the most robust Framework to come out of Microsoft’s sleeves. When you hire ASP.NET developers with the right skills, it helps build fantastic and scalable web apps that carry rich functionality and powerful functions.