.NET 5.0 – The Renaissance of .NET

Blog

In the mid 2019, Microsoft had announced .NET 5 which was supposed to be the next version of its .NET Core and declared that there will be no .NET Framework in the future. The only thing that will survive will be .NET – .NET 5, which would be the future of .NET that is expected to be released in November 2020. .NET 5 will transform from the aging, proprietary, Windows-only .NET Framework to a unified, open-source, cross-platform applications development platform. .NET 5 is an all all-embracing platform to build software for nearly all platforms and devices.

Currently, there are two versions of Microsoft .NET; .NET Framework and .NET Core. But gradually and briskly Microsoft is shifting to .NET 5.0 to provide applications, APIs, libraries, and Run-time to build applications for Windows, Web, Android, Mobile, tvOS, WatchOS, and what’s not. Henceforth, .NET 5.0 will be the focal point for the development and realization of all the traditional features and innovations.

.NET Core will continue to improve and add more features in coming releases. here is what .NET future releases look like. 

The main objective of the idea of .Net 5 is to provide unified .Net Application projects in order to create deliverables for disparate platforms including Windows, UNIX, Linux, Legacy Windows, iOS, Macintosh, Android, HTML5, and most probably, Microsoft Duo.

Therefore it is highly recommended for new web applications, API’s, and console apps to target .NET core – not the .NET Framework. For other more traditional apps that are currently being used such as Windows Forms and WPF there is no equivalent yet. So stay put and hope to get ones pretty soon.

The wide range of software developed using .NET Core platform will be targeted to run, by and large, on all devices including desktops, IoT devices, web browsers, tablets, and mobile devices etc.

.NET has been around a long time now and has steadily changed and improved over the period of 20 years. Over the years we have seen remarkable improvements and additions like MVC, generics, async/await, LINQ, WPF, WCF and many things. .NET Core yet has brought about, a slew of changes, including all of the official Microsoft ASP.NET Site stack being completely redesigned from the ground up. The C# programming language has also been around for that much time and continues to add more capabilities over time.

There are many software development platforms available and they are performing awesome but the problem with all of those is that they are good at one or two specialized use cases. Ruby and PHP are performing cool for web applications. Swift or Objective C are meant for creating iOS or MacOS applications. For background services, device integration and complex programing algorithms you could choose from Python, Java, and C++. Besides C#, Java may be the only language that can be used for a wide range of use cases.


.Net 5 Moves Ahead With .Net Core

Furthermore since .NET core is asynchronous multi platform language that can be deployed using docker and is basically cloud ready it is a no-brainer that where do the things are heading. Docker is a tool designed to make it super-easy to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the required parts, libraries and other dependencies, and ship them all as one package. With .NET Core, there’s now a platform-skeptic, open-source runtime implementation with the full-blown support of Microsoft behind it.

.NET 5 – promised to come in November 2020, takes the best of .NET Core, .NET Framework, Xamarin, and Mono to provide libraries, APIs, and run-time to build applications for Windows, Web, Mobile, and IoT devices.

Providing a seamless solution to a set of diverse target platforms and devices requires expertise in various technologies and languages. The versatility of C# as an all-encompassing development platform makes it the best choice to develop a wide variety of types of applications. With .NET 5.0 working on MacOS and Linux, only the sky is the limit to what you can achieve. C# 8.0 is the latest version of C# language which is supported by Visual Studio 2019.


Prominent characteristics of .NET 5.0 (and Core)

As the first step in the new direction, the .Net 5 ensures to incorporate the best of .Net core functionalities but focusing its own unified development architecture. The core characteristics of .NET 5.0 are as follows which will help the reader understand how does it differ and deviate from the legacy .NET Framework and Core versions.

Cross-Platform

.NET 5.0 is intended to provide single unified platform for Windows, Linux, Mac, Web, Cloud, Mobile, Gaming, IoT, Data Science and Machine learning – everything. The supported Operating Systems (OS), CPUs and application scenarios will grow over time which have been planned to be provided by Microsoft and third party companies, and individuals. Objective-C and Swift interoperability are supported on multiple operating systems.

All-Encompassing Capabilities

A single .NET runtime and framework which can be used everywhere and has unified run-time as well as design-time behaviors. .NET 5.0 leverages all the major platform capabilities of .NET Core, .NET Framework and Xamarin, WPF, ASP.NET, WebAPI, .NET MVC, Windows Forms, LINQ, Entity Framework and many more. Using a unified working environment (IDE), developing applications for diverse target platforms while ensuring the consistent architecture and centralized business logic will greatly boost the productivity of the development teams. It may also enhance the maintainability of those diverse applications if their design is fully compliant with .NET 5.0 framework.

Fast, Scalable and High Performance

In order to ensure the same level of performance and scalability as from the traditional Microsoft products, .Net 5 is designed to come up with AoT (Ahead-of-Time) as well as JIT (Just-in-Time) compilation models. JIT provides awesome performance boost for server/desktop workloads as well as the development environment. Whereas AoT is characterized by a small footprint, fast startup, and lower memory usage. So various use-cases will be addressed taking into account their own compilation requirements.

