Capabilities
Projections & Read Models
Async read models with checkpoints, rebuilds, sharded lanes, blue/green deployments — plus declarative query caching.
Writes go to the event store; reads come from projections — purpose-built read models kept up to date by a catch-up subscription. They can be rebuilt from scratch at any time, because the events are the truth and the read model is just a view.
What ships: IProjection with checkpointing and a catch-up hosted service,
poison-event handling and dead-lettering, projection rebuilds (including
automated zero-downtime blue/green rebuilds), lag monitoring with
advisory-lock scale-out, inline projections (updated in the write
transaction) and multi-stream projections, intra-projection sharding for
one hot projection that needs parallel lanes, and persistent named
subscriptions so a new consumer can start from history and hand off to live
without losing its place.
On the query side, [Cacheable] gives declarative caching with stampede
protection over in-memory or Redis backends.
The stories behind it: The Read Model That Lied and The Transaction Feed That Fell Behind.
Learn by building
The tutorials for this area, in order — each with a runnable sample.
007ProjectionsEvent sourcing stores what happened, which is perfect for the write side and useless for the read side.
008Projection OperationsArticle 007's projection host works while every event is well-behaved. Production guarantees two things that break that assumption.
009Caching QueriesA read model (article 007) already makes queries fast — a single indexed SELECT.
026Inline & Multi-Stream ProjectionsArticle 007 built the standard read side: a projection runs in a background host, catches up from a checkpoint after each command commits, and is eventually consistent.
031Intra-Projection Sharding: Parallel Lanes for One Hot ProjectionArticle 008 makes a deliberate promise: a projection has exactly one active worker.
032Automated Blue/Green Projection RebuildsArticle 008 gave you the shadow (blue/green) rebuild: a projection implements IRebuildableProjection, IProjectionRebuildManager builds a fresh shadow read model from history while the live one keeps serving, and once the shadow has caught up an operator calls SwapAsync to atomically promote it.
033Persistent Named SubscriptionsA projection (article 007) is a catch-up reader: it walks the global event log forward, updates a read model, and remembers how far it got so a restart resumes instead of reprocessing two years of history.