Skip to content

ronaldkroon/LiquidProjections

 
 

Repository files navigation

Liquid Projections Build status

What is this?

Liquid Projections is designed as a library (and not a framework) that should help you write maintainable projection code in an event sourcing architecture. After evaluating several years of working with an event sourced architecture, I decided I needed a fresh start. This project has been designed based on the following principles:

  • Designed as a library which doesn't hide the magic behind abstractions and tries to avoid the need to sub-class anything.
  • Projections must be autonomous so whether a projector stores its projections in-memory, in RavenDB or in a RDBMS is a local concern.
  • Similarly, whether it restarts from scratch every time or stores progress information in-between is a decision each projection can make.
  • Is distributed as separate NuGet packages so that you don't need to take dependencies on stuff you don't need.
  • async all the way

What does it offer?

Liquid Projections offers several components that are designed to be used independently.

  • An EventMapBuilder to fluently build an EventMap that defines how events should be handled during projection.
  • A thin abstraction named IEventStore to represent an event store. Currently only NEventStore is supported as well as a in-memory event store for testing purposes.
  • Projector classes for RavenDB, NHibernate as well as an agnostic Projector that you can use within your projectors.
  • Support for look-ups by allowing you to nest projectors.
  • A Dispatcher that can be used to connect an IEventStore implementation with a projector.
  • A ProjectionException that provides everything you would like to know to understand why a projection fails.

How to get started?

For now, please review the unit tests.

About

Liquid Projections makes building and maintaining .NET projection code in an Event Sourcing architecture easier without loosing control

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 93.7%
  • PowerShell 6.3%