Messaging in .NET: Queues and topics

#599 – March 15, 2026

why asynchronous messaging matters in .NET applications and how queues and topics differ

Messaging in .NET: Queues and topics
6 minutes by Adrian Bailador

Learn why asynchronous messaging matters in .NET applications, how queues and topics differ, and when to use RabbitMQ, Azure Service Bus, or AWS SQS to build reliable, decoupled systems.

Add secure authentication, MFA, social login, and more to your .NET app easily with FusionAuth
sponsored by FusionAuth

FusionAuth provides flexible authentication which works in any environment. In this quickstart guide, you’ll learn how to build an application with C# and .NET and integrate it with FusionAuth in five easy steps. The hyper-versatile auth platform works seamlessly for server applications, SPAs, mobile apps, back-end services, and anywhere else you could ever need authentication.

How to avoid code duplication in Vertical Slice Architecture
17 minutes by Anton Martyniuk

Vertical Slice Architecture organizes code around features rather than technical layers, which reduces unintended side effects but can lead to code duplication. The key is knowing when to share code and when to keep it separate. Share infrastructure utilities, domain logic inside entities, and reusable capabilities like email or file storage. Keep feature workflows and response models separate, even if they look identical today, since they often grow apart over time.

The Value of Immutability
9 minutes by Barret Blake

Immutable objects cannot be changed after creation, making code more predictable, thread safe, and easier to debug. In C#, you can create them using init accessors, readonly fields, or record types. The main benefit is preventing unexpected data changes that cause hard to track bugs. Use immutable objects by default, but consider mutable ones for data that changes rapidly and frequently.

Fencing tokens and generation clock
8 minutes by Chris Woodruff

In distributed systems leases alone don't prevent old leaders from writing after they lose authority. A stalled node can keep pushing writes through an open database connection while a new leader does the same, creating conflicting data. Fencing tokens fix this by attaching a rising number to each leadership term, so the storage layer can reject any write carrying an outdated number.

Offlining a live game with .NET native AOT
22 minutes by Seph Newman

Towerborne was built as an always-online game with years of backend logic written in C#. When the team pivoted to a fully offline model with six months to spare, rewriting everything in C++ was too risky. Instead, they used .NET Native AOT to compile the existing C# code into a native DLL that runs directly on Windows, Xbox, and PS5. A single function routes HTTP requests through the DLL, letting the game client work unchanged while running entirely without servers.

And the most popular article from the last issue was:

newsletters