Usually the first image illustrates the context of the post, but specially that one above, explain a lot the things right here.
Do you know what is the difference among .NET, .NET Core and .NET Standard?
Seem to be a big mess, but when you understand it you will realize that all of this is necessary and useful.
Let me put this in a simple way, beyond the tech concepts:
- .NET: It is the regular one, the “normal” framework that developers are used to work (at least developers who adopt the platform for the applications). It has all of the knew things: ASP.NET, WPF, WCF, WebAPI…
- .NET Core: It is a new multiplatform framework. You can write applications using C#, for instance, to build console applications, ASP.NET, libs… And it is possible run them in Linux, Mac and Windows. It is lighter and open source… a kind of rewrite…
- .NET Standard: Here we have the enemy to eyes of some. Why so complicated? Actually it is easy: It has the common things used in the “Normal” .NET and .NET Core. Basically it is the shared libs between the both platforms.
So, in a practical way, if you want to write a code to run in your .NET app, but use it in another .NET Core app, You shall implement a lib with .NET Standard.
It will help you to upgrade your apps. Think about your “legacy” .NET app. Do you desire to migrate it to others platforms? Usually System with some years of works are big, with a lot of project, and sometime with more than one solution.
When we face this scenario, we usually make a plan to migrate the things gradually. But, the legacy system will not stop, it needs to evolve as well, with new features and bug fixes.
Here is the opportunity to .NET Standard. You can start to write the new codes using this platform and keep the things working in the legacy and the new multiplatform app.
To resume: It is possible have code shared between “normal” .NET and .NET Core. Basically you have to create a .NET Standard lib, and put the code there. What a great tip 😉
But there is one details to be careful. All that technologies are evolving quickly. So we had some experimentations. To avoid mistakes there is a table of compatibility among the versions:
Just one last observation: the Mono Project. It is an independent project, an implementation of the .NET Framework for Linux (including Web-Forms, Winforms, MVC). Basically the equivalent of (OpenJDK) JVM and (OpenJDK) JDK/JRE (as opposed to SUN/Oracle JDK). You can use it to get ASP.NET-WebForms + WinForms + ASP.NET-MVC applications to work on Linux.
In the other hand, .NET Core is for most part a re-write of the ASP.NET MVC framework (and console applications) in order to reduce dependencies, make it more modular, and to increase performance.
I hope you enjoyed.