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
Migration to ASP.NET Core in .NET 6
Update on .NET Multi-platform App UI (.NET MAUI)
Visual Studio 2022 Preview 4 is now available!
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.
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.
HTTP/3 support in .NET 6
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:
- Some releases: WinUI 2.7 is out, Dapr v1.4 is now out, and so is Uno Platform 3.10. Also, CoreWCF has a new release.
- Leslie Richardson writes about the future of Visual Studio extensibility.
- Vasu Jakkal writes about passwordless personal Microsoft accounts.
- The NuGet folks introduce package source mapping.
📅 Community and events
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:
- The Netflix Tech Blog continues their practical API design series, and also writes about securing at scale.
- For community standups: ASP.NET talks about Blazor .NET 6 RC1 updates, Machine Learning walks through TorchSharp, and .NET Tooling discusses updates for Visual Studio for Mac.
- The .NET Docs Show hosts a .NET IoT AMA.
🌎 Web development
WebSocket per-message compression in ASP.NET Core 6
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:
- Scott Hanselman writes more about Minimal APIs in .NET 6.
- Visual Studio Magazine confirms that PHP runs the world.
- Thomas Ardal writes about async processing of long-running tasks in ASP.NET Core.
- Khalid Abuhakmeh uses .NET to validate JSON with JSON Schema.
- David Grace works on .NET 6 Blazor updates in Visual Studio 2022.
- Matthew MacDonald asks: is Blazor the future or just another walled garden?
Advanced Git Workflow Tips
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.
- Chinedu Imoh introduces GitHub Codespaces.
- Khalid Abuhakmeh offers advanced Git workflow tips.
- Ryan Staatz writes about 5 things developers need to know about Kubernetes management.
- Davide Bellone customizes fields generation in Visual Studio 2019.
- Patrick Smacchia debugs a .NET App on Linux from Windows Visual Studio with WSL.
🏗 Design, testing, and best practices
- Anwar Al Jahwari works on the Strategy pattern.
- Steve Fenton offers a perspective on the laws of software development.
- Steve Smith asks: should controllers reference repositories or services?
- Mahesh Chand offers some productivity tips.
⛅ The cloud
- Brian Weeteling writes about semantic search with Azure Cognitive Search.
- The CNCF asks: is serverless the right way to the cloud?
- Justin Yoo works on MS Graph, Blazor WebAssembly, and Azure Static Web Apps.
🥅 The .NET platform
- Andrew Lock looks inside the ConfigurationManager in .NET 6.
- The Code Maze blog introduces System.Text.Json.
- Something I missed a while back: Sam Walpole introduces F# for OO developers.
- Maarten Hus writes about pipeline operator possibilities in F#.
- Luis Matos works on password validation rules with Xamarin Forms.
- Almir Vuk writes about the .NET MAUI compatibility packages for the Xamarin Community Toolkit.
🎤 Podcasts and Videos
- Coding Blocks discusses Docker licensing, career, and coding questions.
- .NET Rocks talks about going from software developer to software engineer, and The Overflow talks about the roadmap from engineer to manager.
- Merge Conflict discusses how not to monetize an app.
- Adventures in .NET ask: how do you grow?
- The .NET MAUI Podcast provides an update.
- The Working Code Podcast asks: are database transactions overrated?
- The 6-Figure Developer Podcast talks to Jesse Liberty about Git.
- The Unhandled Exception Podcast talks about Git with Jesse Liberty and James World.
- The Changelog discusses GitHub Codespaces.
- The Azure DevOps Podcast talks to Daniel Roth about web dev on .NET 6.
- The ASP.NET Monsters walk through DateOnly and TimeOnly in .NET 6.
- The On .NET Show discusses accepting online payments with Stripe and performance and load testing with k6.