23 practical guides
Distributed Systems Guides for .NET
Start with event-driven architecture and the guarantees each message flow needs. Then choose a path for broker setup, consistency across services, or handling failures and load. Each guide explains the failure cases alongside the implementation.
Start here
Event-Driven Architecture in .NET Explained
Event-driven architecture decouples producers from consumers. Instead of calling services directly, you publish events and let interested parties react. Here is how to implement it in .NET.
Read the complete guide →Explore Distributed Systems
Browse all .NET guides →Messaging
Choose a routing pattern, connect a broker, scale consumers, and recover failed messages.
- Event-Driven Architecture in .NET Explained
7 min read
- Message Queue Patterns in .NET: A Practical Guide
7 min read
- MassTransit in .NET: Getting Started Guide
6 min read
- RabbitMQ in .NET: A Beginner's Guide
6 min read
- Publish/Subscribe Pattern With RabbitMQ in .NET
8 min read
- Azure Service Bus Topics, Subscription Filters, and Dead Letter Queues in .NET
8 min read
- Amazon SQS With .NET: A Practical Guide
8 min read
- Competing Consumers Pattern in .NET
6 min read
- Dead Letter Queues: Handling Failed Messages
6 min read
Consistency and transactions
Define consistency boundaries, publish committed changes, and coordinate work across services.
- The CAP Theorem for Working Developers
6 min read
- Eventual Consistency Explained for .NET Developers
7 min read
- Distributed Transactions vs Outbox Pattern
6 min read
- Transactional Outbox Pattern With EF Core
8 min read
- Two-Phase Commit Alternatives: Outbox and Sagas
6 min read
- Saga Pattern in .NET: Managing Distributed Transactions
9 min read
- Message Ordering With Partition Keys and Sequences in .NET
7 min read
- Clock Skew: Why You Can't Trust Timestamps Across Machines
6 min read
Failures and load
Bound retries and concurrency, reject excess work, and share dependency quotas across instances.
Partitioning and coordination
Assign data to owners and prevent an expired leader from writing after a replacement takes over.