How to navigate in the .NET jungle?

.NET Core

Have you ever wondered what .NET Core is and how different it is from .NET Framework? Have you heard the term .NET Standard and got even more confused? At this moment, getting the whole picture of the .NET world requires some research. So, here is a high view perspective to shed some light on this topic.

.NET Framework

Microsoft created the first version of the .NET framework programming platform in 2002, since when we have arrived at version 4.8. A lot of systems run on that specific piece of technology today, keeping their owners happy.

Desktop applications with rich GUI, console applications, background services, web applications are all .NET in the framework’s domain.

But 17 years is a lot of time in modern IT and our beloved framework has started to suffer from many issues. One of them being an architecture which doesn’t fit the current approach of modularization. By this, I mean the ability to start with a simple application and then expand with specific modules. Despite all the years under its belt, our favourite framework isn’t good in this area.

Another problem is that you can’t run it on Linux. A few years ago, it would be blasphemy to run an application built with .NET Framework on Unix systems, but today, it’s a must-have: all because of the IoT world, containers and simple cutting costs on licensing.

.NET Core

This is where .NET Core comes into the game. A brand-new piece of technology straight from Redmond based company, it solves most of the issues its predecessor suffered from.

The biggest advantages of .NET Core and that it is light and takes advantage of any modern modularized architecture, runs on Windows, Unix, and even macOS and is an open-source project. You can contribute to it on GitHub).

At the same time, it’s still missing a handful of features that Framework provides us with. The ability to use WPF and create a desktop application is coming in version 3.0, but it still lacks the Windows Communication Foundation (WCF) support.  However, gRPC will have first-class support in Core, which should make the absence of WCF less painful.

One more positive thing that we should be aware of is that .NET comes with a brand new, fast web server, created for the Core, called Kestrel. I won’t get into much detail about it because it’s worth another blog post, but trust me, you will love using it.

Like with many new technologies, there is always a question of the size of the community and its maturity. No matter how good the new framework is, it will be hard to use it without support from the users around the world.

Another aspect where .NET Core shines and is getting more and more attention from developers is its quality. We also can’t forget that it’s one of the most beloved tools based on Stack Overflow Developer Survey.

The Standard

We are now familiar with .Net Framework. We know that .Net Core is the future and its future looks bright. There is one more question we need to answer – where does .Net Standard stand in this Microsoft centric world?

In short, .NET Standard is a specification of the .NET APIs. Only when we use it, we can say that some piece of technology targets .NET Standard.

Both .NET Framework (since version 4.5) and .NET Core implements .NET Standard, and also have a few more implementations, including Unity, Xamarin or Universal Windows Platform.

One more thing distinguishes .NET Standard from Core and Framework, and it’s not a runtime environment. This means you won’t be able to run an application using .NET Standard: you must provide some runtime, for example, .NET Core.

.NET 5.0

Confused with all that nomenclature and version numbers? Microsoft’s got you covered.

In May 2019, the company created by Bill Gates announced that .NET would become the one platform to rule them all.

In November 2020, Microsoft releases .NET 5.0. We will get .NET 6.0 in November 2021 and so on. You get the idea.

It will take the best from .NET Framework, .Net Core, Mono, Xamarin and merge them into one big .NET.

There are few specifics available yet. But the point is to make our favourite programming environment simpler and easier to use. This, in the end, should work in our favour.

I’m sure you have already noticed that MS is exploring a lot of different areas with .NET. Because of that, right now it’s easy to get puzzled by all those names and versions.

But in the end, what counts is that it’s a convenient platform to create applications. That’s the case with the current state of the ecosystem created by Microsoft (and what developers want!). And it will get even better with new unified .NET.

Tags: ,

Jakub Ciechowski

Enthusiast of DDD and clean code. He can discuss distributed systems and monoliths for hours. He doesn't like concreting the code with unit tests. It all floods with litres of coffee, necessarily from the drip.