- In late 2020, we can expect .NET 5, which will unify all .NETs.
- Performance is a priority when considering feature development.
- C# language advancements directly drive developer adoption.
- The open source community is changing the .NET ecosystem for the better.
With the release of .NET Core 3.0, Microsoft has the next major version of the general purpose, modular, cross-platform and open source platform that was initially released in 2016. .NET Core was initially created to allow for the next generation of ASP.NET solutions but now drives and is the basis for many other scenarios including IoT, cloud and next generation mobile solutions. Version 3 adds a number of oft-requested features such as support for WinForms, WPF and Entity Framework 6.
In 2002, .NET was released. Over the next 12+ years, the .NET developer community patiently grew at a seemingly steady pace. Then, things started evolving rapidly. Microsoft anticipated the changing ecosystem and embraced the open-source development mindset, even acquiring GitHub. Seeing such changes taking place, .NET Framework developers braced themselves for the acceleration that was just getting started. Microsoft later acquired GitHub—the world’s leading software developer platform, and the .NET Framework developers of the world braced themselves for the acceleration.
In November 2014, .NET Core was born. It was the birth of a new revolutionary open-source era for the .NET ecosystem, but that wasn’t without distress. With it came a mass wave of confusion and frustration; developers were not ready for such a dramatic change. There was an attempt to offset this confusion by none other than the Product Manager of the .NET team, Immo Landwerth. He cleverly set out with the task of creating a video series to explain various details of .NET Standard, .NET Core, .NET Framework, and the new .NET ecosystem—often seated by a warm fire with a scotch in hand. Cozy as that seems, I think if a Microsoft PM is willing to scotch up by a fire to explain something, it’s an indicator of concern.
The official recommendation from Microsoft for what you should be doing in the meantime—start new application development with .NET Core. It also would be a good idea to consider porting existing .NET Framework applications over to .NET Core if and where possible.
“New applications should be built on .NET Core. .NET Core is where future investments in .NET will happen.”－Scott Hunter
Within the .NET ecosystem, .NET Core has been at the center of innovation. It is an alternative runtime to the .NET Framework and is a complete rewrite from the ground up; this allowed for aggressive innovations specific to performance. With each iteration of .NET Core and ASP.NET Core respectively, we have been able to expect consistency and improvements. “Reducing allocations” is one very common theme that’s emerged as a performance win. A new industry term was coined:
“Allocaty (adjective: al·lo·caty)—code that allocates more than necessary.”－David Fowler
A significant number of pull requests continue to come in from the CoreCLR and CoreFX GitHub repositories that focus on improving performance by reducing allocations. These efforts have directly led to ASP.NET Core becoming one of the world’s fastest web servers, according to Tech Empower benchmarks. It is incredible to bear witness to such improvements, but they come from ] time and effort, as well as community involvement. Because Microsoft develops in the open, it enables the open-source developer community to contribute to these innovations. Performance improvements are not limited to reducing allocations; there are even lower-level gains by leveraging hardware intrinsics.
It goes without saying that I’m a huge fan of the C# language, and .Net Core is built with C# and its performance focus. So, it might come as little surprise that I’d discuss it a bit here.
“As a theme that’s emerged within .NET Core, wherever possible, new performance-focused functionality should not only be exposed for public use, but also be used internally.”－Stephen Toub
C# 7, its subsequent point releases, and now C# 8, have all pressed at the boundaries of the community’s tolerance for adoption. I’m a huge believer in the evolution of the language. I advocate for it, but at the same time, I empathize with developers who are confined by business limitations that prevent adoption. I can relate to such concerns; the question you need to ask yourself — “What’s the value proposition?” Certain new features are performance-focused, and those might be something to consider, based on your needs.
In a recent Twitter thread, Nick Craver was quoted, “C# 8 is dead to me,” which roughly translates to “StackExchange will not be upgraded to C# 8 for many, many years.” This is in part due to the fact that certain C# features rely on updates to the Common Language Runtime CLR. An example is the “default interface members” feature, which currently relies on .NET Core 3.0. The vast majority of the other features rely only on the C# compiler, which is ideal.
With all the .NET terms flying around the web, it felt appropriate to throw another one at you.
The .NET Foundation is an independent organization to foster open development and collaboration around the .NET ecosystem. It serves as a forum for the community and commercial developers alike, to broaden and strengthen the future of the .NET ecosystem, by promoting openness and community participation to encourage innovation.
A Meaningful Path Forward
The .NET ecosystem is an ever-shifting landscape, but I believe it is moving in a great direction. With open source and cross-platform as two key priorities, you’re in good hands. I’m personally invigorated by the realization that .NET Core and .NET Framework were a strain on the .NET ecosystem, resulting in the unification of .NET 5. While it was a painful few years, it also made such innovations possible. I encourage you to try porting over to .NET Core and starting any new work with .NET Core; it is the future. Despite the unknown .NET Standard direction, it is still suggested until further notice. I’m hopeful that whatever is decided will be low impact.