During the latest edition of Microsoft Build, Microsoft’s .NET program manager Scott Hunter published an article stating that .NET Core is the future of .NET.
Last year Microsoft had already affirmed that .NET framework would be discontinued in favor of .NET Core, in a Visual Studio Live! Conference keynote. The first announcement of .NET Core as an open-source development stack was in 2014, but the first major release of .NET Core wouldn’t be announced until mid-2016, along with the correspondent versions of ASP .NET Core and Entity Framework Core. Open-sourcing .NET Core was an initiative towards laying the foundation for a cross-platform .NET and building a stronger ecosystem.
The first major version of .NET Core was focused on high-performance web and microservices. One year later, with the announcement of version 2.0, multiple APIs and components were added to facilitate the migration of web applications to .NET Core. InfoQ discussed the release of .NET Core 2.0 and its future with veteran developers from the community. The key takeaways included recognizing the .NET Core as an already stable platform suitable for new application development, providing significant performance benefits over the .NET Framework . One of the developers, Jeff Amons, said that one of the .NET Core strengths was its server-centric design model:
Originally .NET was optimized for one user on one Windows computer. (…) Core gave Microsoft a chance to reset the base to a server centric model.
The highlight of the .NET Core 3.0 announcement was the support for Windows desktop applications, focused on Windows Forms, Windows Presentation Framework (WPF), and UWP XAML. At the moment of the announcement, the .NET Standard was shown as a common basis for Windows Desktop Apps and .NET Core. Also, .NET Core was pictured as part of a composition containing ASP.NET Core, Entity Framework Core, and ML.NET. Support for developing and porting Windows desktop applications to .NET Core would be provided by “Windows Desktop Packs”, additional components for compatible Windows platforms.
Hunter’s article was published simultaneously with the announcement of .NET 5 as “.NET Core vNext”, the next release after .NET Core 3.0. In this announcement, Microsoft shows .NET 5 as a unifying platform for desktop, Web, cloud, mobile, gaming, IoT, and AI applications. It also shows explicit integration with all Visual Studio editions and with the command line interface (CLI). The goal of the new .NET version is to produce a single .NET runtime and framework, cross-platform, integrating the best features of .NET Core, .NET Framework, Xamarin, and Mono (the original cross-platform implementation of .NET). .NET 5 also features Java interoperability on all platforms and interoperability with Objective-C and Swift on multiple operating systems.
The community reacted to the .NET 5 announcement with some skepticism related to the branding and backwards compatibility. For example, user lol768 said:
vNext has already been historically used in the context of ASP.NET to refer to ASP.NET (not to be confused with ASP.NET MVC) v6. We restarted the versioning back with ASP.NET Core, now on version 2. Entity Framework used to be a .NET framework component but is now standalone, and has a Core version? (…) I remember many years ago when we also had Microsoft .NET Passport… which was completely unrelated to everything else that I’ve mentioned related to the .NET brand. And now we have .NET 5 which is neither Framework nor Core – so will ASP.NET drop this Core branding too? Is it just me, or is this all incredibly convoluted?
Still, it is clear that all future investments in .NET will be related with .NET Core, and that .NET 5 is the next step forward with .NET Core. All related development will continue to be open-source and community-oriented. The production release of .NET Core is scheduled to later this year, in September, and .NET 5 is expected on late 2020.