Tutorials Design Patterns in C#
Saga Pattern — Complete Guide
Saga Pattern — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of Design Patterns in C# on Toolliyo Academy.
On this page
Design Patterns in C# · Lesson 30 of 69
Saga Pattern
GoF Core ✓ → Enterprise → Cloud & Craft
Enterprise · 2 — App patterns · ~6 min · Module 4: Enterprise Design Patterns
What is this?
A saga coordinates a sequence of local transactions with compensations across services — choreography or orchestration.
Why should you care?
ShopNest cannot use one ACID transaction across Order, Payment, and Inventory services.
See it live — copy this example
Paste into a C# console or class library project and run dotnet run.
public sealed class CheckoutSaga
{
public async Task RunAsync(string orderId)
{
await ReserveStock(orderId);
try
{
await CapturePayment(orderId);
await Confirm(orderId);
}
catch
{
await ReleaseStock(orderId); // compensation
throw;
}
}
Task ReserveStock(string id) { Console.WriteLine($"reserve {id}"); return Task.CompletedTask; }
Task CapturePayment(string id) { Console.WriteLine($"pay {id}"); return Task.CompletedTask; }
Task Confirm(string id) { Console.WriteLine($"confirm {id}"); return Task.CompletedTask; }
Task ReleaseStock(string id) { Console.WriteLine($"release {id}"); return Task.CompletedTask; }
}
await new CheckoutSaga().RunAsync("o-1");
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- Steps are local; failure triggers compensation.
- Persist saga state in real systems.
- Deep dive compares choreography vs orchestration later.
Practice next
- Run the happy path logs.
- Throw in CapturePayment and watch release.
- Make each step idempotent with keys.
- Add email step after confirm.
- Timeout cancel for stuck sagas.
Remember
Sequence + compensate. Local ACID only. Idempotent steps.
ShopNest checkout saga
Reserve → pay → confirm with release on failure.
Outcome: No silent reserved stock without payment.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!