A .NET Core example implementing DDD, CQRS, and event-sourcing using EventFlow with RabbitMQ, MongoDB, PostgreSQL, and EventStore.
EventFlow.Example is a sample application that demonstrates how to implement Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), and event-sourcing using the EventFlow framework. It solves the problem of building scalable, maintainable systems by providing a concrete example with real-world technologies like RabbitMQ, MongoDB, PostgreSQL, and EventStore.
.NET developers and architects looking to learn or implement DDD, CQRS, and event-sourcing patterns in their applications, particularly those transitioning from monolithic to distributed systems.
Developers choose EventFlow.Example because it offers a production-ready, multi-technology setup that illustrates complex architectural patterns in a practical way, reducing the learning curve and providing a reference for integrating EventFlow with various data stores and messaging systems.
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a full-featured example with aggregates, commands, events, sagas, and multiple data stores, as detailed in the README's architecture diagram and configuration snippet.
Showcases practical use of production-grade tools like EventStore for event storage, MongoDB for snapshots, PostgreSQL for read models, and RabbitMQ for event publishing, based on the listed stack.
The configuration code demonstrates flexibility, such as swapping in-memory read models or enabling RabbitMQ publishing, promoting adaptability to different needs.
Utilizes the EventFlow framework to handle complex patterns like command buses and event sourcing, reducing boilerplate and enforcing best practices, as seen in the command and event handlers.
Targets .NET Core 2.2, which is no longer supported, requiring upgrades for modern .NET versions and potentially introducing compatibility issues.
Requires running multiple services via Docker Compose, increasing deployment and maintenance overhead, as indicated by the included docker-compose.yml file.
Assumes familiarity with DDD, CQRS, event-sourcing, and the EventFlow framework, making it inaccessible for developers new to these patterns without prior study.