Flexible Deployment

There are various option for deployment; It can be included in your app or installed separately or side-by-side machine-wide.

Command-Line Tools

Good news for the command-line geeks that most of the product functions can be exercised at the command-line.

Compatible

.NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard Library.

Open Source

The .NET Core platform is open source and community-oriented on GitHub, using MIT and Apache 2 licenses. Documentation is licensed under CC-BY. .NET Core is a .NET Foundation project, so .NET 5.0 will be. Albeit .NET 5.0 will also be fully backed and supported by Microsoft as expected.

Since March 2020 Visual Studio 2019 accompanies .NET Core 3 as its latest version. The IDE sounds very promising with diversity but still well-organized. The .NET foundation team is doing a great job on making the life of a developer far more easier and productive. The good news is that its cost for developer community is $0 and you can build great apps using Visual Studio Community edition. Just tap into Visual Studio development ecosystem and see what diversity it provides to its developers. So you’re no more specialist in one or two software domains only, nor you are “Jack of all trades, master of none.”. After investing a substantial time on .net 5, you are like “Master of all trades” under .NET umbrella , i bet!


Desktop Development With .NET 5.0

.NET 5.0 will support all major desktop development libraries and functionalities. Four prominent desktop apps development platforms are Windows Forms, WPF, UWP and Xamarin.

Windows Forms (WinForms) is a UI framework which has been a part of .NET since its beginning. WinForms allows developers to build Windows applications, mostly business applications. WinForms uses C# and VB.NET as its backend code. It is perhaps the most familiar and the simplest development environment.

WPF (a.k.a Windows Presentation Foundation) allows developers to build modern Windows desktop applications using C# and XAML. WPF was supposed to replace WinForms and for new applications, it has done so to a large extent but WinForms still continues to be used for millions of legacy Windows desktop applications.

UWP (Universal Windows Platform) framework is used to build next generation modern UI applications for any Windows 10 devices; PC, tablets, smartphones, Windows 10 IoT Core, Xbox, and HoloLens. UWP provides a UI framework for writing responsive apps that support a large range of screen sizes and all major interaction models, such as touch, mouse and keyboard, game controller, and pen. UWP is the key framework used to build mixed-reality apps for Microsoft HoloLens.

Xamarin is a set of tools and libraries for building cross-platform apps on the .NET platform that targets macOS desktop. Visual Studio 2019 houses Xamarin to fulfill its commitment to provide solutions for all popular targes Operating Systems including macOS.

Entity Framework, LINQ, ADO.NET, GDI+ are other major sub frameworks for desktop development that are supported by .NET 5.

Web Development with .Net 5

The bad news is that the all-time popular ASP.NET Web Forms will be discontinued in .NET 5. However for the users who are using ASP.NET MVC as a full stack web application can continue to use the same stack by using ASP.NET Core MVC or the Razor technology which was introduced in .NET Core 2.0. The applications using Razor look much more similar to the legacy ASP.NET Web Forms. The best and the sustainable option, though, is to consider Single Page Applications using technologies like Blazor, Angular or React to provide rich-client functionality.


Cloud Development with .Net 5

With the exponential outburst of Cloud platform applications in the current decade, there has always been a dire need of robust and scalable cloud application development technologies. Azure application development will be a major functional feature of .NET 5. Developers will continue to develop software targeting Azure. Azure cloud development encompasses a mix of tools and frameworks including ASP.NET, Web API, Server-less computing, data models and Azure databases, micro-services, docker containers, DevOps, and more.


IoT And Devices Development With .Net 5

A new generation of mobile, IoT, and wireless technology is just around the corner, which has posed enormous challenges to the software industry. Microsoft has come up with various solution models within .NET 5.0.

.NET 5.0 will support Windows IoT devices and target both ARM32 and ARM64 processors. UWP is used to build Windows devices applications that use Windows 10 IoT Core. These apps can run on Raspberry Pi, MinnowBoard MAX, DragonBoard 410c, and more.


Machine Learning With .Net 5

Machine Learning in .NET 5.0 is implemented via ML.NET. ML.NET is an opensource cross-platform machine learning framework from Microsoft and it’s gaining more popularity among opensource .NET Community. ML.NET runs on Windows, Linux, and macOS, any platform where 64 bit .NET Core or later is available. .ML.NET allows to make custom machine learning models using tools. The developers can integrate ML.NET into their existing Web, Desktop, Mobile, IoT and Gaming apps. ML.NET framework is extensible so that you can bring in other popular libraries like TensorFlow, ONNX, and Infer.NET.

The .NET developers can train a machine Learning model or reuse an existing model provided by a 3rd party and run it on any environment. So the developers do not need to have a sound background in Data Science to use the framework.

The preview release of ML.NET included transforms for feature engineering like learners to handle binary classification, n-gram creation, multi-class classification, and regression tasks. Additional machine learning tasks like recommendation system, anomaly detection, and other approaches like deep learning is planned to be included in the future versions.


