These are exciting times for Software Developers. The wide spectrum of technologies to develop applications is rising and whether it’s web, desktop, mobile, cloud, IoT or other, technology evolution is keeping up the pace.
In 2016, Microsoft surprised the world with the first version of .NET Core, where the developer writes, compiles and runs C# code in any operating system decoupled from the Microsoft ecosystem, in an open-source and cross-platform environment.
With the definition of the .NET Standard, developing applications and compiling them for multi-target becomes much easier. But make no mistake, .NET Standard is a specification and not an implementation, as you can read in Microsoft’s page:
.NET Standard is a formal specification of .NET APIs that are intended to be available on all .NET implementations. The motivation behind .NET Standard is to establish greater uniformity in the .NET ecosystem. ECMA 335 continues to establish uniformity for .NET implementation behaviour, and while ECMA 335 specifies a small set of standard libraries, the .NET Standard specification encompasses a broader range of .NET APIs.
So, .NET Framework and .NET Core are implementations from a .NET Standard specification. The last version of the specification is .NET Standard 2.1 and Net Core 3.0, that implements all 37,188 APIs as shown in the image below (you can check other mapping here):
You may notice, the last version of the .NET Framework doesn’t implement the latest version of the NET Standard. Why? Well, this takes us to distinct, although equally important, subjects.
End of Life of the .NET Implementations
Due to technology evolution, every .NET implementation has a support period, although when this period ends, the developed application will still run. However, no update/fix/correction will be added. Common sense dictates that, whenever possible, the applications should be migrated to the latest (LTS – Long Term Support) version, while it is “simpler” to do it.
The following links identify already defined End-Of-Life .NET Implementations:
As long your applications are in the .NET Framework 4.8 (the one recommended), or .NET Core 3.1, you are fine. If not, you can consider migrating your most impacting applications to a more recent .NET implementation.
.NET Roadmap
In May 2019, Microsoft announces the .NET roadmap at the Microsoft Build 2019 conference, creating a big impact on the media:
.NET Framework 4.8 will be the last major version of .NET Framework. If you have existing .NET Framework applications that you are maintaining, there is no need to move these applications to .NET Core. We will continue to both service and support .NET Framework, which includes bug–, reliability– and security fixes. It will continue to ship with Windows (much of Windows depends on .NET Framework) and we will continue to improve the tooling support for .NET in Visual Studio (Visual Studio is written on .NET Framework).
Ok, so the .NET Framework 4.8 will be the last version but what about .NET Core? Well, more surprising news:
Today, we’re announcing that the next release after .NET Core 3.0 will be .NET 5. This will be the next big release in the .NET family.
Just to recap, 4.8 is the latest version of the .NET Framework, followed by .NET Core and .NET 5. Microsoft also revealed the .NET Schedule for the next versions:
Considering the timeline, it could be a good idea to migrate the applications to .NET Core 3.1, although there could be good and solid reasons to keep things as they are.
The .NET Core 3/3.1 version
From the NET Core page, we can read:
ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-based, Internet-connected applications. With ASP.NET Core, you can:
- Build web apps and services, IoT apps, and mobile backends.
- Use your favourite development tools on Windows, macOS, and Linux.
- Deploy to the cloud or on-premises.
Which is a very exciting description, considering all the potential scenarios for a cross-platform and open-source framework. .NET Core 3/3.1 brings many new features:
- Support Windows desktop applications using Windows Presentation Foundation (WPF) and Windows Forms.
- Blazor Server
- Blazor WebAssembly
- Razor components
- GRPC
- SignalR
These are the most visible and impacting features, because we can develop desktop applications with WPF or Single Page Applications in C# with Blazor WebAssembly. There are many other sugar features to be discovered but they are at the “backend” with server performance optimizations.
Either you’re considering migrating your .NET Framework applications, prototyping or starting your way into the .NET world, .NET Core is an excellent start point to your journey. The .NET documentation resources are insightful and assist the less experienced in this journey. There’s also a program called Visual Studio Dev Essentials, that provides training and other tools, as well as Azure cloud credit to get you started free of charge.
Just try it out, tell us how it’s going.
Nuno Cancelo
Polarising Consultant
Microsoft Practice Lead | Senior Software Architect/Engineer | Community Leader | Developer Advocate