Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mizrael/supersafebank
Sample Event Sourcing implementation with .NET Core
https://github.com/mizrael/supersafebank
azure azure-functions azure-service-bus cosmosdb dotnet dotnet-core event-sourcing eventstore kafka mongodb servicebus unit-testing
Last synced: 4 days ago
JSON representation
Sample Event Sourcing implementation with .NET Core
- Host: GitHub
- URL: https://github.com/mizrael/supersafebank
- Owner: mizrael
- Created: 2020-02-29T20:19:13.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-26T04:28:57.000Z (6 months ago)
- Last Synced: 2025-01-11T00:03:46.918Z (11 days ago)
- Topics: azure, azure-functions, azure-service-bus, cosmosdb, dotnet, dotnet-core, event-sourcing, eventstore, kafka, mongodb, servicebus, unit-testing
- Language: C#
- Homepage: https://www.davidguida.net/event-sourcing-in-net-core-part-1-a-gentle-introduction/
- Size: 478 KB
- Stars: 585
- Watchers: 21
- Forks: 106
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# SuperSafeBank
[![SuperSafeBank](https://circleci.com/gh/mizrael/SuperSafeBank.svg?style=shield)](https://app.circleci.com/pipelines/github/mizrael/SuperSafeBank)
This repository shows how to implement Event Sourcing, CQRS and DDD in .NET Core, using a Bank as example.
The code has been used as example accompaining a few series of articles on [my personal blog](https://www.davidguida.net):
- https://www.davidguida.net/event-sourcing-in-net-core-part-1-a-gentle-introduction/
- https://www.davidguida.net/event-sourcing-on-azure-part-1-architecture-plan/
- https://www.davidguida.net/event-sourcing-on-azure-part-2-events-persistence/
- https://www.davidguida.net/event-sourcing-on-azure-part-3-command-validation/
- https://www.davidguida.net/event-sourcing-on-azure-part-4-integration-events/
- https://www.davidguida.net/my-event-sourcing-journey-so-far/
- https://www.davidguida.net/event-sourcing-things-to-consider/An ASP.NET Core API is used as entry-point for all the client-facing operations:
- create customers
- create accounts
- deposit money
- withdraw money## Infrastructure
The Cloud can be hosted on Azure, using Azure Functions, [Storage Table](https://azure.microsoft.com/en-ca/services/storage/tables/?WT.mc_id=DOP-MVP-5003878) to persist Events and Materialized Views, and [ServiceBus](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview?WT.mc_id=DOP-MVP-5003878) to broadcast the Events.An "on-premise" version is available as well, which uses
- Kafka to broadcast the integration events
- MongoDb to store the QueryModels used by the API
or SQLServer can be used as persistence layer for aggregates.
- several options are available for the Persistence layer to store aggregates:
- SQLServer
- [EventStore](https://eventstore.com/)
- [EvenireDB](https://github.com/mizrael/EvenireDB)The on-premise infrastructure can be spin up by simply running `docker-compose up` from the root folder.
## Give a Star! ⭐️
Did you like this project? Give it a star, fork it, send me a PR or sponsor me!