The .NET Stacks #63: ๐Ÿ—ž .NET 6 is for real now

This week, we talk all about the release of .NET 6 RC 1.

Dave Brock
Dave Brock

Happy Monday! This week, we're talking about .NET 6 RC1 and some other topics. Oh, and if you're using Travis CI, maybe you shouldn't.


๐Ÿ”ฅ My favorites from last week

Announcing .NET 6 Release Candidate 1
Richard Lander

ASP.NET Core updates in .NET 6 Release Candidate 1
Daniel Roth

Migration to ASP.NET Core in .NET 6
David Fowler

Update on .NET Multi-platform App UI (.NET MAUI)
Scott Hunter

Visual Studio 2022 Preview 4 is now available!
Mads Kristensen

As expected, .NET 6 Release Candidate (RC) 1 rolled out last week. It's the first of two RC releases deemed "go-live" ready and supported in production. .NET 6 has been feature-complete for a while now, and as Richard Lander states, for this release the "team has been focused exclusively on quality improvements that resolve functional or performance issues in new features or regressions in existing ones." Still, the blog post is worth a read to understand .NET 6's foundational features.

As for the ASP.NET Core side of things, we're seeing quite a bit. The team is rolling out the ability to render Blazor components from JS, Blazor custom elements (on an experimental basis), the ability to generate Angular and React components with Blazor, .NET to JavaScript streaming, and template improvementsโ€”including the ability to opt-in to implicit usingsโ€”and much more.

Of course, it wouldn't be an ASP.NET Core release without talking about Minimal APIs. RC1 brings a lot of updates: better support for OpenAPI for defining metadata, parameter binding improvements (like allowing optional parameters in endpoint actions), and the ability to use multiple calls to UseRouting to support more middleware. David Fowler also dropped a nice guide for migrating ASP.NET Core to .NET 6. You'll want to check it out to understand how the new hosting model works.

Have a sad trombone ready? .NET MAUI will not be making it into .NET 6's official release in November, according to a Microsoft Scott. It's now looking like it'll be released in early Q2 of 2022. There was a lot to be done, and a slight delay beats a buggy release any day. You can also check out Scott's post for an overview on features rolled out with .NET MAUI Preview 8.

Going hand-in-hand with the .NET 6 releases, Visual Studio 2022 Preview 4 is now available. This release promises personal/team productivity improvements (like finding files) and thankfully a big update for the Blazor and Razor editors. You can now use VS 2022 to hot reload on file save in ASP.NET Core and also apply changes to CSS live. Check out the blog post for details.

๐Ÿ“ข Announcements

HTTP/3 support in .NET 6
Sam Spencer

Along with all the other announcements last week, Sam Spencer writes about HTTP/3 support in .NET 6. As a refresher, Sam explains why HTTP/3 is important: "We have all gone mobile and much of the access is now from phones and tablets using Wi-Fi and cellular connections which can be unreliable. Although HTTP/2 enables multiple streams, they all go over a connection which is TLS encrypted, so if a TCP packet is lost all of the streams are blocked until the data can be recovered. This is known as the head of line blocking problem."

"HTTP/3 solves these problems by using a new underlying connection protocol called QUIC. QUIC uses UDP and has TLS built in, so itโ€™s faster to establish connections as the TLS handshake occurs as part of the connection. Each frame of data is independently encrypted so it no longer has the head of line blocking in the case of packet loss."

The RFC for HTTP/3 is not yet finalized and subject to change, but you can start to play around with HTTP/3 and .NET 6 if you're up for getting your hands dirty. You can use the HttpClient as well if you enable a runtime flag. Check out the post for details.

More from last week:

๐Ÿ“… Community and events

Announcing the Candidates .NET Foundation Election 2021
Nicole Miller

This post isn't new but if you're a member of the .NET Foundation, they are looking to fill a couple of seats on the Board of Directors. Browse the blog post to learn more about the candidates (Nicole has interviewed each candidate, as well). Voting ends by the end of today (September 20) at 11:59 PST in the USA. (Disclaimer: I was on the Election Board and would love to hear feedback about the process if you have it. We aren't perfect but are trying!)

More from last week:

๐ŸŒŽ Web development

WebSocket per-message compression in ASP.NET Core 6
Tomasz Pฤ™czek

New with ASP.NET Core 6, you can compress WebSocket messages. Tomasz Pฤ™czek has been working with it so far and has a nice post with a GitHub repository you can reference. It ships with a WebSocketAcceptContext object, which includes a DangerousEnableCompression property. Why?

"You might be wondering why such a "scary" property name. It's not because things may fail. If the client doesn't support compressions (or doesn't support compression with specific parameters), the negotiated connection will have compression disabled. It's about security. Similarly to HTTPS, encrypted WebSocket connections are subject to CRIME/BREACH attacks. If you are using encryption, you should be very cautious and not compress sensitive messages."

Also from last week:

๐Ÿ”ง Tools

Advanced Git Workflow Tips
Khalid Abuhakmeh

Over at the JetBrains blog, Khalid Abuhakmeh writes about ways to make working with Git easier, armed with some JetBrains Rider tips as well. I learned about cleaning your repository of non-tracked artifacts by using git clean -xdf. An irreversible command, you can use it to prevent folder bloat that occurs in new repos when you're working with non-tracked files like dependencies and build items.

๐Ÿ— Design, testing, and best practices

โ›… The cloud

๐Ÿฅ… The .NET platform

๐Ÿ“” Languages

๐Ÿ“ฑ Xamarin

๐ŸŽค Podcasts and Videos

.NET Stacks