.NET Annotated Monthly | May 2022
Did you know? Screensavers were introduced to stop images getting burned into your PC screens. It’s true! Older screens weren’t nearly as nice as they are now. If you left your monitor on for long periods of time and left a wallpaper or program visible, it would burn traces of it into the screen. Much like when you look directly at a light and then look away.
- C# 11 Preview Updates – Raw string literals, UTF-8 and more!
- Announcing .NET 7 Preview 3
- .NET MAUI Release Candidate
- ASP.NET Core updates in .NET 7 Preview 3
- Announcing .NET MAUI Preview 14
- CoreWCF 1.0 has been Released, WCF for .NET Core and .NET 5+
We’d like to thank Chris Woodruff for curating this month’s featured content! Chris (or Woody as he is commonly known) has a huge passion around software architecture especially around APIs. You can find him Tweeting as @cwoodruff, on LinkedIn and finally trying to blog more at Woodruff.Dev. Woody also has an expensive bourbon collecting hobby that takes him to the Bourbon Trail in Kentucky several times a year.
Woody has a great online workshop covering ASP.NET 5 Web API that anyone can learn more about REST APIs. You can find the online workshop here “ASP.NET 5 Web API Workshop” and the code for the workshop on his GitHub repo.
The ASP.NET 6 Web API workshop will be coming out later this year but Woody has the code for the workshop available here at the Chinook6WebAPI repo.
- Design-First Approach to API Development: How to Implement and Why It Works – Steve Rodda and Shane Hastie. Love this article around taking our APIs to the next level beyond just CRUD. That is the reason why I don’t just pass my EF Core Entities through my API endpoints. I use what I call APIModels (other call them DTOs) to allow me to change the shape of my APIs for behaviors.
- API Showdown: REST vs. GraphQL vs. gRPC – Which Should You Use? – Discussion covering REST, GraphQL, and gRPC, what it takes to get started, and when each is the right/wrong tool for the job.
- Unlock the Secrets of Great, Lasting APIs • Mike Amundsen & Casey Rosenthal – GOTO – Today, Tomorrow and the Future Podcast. Great discussion with my friend and role model Mike Amundsen. I watch, listen or read anything from Mike!
- Software Architecture: It Might Not Be What You Think It Is – Pierre Pureur and Kurt Bittner. Great view of software architecture and refreshing to see a pivot to spread software architecture through all team members.
- Why IT Projects Fail; How Can We Do Better? – Yong Hu. I work with Yong and he is someone I respect a lot so his message about why software projects fail is very enlightening.
- The 8 Books That Inspired The Most Ideas This Year – Phil McKinney. I read many looks! Even ones that are not leather bound in an apartment that smells of rich mahogany. :-) Phil has a great list of books everyone needs to read to help us get better ideas and improve our creativity.
.NET & programing tutorials and tips
.NET tutorials and tips
- Why you may be doing async wrong, in C# – Ashley Rowe shows how code samples are done both synchronously and asynchronously, and with excerpts of how you can avoid common async pitfalls.
- Async and Async Void Event Handling in WPF – Rick Strahl details what to watch for when updating .NET WPF code to an async model.
- C# async await explained – And a bit more on async coding with Patrick Smacchia, as he explains what you need to build async code.
- Keeping up with .NET: learning about new features and APIs – Hot off the press, Andrew Lock reviews some new .NET features that we all should know. Note that one way to keep up with new features is to read blog posts just like this one.
- How to Access Query Strings in Minimal APIs – Shawn Wildermuth does a minimal writeup on using query strings in Minimal APIs.
- How to get the full public URL of ASP.NET Core and How to generate absolute URLs in ASP.NET Core – Niels Swimberghe focuses on URLs this month. Check out these informative blog posts details how to get and generate them.
- Secure Your .NET 6 Web API – Nickolas Fisher reviews some details on how to secure .NET 6 Web API projects.
- Nullable reference types in C# | Internals of C# nullable reference types | Annotating your C# code – Migrating to nullable reference types – Maarten Balliauw is publishing a series revealing everything you need to know about nullable reference types in C#.
- Tutorial: Build gRPC & OData in ASP.NET Core – gRPC + OData + .NET Core? Yes, please! Thanks to Sam Xiu for this nice tutorial on how to put together these technologies in one app.
- Insertion Sort in C# and JSON Deserialization to a POCO Class in C# – Check out Code Maze. They publish several articles each month like these two, which are short and helpful. Code Maze also hosts its own set of authors who produce quality posts.
- ASP.NET Core Interview Questions and Answers – A nice resource for those who are interviewing by Khalid Abuhakmeh, JetBrains advocate and teammate. Hmmm, wait a minute. Now we’re suspicious. Is Khalid interviewing? What do you think?
- A CRUD Operation Demo With .NET6 Web API | SQL Database | Angular13 Check out this excellent 4 Part Series by Naveen Bommidi on business dev essentials – CRUD ops with .NET and Angular as the JS frontend. Thanks Naveen!
- Generating QR Codes and Other Barcodes is Now Easy in .NET MAUI – Have you ever wanted to make your own QR codes for things? For those who haven’t, they are such a convenience! They’re a great way to integrate the physical and virtual by way of a phone. Let Sheik Syed show you how.
- ASP.NET Core CRUD with NoSQL and Part 2 – This two part series by Matthew Groves will have you up and running with CRUD operations but in NoSQL. CRUD isn’t for just relational databases. You must do these same operations with document and object databases too, though storage formats are different.
- Taking .NET MAUI for a Spin – In this post, Jon Skeet takes MAUI for a spin as promised.
- Update Your Azure Functions Table Storage Bindings – This is a good one for those who have Azure Functions out there running. At some point you’ll want to update them. Post by Mark Heath.
- Lambda Function URLs – triggering .NET 6 Lambda functions with a HTTPS Request – A nice “how-to” where Bryan Hogan demonstrates how to execute .NET Lambdas with an HTTP Request.
- What’s Coming for Blazor Hybrid in .NET 7 – Find out what Blazor Hybrid apps are (tldr; desktop/native apps) and what their entry into .NET means in this post by David Ramel.
- Transaction middleware in ASP.NET Core – One of the big selling points of ASP.NET Core is the ability to create pluggable middleware. This helps reduce coupling and create more robust codebases. So thanks to Mohsen Esmailpour for this nice light post on middleware basics.
- FluentValidation version 11 Released! – Jeremy Skinner has released a new version of FluentValidation.
- WatchDog – WatchDog by Ulelu Israel is a realtime HTTP exception logger. This utility is useful for those who want to not just log the data but have a nice dashboard to view metrics.
Daniel Lawson penned a nice thread on immutability in programming, with C# as the example.
Related programming tutorials and tips:
- How To Use Storytelling In UX – Even if you’re a dev who does no frontend work, this is a solid but also fun way to work with frontends and designers. It’s definitely in the “good to know” category – so set aside a few minutes for it. Post by Marli Mesibov.
- Use Copilot to Write and Translate a Binary Search Algorithm – GitHub Copilot is a new software program run by AI that pair programs with you. In this post, Rizèl Scarlett demonstrates how to use this algorithm to translate a binary search algorithm.
- The ins and outs of joining tables in SQL Server – I see what you did with that blog post title, Greg Larsen. Anyway, for those who don’t do SQL a lot or are newer to it, db relationships and with that joining tables is a cornerstone of SQL development. So check this fairly in-depth tutorial out and when you’re done you can join tables like a pro.
- URL, URI, URN: What’s the Difference? – Great question! This topic is one that a lot of web developers don’t bother to investigate, and may not need in their day-to-day jobs but the distinctions are useful and often important. Good thing Andrea Chiarelli has answers to this question!
- C++ For C# Developers – If you want to learn a new thing this year and don’t know C++ already, read this. Seriously. Jackson Dunstan has created what amounts to a book (it’s 53 lengthy posts long) on C++ for C# devs. This will help you get a great perspective on what’s even closer to the metal than you can get even with unsafe code in C#.
Interesting and cool stuff
- Bringing Social Work Skills to the Workplace – Jessica Keaton writes up a short but to the point post on social skills and the workplace. Pass this around to certain colleagues. You know who.
- You should be reading academic computer science papers – Ryan Donovan of GitHub puts it perfectly: “You read documentation and tutorials to become a better programmer, but if you really want to be cutting-edge, academic research is where it’s at.”
- 20 Years of Patterns’ Impact – Speaking of academic style papers. This gem from the IEEE Rebecca Wirfs-Brock et al., is an old but important perspective on why patterns are as they are today.
And finally, the latest from JetBrains
Here’s a chance to catch up on JetBrains news that you might have missed:
- Introducing RiderFlow, a Free Unity Editor Plugin for Scene Management
- ReSharper 2022.1 Released
- The 2022.1 Release of dotTrace, dotMemory, dotCover, and dotPeek!
🛠 Check out our .NET Guide! It’s a learning tool with tons of videos, tips, tricks, and info on a variety of .NET related topics. 🛠
Blog posts, webinars, etc..:
- Phone Calls with .NET and Twilio – Webinar Recording
- Webinar – Using the BFF pattern to secure SPA and Blazor Applications
- ReSharper and Rider 2022.1.1 bug fixes have landed
- HTMX for ASP.NET Core Developers – Tutorial
- Rider 2022.1 Comes With Full Unreal Engine Support and Remote Development
Sharing is caring! So share content that you find useful with other readers. Don’t keep it to yourself! Send us an email with your suggestions for publication in future newsletters!