The iterative and innovated development of the .NET Core Framework continues and continues to impress everyone. And while a lot of the tech media is focused on new features and functionality, we can’t help but rave about even more performance coming from a development platform that is already super-fast and just keeps getting faster.
Don’t get us wrong … we love the new features, so let’s start with a few those that stand out.
.NET Core 3.0 – A Few of Our Favorite Things
WPF and Forms Come to .NET Core 3.0
This production release of .NET Core 3.0 includes support for Windows Desktop applications that are built with WPF and Windows Forms. These are two methods for building graphical interfaces that have been used for years. Microsoft promised to deliver this to us ten months ago, and they delivered on that promise. And this means that more and more applications can get their share of the performance pie delivered by the .NET Core framework.
Better in Docker Containers
Docker uses Operating System (OS) level virtualization designed to deliver software packages. It is the de-facto standard of software containers used by many – if not most – of the platform-as-a-service (PaaS) companies. Docker is great because it not only allows modern apps to be moved about and installed easily, it also works with the older legacy apps that a lot of enterprises have lying about inside server closets. Anyway … the point is that enterprises AND SMBs all around the world are using Docker and like it. Now, .NET Core 3.0 has been updated to work better in these kinds of container environments.
Increased Blazor Support
The Blazor UI framework is based on C# and it simplifies the creation of single-page apps that run in web browsers. There is a lot of excitement in the community about Blazor, and a lot of companies are building components and libraries to support it. Support for WebAssembly applications built with Blazor is coming soon to .NET Core … likely in Q2 of 2020.
Tighter Packages for Smaller Footprint
We live in an age where storage memory is really, really cheap … meaning low-cost. Heck, they give away 1 GB thumb drives at the trade shows like candy. But when you are dealing with shared hosting, VPSs, and containers, space and install speed become an issue. The disk requirements of the .NET Core 3.0 SDK have been cut in half for Windows environments and cut by two-thirds on Linux and MacOS.
Sometimes it’s the little things that get our attention, but the fact that the Microsoft .NET team is thinking about things like this tells you a LOT about the attention to detail and code-first thinking that is behind the .NET Core effort. And quite frankly … we love to see it.
See the Complete List of Features in .NET Core 3.0
There are a lot more improvements, updates, and features in .NET Core 3.0. We’re not going to spend the next three hours retyping the entire feature set. That’s what the official Microsoft announcement and release notes are for. You can find links to both of those and the end of this article for your reference.
Performance Improvements in .NET Core 3.0
We have written extensively about the performance gains that the .NET Core framework delivers. It is nothing short of shocking how much faster it is over conventional ASP.NET code. But with each major release the development team at Microsoft finds ways to crank up the speed even further … and that's the kind of iterative improvement that delivers real-world results that we can all measure by the clock and resource utilization. Well, with the release of .NET Core 3.0 they’ve done it again.
If .NET Core 2.2 is a Ferrari, 3.0 is a rocket-ship.
You can find a link to Stephen Toub’s complete (and thoroughly impressive) write-up at the bottom of this article which goes into excruciating detail and documentation. But the point is that the performance gains this time are deep engine work – speed increases on deeply seated core processes that form the backbone of the code we run. That means that these little tweaks are repeated over and over again in our systems. So, each time they’re run, it leverages up the performance of the whole.
Some of these deep processes are marginally improved. Others are faster by orders of magnitude. The net result is speed and resource usage improvements that are real, noticeable, impactful, and measurable.
Now for Info Only Developers Will Love
.NET Core 3.0 Complete Release Notes
When it comes to the .NET Core Framework, it’s really impressive how open, clear, and well-documented Microsoft has been since day 1. You can find the complete set of release notes going all the way back to the Preview 1 release back in December of 2018 and follow the development thread all the way to then end by reviewing the .NET Core 3.0 Release Notes.
Coding Things Devs Need to Know
If you are coding on Visual Studio – and who isn’t? – then there are a few things you need to be aware of. If you’re running Visual Studio on Windows, then you will need to be updated to Visual Studios 2019 V16.3 to work in .NET Core 3.0. If you are coding on a Mac, then you will need Visual Studio for Mac V8.3. In both cases, make sure that you are running the latest version of C# extension.
API Updates going from .NET Core 2.2 to .NET Core 3.0
We have a recurring nightmare where mission critical services are updated overnight with unannounced API changes. In this terrible dream, we awake to find everything broken and thousands of technical support request waiting in queue while a host of ringing phones sound nearby.
Although we have lived through a few of those nightmares in the real world, you will not relive that nightmare with version 3.0. We flipped through all 55 categories of the API documentation and there are a TON of additions and only a handful of changes/deletions/replacements. If you are a developer, you should look through them for yourself. There are hundreds and hundreds of additions – it’s like Christmas morning for we developers to unwrap the possibilities these represent. We’ll let you discover those for yourself. But here is a linked summary of the deletions/changes:
- 23 changes in the System API.
- 1 change to the System.ComponentModel API.
- 1 change to the System.Data API.
- 4 changes to the System.Data.Common API.
- 2 changes to the System.Diagnostics API.
- 2 changes to the System.Diagnostics.Tracing API.
- 5 changes to the System.IO API.
- 2 changes to the System.Linq API.
- 1 change to the System.NET API.
- 2 changes to the System.NET.Security API.
- 3 changes to the System.Reflection API.
- 2 changes to the System.Reflection.Emit API.
- 1 change in the System.Runtime.CompilerServices API.
- 1 change in the System.Runtime.InteropServices API.
- 2 changes to the System.Runtime.Loader API.
- 1 change to the System.Runtime.Serialization API.
- 1 change to the System.Text.RegularExpressions API.
- 4 changes to the System.Threading API.
- 2 changes to the System.Xml.Schema API.
Now, that might seem like a lot, but it’s really not. It totals just 59 changes/deletions across 19 of 55 categories with literally thousands of APIs. This is completely manageable.
Keep in mind that this summary is accurate as of the publish date. Certainly, there will be additional updates as time goes on. A link to the entire maintained set of APIs for .NET Core 3.0 is below for your reference.
.NET Core 2.2 End of Life and the Next-Next 3.1
The more apps and systems running on the latest version, the better it is for the framework, adoption, security, and the community as a whole. Because updates and improvements are coming so hot and fast, Microsoft is not opposed to applying a little incentive to keep things moving along. They want you on the latest versions as fast as possible.
Thus, the previous production release – .NET Core 2.2 – reaches end-of-life in just three months – on December 12th of this year. The next production release – version 3.1 – is slated to be a long-term-supported (LTS) release and it is scheduled for November.
We continue to be surprised – in a good way – by all the changes and speed of innovation coming out of Microsoft on this, their signature development platform. The production release of .NET Core 3.0 is huge. The addition of WPF and Windows Forms alone are enough to warrant the upgrade. But there are tons of new features and significant performance improvements that are impressive. While we are exploring the potential of 3.0 right now, waiting for the 3.1 LTS version in November before updating core production systems might be the smart play here – it’s just two months away. Besides … what else are you going to do during the holiday season this year?
But no matter what, updating to .NET Core 3.x is the winning move.
Thanks for reading.
Links and Additional Resources for .NET Core 3.0
This is our preview release blog post regarding .NET Core 3.0 from December of 2018.
You can find Microsoft’s Official Announcement of .NET Core 3.0 here.
You can find the complete set of .NET Core 3.0 Release Notes here.
A Microsoft blog about performance improvements in .NET Core 3.0.
Here is VentureBeat’s write up of the release of .NET Core 3.0.