The .NET Stacks #67: ๐ .NET 6 RC2 arrives
In this issue, we talk about the release of .NET 6 RC2 and a new LINQ API.
Welcome to another week, full of top-notch product announcements and the proclamation of "View Source" as a crime. ย I too am a hacker, apparently.
Anyway, here's what we have going on this week:
- Web updates with .NET 6 RC 2
- New .NET 6 LINQ API: Chunk
- Last week in the .NET world
Web updates with .NET 6 RC 2
Right on time, last week Microsoft rolled out the .NET 6 RC 2 release. It's the second of two "go live" RCs that are actually supported in production. Richard Lander's announcement post gets you up to speed on what is new with C# 10, including record structs, global usings, file-scoped namespaces, interpolated strings, and extended property patterns.
Despite being oh-so-close to the official release next month, the ASP.NET Core team was busy shipping updates for this release and I'd like to pay attention to those. We saw updates in two big areas: native dependencies and Minimal APIsโthe latter of which I've admittedly beaten to death, but also plays a pivotal future in how you build new APIs in the .NET ecosystem (if you want to get over MVC, of course).
With Blazor WebAssembly, in .NET 6 you can now use native dependencies that are built to run on WebAssembly. Using new .NET WebAssembly build tools, you can statically link native dependencies. You can use any native code with this, like C/C++ code, archives, or even standalone .wasm modules. If you have some C code, for example, the build tools can compile and link it to a dotnet.wasm
file. To extend it some more, you can use libraries with native dependencies as well.
As for Minimal APIs, you can now leverage parameter binding improvements. With RC2, you can use TryParse
and BindAsync
for inherited methods. For example, BindAsync
allows you to bind a complex type using inheritance. Check out Daniel Roth's blog post for details. The RC2 release also makes some OpenAPI enhancements and includes some analyzers to help you find issues with middleware issues or route handling.
It's hard to believe the next .NET 6 announcement will be the full release itself. As part of that .NET Conf will celebrate the launch, and Visual Studio 2022 will launch on November 8. In the year 2021. (I know.)
New .NET 6 LINQ API: Chunk
If you haven't heard, .NET 6 will roll out some nice LINQ API improvements. Matt Eland recently wrote a nice piece about them. As a whole, it's nice to see .NET 6 roll out quite a few API improvements that were previously done with some light hacking. We all do some light hacking, of course, but for millions of .NET developers there are a lot of common use casesโand it's nice to see those being addressed.
My favorite recent LINQ API improvement is the Chunk API. If you work with large collections of objects, you can now chunk them in case you want to work through pagination or other "chunking" use cases. For paging, you previously had to set a page size, loop through the collection, add to some paging collection, and update some counts.
Instead, as Matt notes, you could try something like this:
IEnumerable<Movie[]> chunks = movies.Chunk(PAGE_SIZE);
This should really help folks page through big API datasets. When you don't control the data coming back, you had to set this up yourself. Very nice.
๐ Last week in the .NET world
๐ข Announcements
- Richard Lander announces .NET 6 Preview 2, and Daniel Roth discusses ASP.NET Core updates. Also, David Ortinau introduces .NET MAUI Preview 9.
- Visual Studio 2022 for Mac Preview 2 is now available.
- Jeremy Likness writes about SQL Server temporal tables in EF Core 6.
- Auth0 is now available on Azure.
๐ Community and events
- Brendan Burns provides updates on KubeCon.
- Jeremy Miller writes all about deletes in Marten v4.
- Aaron Stannard writes about the Future of the .NET Foundation and .NET OSS. In related news, The .NET Foundation is holding a Tell Me Anything meeting.
- Microsoft has a VS 2022 launch event on November 8.
๐ Web development
- Vedran Cindric provides some REST guidance.
- Niels Swimberghe works with Blazorโs new HeadContent and PageTitle.
- Matthew MacDonald throws some cold water on Blazor AOT compilation.
๐ฅ The .NET platform
- Scott Hanselman debugs a .NET SDK issue.
- Matthew Jones writes about the new Chunk() method in .NET 6.
- Code Maze works through a CQRS validation pipeline with MediatR and FluentValidation.
- Andrew Lock supports EF Core migrations with WebApplicationBuilder.
- Muhammad Rehan Saeed writes about his issues with C# 10 implicit usings.
โ The cloud
- Lee Briggs compares Azure container solutions.
- Norm Johanson writes about the new AWS .NET Deployment Experience, and Franรงois Bouteruche migrates .NET Framework apps to AWS.
- Daniel Krzyczkowski writes about async communication with the Azure Service Bus.
- Pavel Krymets introduces experimental OpenTelemetry support in the Azure SDK for .NET.
- Stephanie Lee writes about using Azure Functions with .NET 5.
๐ง Tools
- Khalid Abuhakmeh works on cursor paging with Entity Framework Core and ASP.NET Core.
- The Pro Code Guide uses Polly with ASP.NET Core.
- James Croft runs Selenium UI Tests with Azure DevOps.
- Cody Merritt Anhorn enables .NET CLI tab completion.
- Thomas Ardal writes about updating NuGet packages from the command line.
- Davide Bellone adds logs with .NET Core and Serilog.
- Grace Taylor writes about using VS Code themes with Visual Studio 2022.
- Matthias Koch writes about the reworked Copy Code Reference feature in ReSharper and Rider 2021.3 EAP.
๐ Design, testing, and best practices
- Derek Comartin explores data consistency between microservices.
- Camille Fournier writes about how new managers fail individual contributors.
- Dennis Doomen describes 15 flags that tell you that your testability practices need maturing.
- The Overflow explores design patterns.
- Jennifer Riggins writes about the emergence of observability.
๐ค Podcasts and videos
- Adventures in .NET talk about VS 2022.
- The Coding Blocks asks: should you speak at a conference?
- .NET Rocks talks to Mads Torgersen about C# 10.
- AzureFunBytes talks to Burke Holland about remote development.
- The ASP.NET Monsters build GitHub Actions in C#.
- Scott Hanselman makes the ultimate terminal prompt on Windows 11.
- The .NET MAUI Podcast talks all about .NET 6 RC 2.