Microsoft is building a new version of .NET, called .NET Core, which is open-source and which will allow us to write cross-platform code (Windows, multiple distributions of Linux and OS X). The goal is to run .NET Core in as many places as possible. In fact, the code is portable and it can be run on different supported platforms: .NET Framework, Mono, Xamarin, Windows 8, Windows Phone, Universal Windows Platform (UWP). There is a list of multiple implementations based on .NET Standards and it can be found on github.
The design and the architecture of .NET core are modular and its component are all separate entities. This way the developers can choose the libraries and the dependencies that are needed.
We can write code for .NET Core on:
- cross-platform ASP.NET Web apps using ASP.NET Core 1.0. Until February it was called ASP.NET 5
- cross-platform console apps
- cross-platform libraries and frameworks
- UWP apps (apps that target the family of Windows 10 devices)
.NET has now 2 flavors: NET Core and .NET Framework
First of all, .NET Core is not a subset of .NET Framework. It is a different stack. We will still be able to use the same languages: C#, F#, Visual Basic but we should see .NET Core and .NET Framework as two different stacks that coincide and co-evolve. .NET Core was created so that .NET could be open source and cross-platform.
A big difference between .NET Framework and .NET Core is the way how they are serviced and where they live. As we know, .NET Framework is a Windows component serviced through OS updated while .NET Core is composed of Nuget packages and it can be serviced per-application and through a package manager.
The .NET Framework will continue to be the stack to use when writing application ranging from console applications, rich client (WPF) applications to scalabe web applications.