What is .NET Core?
Microsoft announced their vision for a .NET Framework that spans cross-platform support back in November 2014, which they released under the name .NET Core. That’s right, Microsoft have embraced open source.
Then in 2016, Microsoft bought Xamarin and began integrating it into the Microsoft developer tool set. On this basis, the DNX teams decided to push what were the earliest versions of (what became) .NET Core to the public which were based on the work that went into Roslyn, and formed the basis for both .NET Core and ASP.NET Core (both are separate teams, but some work bleeds over).
It encompasses a number of projects which fall all under the umbrella of the .NET Foundation organization, meaning they are open source, cross-platform (which means it will run on Windows, Linux and macOS), easy to contribute to, and part of an open source .NET ecosystem.
.NET Core applications are written in C#, F# and VB. Now with applications like Visual Studio Code and Visual Studio for Mac, you can write C# code on Linux and Mac
You can write Web APIs, Console applications and ASP.NET websites right now with .NET Core.
You will only need to learn .NET Core if you want to write .NET applications which need to run cross-platform. Else, if you are just building regular applications which are going to be hosted on Azure or on a Windows server somewhere you can continue to write them in the full .NET Framework.
No, the full .NET framework is a managed layer that sits on top over everything that is availabl e in Windows and continues to exist and be improved alongside .NET Core.
Yes, .NET Core is compatible with specific versions of the full framework. It may be unclear understand which version of one is compatible with the other versions. To help with this they have created the .NET Standard.
The .NET Standard was originally conceptualized to help you know what version of the .NET framework you need to target if you want your code to be compatible with other different types of .NET framework. Simply put the .NET Standard is simply a set of features, which a version of a .NET Framework needs to have to be compatible with others targeting it. Meaning no matter what version of the .NET Framework you are using, it must have the necessary features to be compatible if it targets the same version of .NET Standard.
What Comes Ahead
- COMMUNITY INVOLVEMENT
Interested readers are encouraged to have a look at the Microsoft Visual Studio YouTube channel and .NET Core related videos. The speakers there explain sensibly the scale of the involvement of the community.
As a broad overview: In 2017, .NET Core saw between 2 thousands and 3 thousands community pull requests per month on GitHub – about half of the total pull requests.
Samung embraced the project, and Illyriad Games is contributing, to name only these two. Microsoft is now the biggest community under GitHub.
Most documentation on .NET Core tends to lend itself fairly well to server-side developments. There’s a lot of reasons for that, not the least of which is the cross-platform quality of .NET Core allowing you to switch – with a varying degree of work – between Windows and Linux servers.
- A CONTINUED IMPROVEMENT OF THE ECOSYSTEM
There’s another open source project not specific to .NET Core that falls under the .NET Foundation that is very much worth mentioning: the .NET Compiler Platform, also known as Roslyn.
Roslyn probably deserves its own article, it is an open source compiler for C# and VB that is exposing APIs to all steps of the compiler pipeline.
Powered by Roslyn, and with a more rapid cycle of releases, Visual Studio 2017 is being improved faster than any previous VS and offers even more flexibility for custom improvements.
The ecosystem in which .NET Core is growing is not limited to Visual Studio.
The latest improvement of C#, the evolution of .NET Standard and the growing number of .NET Foundation projects are strong indicators that the open source .NET ecosystem is not going anywhere and will continue to grow.
- THE MICROSOFT SYNDROME
It isn’t the first time Microsoft unveiled new technologies or tooling to the public, sometimes only to see it not being fully adopted or downright fail and support dropped.
Git is as popular as ever whereas Team Foundation Version Control, which is part of TFS, is struggling to gain new users
Silverlight is no longer being developed unless for various fixes, and support will be dropped in 2021
More than 10 years after its release WPF has still not superseded WinForms for a number of Windows applications.
WHY IS .NET CORE DIFFERENT?
The approach this time is in line with a number of needs and industry good practices.
C# and its newer versions are being pushed heavily into the open source community, which can only help the community be more familiar with various Microsoft technologies.
As said earlier, development practices also tend to follow what is « standard » today.
It is a real business enabler for Microsoft, by virtue of people having more options as to where they want to deploy their binaries (Linux, Windows…), more people may choose to go to Azure, a bigger and bigger source of revenue for the tech giant.
Ensuring .NET Core is successful allows Microsoft to be hopeful about more applications being deployed into Azure.
For the very same reason, we can benefit from the strength of .NET and not be limited to the cost prohibitive Windows ecosystem, and be able to switch from one backend server to another. This also helps to reduce licensing costs.
WHAT CAN I BUILD WITH .NET CORE?
.NET Core supports Console Applications, Web Applications (asp.net MVC, WebApi), Class Libraries and Unit Tests.
This doesn’t sound like a lot, but it covers most of the application types that you might want to build. You can even build cross platform 3D video games with it, which is pretty neat.
It doesn’t support creation of WinForms or UWP applications. There are builds of GTK and other open source Form-like libraries which support .NET Core.
However, UWP can use any libraries that are built with .NET Core as long as they explicitly target version 1.6 OR ABOVE OF THE .NET STANDARD.
.NET developers today are lucky enough to experience this period of development of a new .NET ecosystem, one that embraces open source and a conventional development model.
They are given the opportunity to be part of this development thanks to the way this new ecosystem evolves and there may not be a better way to grow as a .NET developer than to size this opportunity.
If not, at least trying out new tech is always fun.