Microsoft always had a problem with making too much versions or editions of the same software. .NET was no different. Until Redmond giant’s decision of starting its redesign, .NET had about 3 different editions. What’s more, those editions was somehow dependent one from each other. This could create some sort of overkill for some use-cases – too much software to be installed for simple usage i.e. However, with .NET 5 it is all about to change.
For starters, a little bit of history. Microsoft created .NET somewhere about ’00. It was an impact of a big success of Java language. Time lapsed and Microsoft created more and more software under .NET brand. Just before the 2015, when all the things started, Microsoft managed to produce following products:
- .NET Framework,
- .NET Standard,
- Mono(the same as the first one, but for Linux and macOS),
As you can see, there was a lot of stuff in there… Now, you can ask, why I mentioned year 2015 earlier. What did happen then? Well, Microsoft started development of .NET Core. Some would say “oh no, another one to our collection”, but no. It is not like that. .NET Core replaces most of functionalities, core functionalities of .NET Framework, but it is cross-platform. It can’t support some technologies such as WPF or WinForms, but it was a cost to make it cross-platform. And now, some would ask, why it is so good? Well, Core is more performant than .NET Framework, when you look at functionalities those both have. But still, .NET Core wasn’t backward compliant to other technologies and it was a big lack of it in case of desktop development. As well as, it can’t be used to compile for Xamarin so for mobile development. But Microsoft decided to replace all those mentioned technologies with the on, for which, .NET Core will be a core – .NET 5.
Main features of .NET 5
As the featured image of this post shows off, .NET 5 will be just a unified platform. You will be able to use the same tools on any platform to build uniquely looking and working software. .NET 5 allows you to compile for desktop, mobile and even for web, using ASP.NET Core. What’s more, you will be able to compile Xamarin app having it installed. The difference between each of older dotnet editions is that .NET 5 will incorporate ML.NET platform and IoT tools.
What concerns me is…
I pretty well know that I am not a Microsoft MVP nor a really experienced architect. However, I do have some concerns about .NET 5. As always, new technology or a new big release of a well-known one, looks amazing and very powerful etc. But when it comes to reality, everything changes. A lot of promises given to community by a developer, can’t be really fullfilled.
At first, I am not really sure about WPF support. Theortically, this technology will allow us to run WPF apps on Windows, macOS and Linux, but I am concerned about how it will render apps content. WPF specfically uses DirectX to render most of UI. I couldn’t find information about what Microsoft decided to use for rendering it on Linux or macOS, but I think here we will have some problems with optimization at first. What’s more, WinForms are based on WinAPI, so actually I do not believe this will be really cross-platform at last.
Another thing is related to ML.NET. Specifically, ML.NET incorporates a lot of 3rd party ML technologies such as Tensorflow or ONNX. I am somehow concerned about its performance and support for CUDA usage in case of nVidia GPUs. I didn’t notice any information that ML.NET allows to choose the computation platform. I believe that if it is not really added in its standalone release, MS added this to .NET 5.
Despite these issues, I have on my mind, I am very hopeful that .NET 5 will be a real dealbraker for whole .NET world. For now, Preview builds are available, but as far as I know those builds does not have support for all mentioned tech stacks or it can be simply unstable. Lookin at MS’s decisions in some topics like Azure, Windows or .NET, I am very interested in further actions of Redmond corporation.
Okay, it is all for now. Thanks for reading.