EventSourcing ist ein Open-Source-Framework von bluehands für Event-Sourcing-Anwendungen in .NET. Es positioniert sich als "extensible, unobtrusive, functional and flexible multi persistence event sourcing framework" und versucht, möglichst wenig in den Code seiner Anwender einzugreifen.
Das Framework setzt zentrale Event-Sourcing-Bausteine um: Events als immutable Records, Aggregate als reine Funktionen über Event-Streams, Repositories für das Laden und Persistieren sowie Mechanismen für Snapshots, Projektionen und Read Models. Durch "multi persistence" ist es möglich, dieselbe Anwendung auf unterschiedliche Speicher-Backends abzubilden.
Einsatzzweck ist die Umsetzung domänengetriebener .NET-Anwendungen, in denen die volle Historie der Geschäftsereignisse erhalten bleiben soll – etwa in Branchen wie Versicherungen, Logistik, Industrie 4.0 oder regulierten Geschäftsprozessen. Wichtig ist dabei der "unobtrusive" Anspruch: Domänencode soll möglichst plain bleiben und nicht durch Framework-Konventionen verformt werden.
Das Projekt ist auf GitHub unter github.com/bluehands/EventSourcing zu finden. Es lässt sich gut mit DDD- und CQRS-Mustern kombinieren und ergänzt das eigene Funicular-Switch-Projekt, da Event-Handler natürlicherweise Result-Typen zurückgeben können.
Für bluehands ist EventSourcing ein Werkzeug, das die langjährige Erfahrung mit domänengetriebenen .NET-Architekturen kondensiert. Insbesondere für Brownfield-Modernisierungen, in denen ein Legacy-System um eine event-basierte Schicht erweitert wird, bietet das Framework einen pragmatischen Einstieg in Event Sourcing.