Tutorials Design Patterns in C#

Saga Pattern — Choreography vs Orchestration

Saga Pattern — Choreography vs Orchestration: 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 38 of 69

Saga Pattern — Choreography vs Orchestration

GoF Core ✓Enterprise ✓Cloud & Craft

Cloud & Craft · 3 — Microservices & interviews · ~6 min · Module 5: Modern Enterprise Patterns

What is this?

Orchestration uses a coordinator to drive saga steps; choreography lets services react to each other’s events without a central boss.

Why should you care?

ShopNest checkout is easier to trace with orchestration; catalog side-effects may suit choreography.

See it live — copy this example

Paste into a C# console or class library project and run dotnet run.

// Orchestration: CheckoutSaga calls Reserve/Pay/Confirm
Console.WriteLine("ORCH: saga calls inventory, then payment, then confirm");
// Choreography: OrderPlaced → InventoryReserved → PaymentCaptured (events)
Console.WriteLine("CHOREO: each service listens and emits next event");

What happened?

  • Orchestration centralizes flow and compensations.
  • Choreography avoids a single orchestrator but can be harder to see end-to-end.
  • Pick deliberately.

Practice next

  1. Redraw ShopNest checkout as orchestration.
  2. Redraw email+search updates as choreography.
  3. List tracing needs for each.
  4. Add sequence diagram for both.
  5. Choose one for refunds and defend it.

Remember

Two saga styles. Orchestration for complex checkout. Choreography for loose side effects.

ShopNest mixed approach

Checkout orchestrated; search indexing choreographed.

Outcome: Clear money flow; loose coupling for secondary updates.

Interview prep for this lesson

Practice these questions aloud after reading—each links to a full structured answer.

Mid PDF Detailed
Abstract Factory (LoggerFactory):?
Short answer: The LoggerFactory class defines a factory method CreateLogger that returns an ILogger object. This is a generic interface for creating various logger types without specifying the concrete class directly. Re…
Mid PDF Detailed
Redo Functionality:?
Short answer: You can extend the system by adding redo functionality. After an undo operation, you could store the undone command in a separate stack and allow users to redo the previous undo operation. Real-world exampl…
Mid PDF Detailed
Abstract Expression (IExpression):?
Short answer: The IExpression interface declares an Interpret method, which is the core of the interpreter pattern. This method is used to interpret and evaluate expressions. public interface IExpression Example code { i…
Mid PDF Detailed
Mediator (ChatMediator):?
Short answer: The mediator manages communication between the users. It maintains a list of all users and broadcasts messages to all other users when one user sends a message. This keeps the users from directly knowing ab…
Mid PDF Detailed
Component (ICoffee):?
Short answer: This is the base interface that defines the common methods for the Cost() and Description() that every coffee component will implement. public interface ICoffee Example code { double Cost(); string Descript…
Questions on this lesson 0

Sign in to ask a question or upvote helpful answers.

No questions yet — be the first to ask!

Design Patterns in C#
Course syllabus

Design Patterns in C# Tutorial

Module 1: Creational Design Patterns
Module 2: Structural Design Patterns
Module 3: Behavioral Design Patterns
Module 4: Enterprise Design Patterns
Module 5: Modern Enterprise Patterns
Module 6: Microservices & Cloud Patterns
Module 7: ASP.NET Core Architecture Patterns
Module 8: Interview & System Design
Toolliyo Assistant
Ask about tutorials, ebooks, training, pricing, mentor services, and support. I use public site content only—not admin or internal tools.

care@toolliyo.com

Need callback? Share your details