jacqueskang / eventsourcing Goto Github PK
View Code? Open in Web Editor NEW.NET Core event sourcing framework
License: MIT License
.NET Core event sourcing framework
License: MIT License
Examples for CQRS and Event Projection would make this library more completed.
When there are aggregates with a snapshot, and you call the method FindAggregateAsync(id, ignoreSnapshots, version)
with ignoreSnapshots
set to false
, the TextFileSnapshotStore.FindLastSnapshotAsync
method fails.
The logic for getting the last snapshot of an aggregate doesn't check if the snapshot is for the relevant aggregate.
Typical use of events published by event store are to maintain materialized views and integration with other systems.
Does this sample handle concurrency ?
Let's say I created a gift card with an initial value of 100 and executed two request at the same time to debit 40 points for the first request and 50 points for the second request.
I might end up with a gift card value of 60 or 50 after the two operations have been processed. Is this possible ?
Thanks in advance
Wow! Thank you so much for developing this and making it publicly available. I only started researching event sourcing and CQRS this week, having looked at DDD more generally a few months back. Your library has been really educational in helping me understand the concepts and is starting to become useful now that I'm working through examples of my own.
One small point (maybe you think it's pedantic). Seeing as timestamps are so important to the auditability of the system, which could be deployed across servers (and accessed by clients) in different time-zones, shouldn't your DateTime objects be DateTimeOffset instead.
If I understand correctly, this is the standard recommended for most use cases by Microsoft:
The uses for DateTimeOffset values are much more common than those for DateTime values. As a result, consider DateTimeOffset as the default date and time type for application development.
https://docs.microsoft.com/en-us/dotnet/standard/datetime/choosing-between-datetime
Maybe I'm totally wrong, in which case, sorry. But if I'm right, it should be an easy fix, right?
Update AggregateRepository.FindAggregateAsync() adding a new version parameter
Hi Jacques,
I recently stumbled upon your library when going through stackoverflow, and I must say I'm very impressed. Great work!
I was wondering whether you're planning to include snapshot capability to the library.
Cheers
Great stuff here! Thanks :)
What is the difference between Caching and Snapshot?
I imagine snapshot is a kind of caching no;
Can provide option for TakeSnapshot method replace old snapshot rather than add new version snapshot
As far as I understand the aggregates are not thread-safe.
I am looking to see how we could implement a thread-safe aggregate without introducing some distributed locking using DynamoDB or Redis.
An example scenario is if you have an ASP.NET REST API and consider the following endpoints for the same user aggregate invoked in parallel from a front end client it can result in weird results in event data (skipped version, dynamodb streams INSERT and MODIFY events writing the same aggregate ID and Version for different events).
Any ideas?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.