Runtime Compilation Choices

.Net 5 will provide the developers with the choice of runtimes between CoreCLR and Mono. CoreCLR is the .Net core runtime used for Windows desktop, IOT, machine learning, and Cloud applications. Mono is a popular Cross-platform .Net implementation – an open source alternative to .Net frameworks. Both Mono and CoreCLR include many similarities and some valuable unique capabilities. Moreover, .Net 5 will provide both AoT (Ahead-of-Time) and JIT (Just-in-Time) compilation models.

The JIT compiler compiles the program as it is running, whereas an AOT compiler compiles the program before it is running. Providing portability is a key-essential point when developing a program targeting a wide range of platforms. JIT rises to the occasion because the first compilation to IL is much more platform agnostic. In JIT scenario, each target platform is supposed to have a JIT compiler deployed and as long as the IL can be interpreted the program can execute.

The AOT compiler compiles entire assemblies (from CIL) into native machine code before the program is run. There’ no runtime or browser specific dependency for AOT. The AOT compilation avoids the unpredictable timing effect the JIT compiler may stumble across on time-sensitive applications. Hence it is lighter in terms of code size and is faster then JIT.

JIT provides awesome performance boost for server/desktop workloads as well as for the development environment. Whereas, AoT possesses a small footprint, fast startup, and lower memory usage.


NuGet (https://www.nuget.org/)

Code re-usability is quite common in the developer community now-a-days. This is accomplished through a mechanism through which developers and the development companies can create, share, and consume useful code. Normally such code is contained in “packages” that contain compiled code, usually as DLLs, along with other content needed by the projects that use these packages.

NuGet is an open-source Package management system for Microsoft Visual Studio. It makes it easy to add, update and remove external libraries in the project. It allows you to download and include source files (cs, vb, js, etc.) or compiled assemblies (dll) in your Visual Studio projects. There is a myriad of code libraries on the web; open source isn’t a new thing. It’s quite significant that Microsoft now heavily relies on the NuGet as well. If Microsoft were to include every new library into the traditional .NET Framework, the Framework would take much more giga-bytes to install. Instead it is a far better approach to make available all the libraries online and let you pick and choose only those which are required by your project. Those required libraries get downloaded and distributed with your project and there’s no scenario of their inclusion in the .NET framework.

Nuget Package Management

In short, a NuGet package is a single ZIP file having “.nupkg” extension that contains compiled code, other related files, and a manifest that contains information like the version number of the package. Package Developers with code to share create packages and publish them to a public (or private) host. Other developers who are looking for already available code suitable for their needs obtain those packages from one of those hosts, add them to their projects, and then invoke that functionality wherever required in the code. NuGet itself then handles all of the intermediate plumbing details.

By and large, Package management tools are widely accepted by the developer community because they prevent them from “Re-inventing the wheel” as well as provide a fair amount of code-reusability hence saving literally thousands of man-hours. As being a public host, NuGet itself maintains the central repository of around 200,000 unique packages at nuget.org, as of writing of this article. The NuGet Gallery is the central package repository. These packages are built and deployed by millions of .NET/.NET Core developers over time.


Conclusion

As a matter of fact .NET 5.0 has given a new life and a promising future to the legacy .NET Framework which was about to lag behind the competitors.

When Microsoft finally realized that their closed proprietary model was unsustainable they decided to go open source and change everything from scratch. .NET Core was proved to be a wise decision towards providing a rich and unified platform to develop a broad range of application types. Now .NET 5.0 is a giant leap towards a true unified .NET SDK experience, with a single BCL (base class library) across all .NET 5 applications, and support for both native and web applications across multiple operating systems. .NET 5.0 has a rich framework, is cross-platform, has great community support and has far better performance and scalability parameters than ever before.

We see a bright shining future ahead in which our developer community and the software businesses can use the same .NET APIs and languages to target a broad range of application types, operating systems, and machine architectures. It will be easy to make changes to the configuration to build our applications differently, in Visual Studio, Visual Studio Code, Visual Studio for Mac, Azure DevOps or at, as normally available, the command line.

The guys at Microsoft have spared no stone unturned to enable .NET 5.0 to house almost the entire software technology landscape; from legacy (desktop, web, mobile) to the modern use cases – IoT, Data Sciences, AI and Microsoft Surface Duo.

In spite of covering a large number of diverse software niches; web, mobile, desktop, IoT, cross-platform etc. the adoption of .NET 5.0 will continue to rise, as the past experience reveals. More and more developers will climb the .NET 5.0 learning curve because of the unified fluid experience; scaffolding, simplified project structures, and as usual, a large developer community and lots of help and support available on the internet.


Further Reading

Getting Started With .NET 5.0
https://www.c-sharpcorner.com/article/getting-started-with-net-5-0/

Understanding .NET Just-In-Time Compilation
https://www.telerik.com/blogs/understanding-net-just-in-time-compilation

Create .NET Apps Faster With NuGet
https://www.nuget.org/

Leave a Reply

Your email address will not be published. Required fields are marked *