I was sadly unable to attend the Build conference this year, so I have been watching and waiting for the various announcements to come out of the event. So far, the biggest announcement, in my opinion, is the roadmap for .NET going forward. The information is aggregated in Richard Lander's Introducing .NET 5 blog. That posting goes into grave detail about the road ahead and I'll avoid rehashing as much as I can, but rather focus on what I think this means for those of us using .NET & .NET Core.
Before I dive too far into the specifics of how I think this will impact all of us in the .NET space, I want to focus on a few key elements that were communicated in the blog, starting with this key opening statement.
There will be just one .NET going forward, and you will be able to use it to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly and more.
This statement is powerful and very telling, but you have to read into what isn't being said...more on this later!
.NET 5 = .NET Core vNext
To further illustrate his point, it is highlighted that we are keeping all of the things we love about .NET Core and getting more fun things in the future. Many of the new features could be hard to understand how much they might benefit you, but they are huge.
- CoreFX Static Compilation = Smaller footprint & improved performance
- Objective-C & Swift Interoperability = Most likely resulting in better development for iOS/Mac
- Unified Runtime = Performance fixes are global across all of .NET
There is more in here, but I suggest you dive into his detailed explanations.
The release cycle for .NET Core has been a bit of a struggle in some cases, with a longer-term plan not communicated until a bit too late, which resulted in some shifting in the early 2.x days. They have identified the release cycle, with the next 4 years outlined.
Major releases every year, LTS for even numbered releases
This process is easy to understand and allows us to quickly and easily plan for the future. You can predictability adopt new technology and know when you are on the LTS cycle rather than having to pay attention like a hawk to the releases.
But.... .NET Framework
All of the above sounds awesome, but there is one piece that isn't exactly discussed, however, we can start to piece things together. .NET Framework 4.8 is coming out soon, and in 2020 we are getting .NET 5....coincidence? I think not! Looking deeper into blog posts released yesterday we find .NET Core is the Future of .NET from Scott Hunter. Oh boy...here we go....some key excerpts.
Support for .Net Framework?
Per Scott Hunter
.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).
The key takeaway from here is that 4.8 is the end of the road for .NET Framework. It is important to note that .NET Frameworks Long Term Support rules indicate that we have Microsoft support for .NET 4.8 until a least 2029 based on the current version of Windows Server.
Putting this in perspective, it isn't critical, but it sure does give us a bit of insight into the future and our planning.
I've been speaking at conferences and events for a while now that I believed that .NET Core should be used for all new projects. Scott Hunter has made that into an official statement:
With the .NET Core 3.0 release in September 2019 we think that all *new* .NET applications should be based on .NET Core.
This should be taken to heart by all developers, product owners, and those looking to plan for the future. If you haven't started with .NET core the time is now!
What About Web Forms
Given my involvement in the DNN Platform project, I often get questions from those looking for the migration plan for WebForms. There still isn't an actual migration plan for WebForms, however, Microsoft did make this recommendation.
If you are a Web Forms developer and want to build a new application on .NET Core, we would recommend Blazor which provides the closest programming model.
Now, notice that this is suggesting the "Closest Model," which would put emphasis on the easiest transition plan. Just because it is the closest it might not be the right solution for your project needs. No matter what way you slice it, Web Forms developers will need to transition to new technologies. Through my consulting business IowaComputerGurus I have worked on a number of project migrations as well as developer training initiatives. The transition is daunting but can be done.
How Urgently Is Change Needed
With all of the above considered, what is the true impact to developers? I have been running IowaComputerGurus for more than 13 years now and have implemented thousands of solutions, of all sizes for customers across a wide swath of .NET Implementations from WinForms to .NET Core and everything in between. The reality, as I see it, for code that is now considered legacy is to address it upon condition. For example, I'm working with a client right now that is upgrading an old DNN site and doing a big UI refresh, to balance things out we are migrating all of their WebFOrms modules over to MVC to be better prepared for the future. The end result, the code is more readable and easier to maintain.
The writing has been on the wall for a few years now, but we are in the future. I feel that the future is bright, although possibly requiring more work than we want for migration, the end result is positive.