EventSourcing.NetCore VS blog-articles

Compare EventSourcing.NetCore vs blog-articles and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
EventSourcing.NetCore blog-articles
8 1
3,230 -
- -
8.1 -
4 days ago -
C#
MIT License -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

EventSourcing.NetCore

Posts with mentions or reviews of EventSourcing.NetCore. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-16.

blog-articles

Posts with mentions or reviews of blog-articles. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-11-30.
  • Event Sourcing Is Hard
    4 projects | news.ycombinator.com | 30 Nov 2021
    Thanks for answering! The bar is as I described. The events are the source of truth, only if you're using them in the write model as a basis for the state rehydration. If you're using materialised view, even though it's built based on events, then you outsourced the truth to other storage. If you're doing a pattern that you're just using events to build up the materialised view you use for the write model logic, that can lead to using Event Streaming tools like Kafka, Pulsar, etc. And, as you said, this is a dead-end. Read more on what I mean by getting the state in Event Sourcing system: https://event-driven.io/en/how_to_get_the_current_entity_sta...

    Of course, rebuilding a state from events each time you're processing command may sound dubious. Still, event stores (even those with relational DBs as backing storage) are optimised to read events quickly. Typically, reading event 100 events are not an issue for them. Also, for a typical LoB application. The temptation to use Snapshots is strong, but it should be treated as an optimisation when there is huge performance requirements. They may get out of sync with events. They may be stale, etc. I wrote about that in: https://www.eventstore.com/blog/snapshots-in-event-sourcing. The critical part is to keep streams short. That's again a difference between Event Streaming and Event Sourcing. In Kafka, you may not care how long your topic is, as it's just a pipe. Event stores are databases, so the more events you have, the worse. It impacts not only performance but also makes schema versioning harder (more on that: https://event-driven.io/en/how_to_do_event_versioning/).

    It's easy to fall into the trap, as using a streaming solution is tempting. They promise a lot, but eventually, you may end up having issues as you described.

    Still, that can be said on any technology. Event Sourcing has some dark parts. Also, it's essential to highlight them, but it's dangerous to present other tools and patterns issues related to ES.

    Event Sourcing by itself doesn't directly relate to eventual consistency, type of storage, messaging, etc. Those are implementation details and tradeoffs we're chosing. Each storage solution has it's patterns and anti-patterns. Relational databases have normalisation. Document databases are denormalised. Key-value stores have strategies for key definition. Event stores also have their specifics. The most important is (as I mentioned) to take into the account the temporal aspect of streams, so keeping them short. I agree that there is a huge gap missing in knowledge sharing. I'm working on the article recently about that aspect. Here's a draft: https://github.com/EventStore/blog-articles/blob/closing-the....

    I think that you highlighted well what can happen if you use the Event Streaming solution as a basis for the Event Sourcing solution. But unfortunately, the title and description state that it's about Event Sourcing, which is unfortunate, as it's highly misleading for people who are not aware of what Event Sourcing is and may suggest that it's much more complicated than it's in reality.

    See also my other comments below in the thread, where I commented also in more details on other parts.

What are some alternatives?

When comparing EventSourcing.NetCore and blog-articles you can also consider the following projects:

Akkatecture - a cqrs and event sourcing framework for dotnet core using akka.net

proposals - Temporal proposals

dotnet-ci-pipelines - dotnet ci cd pipelines for github, azure devops, gitlab, bitbucket, and etc.

Streamstone - Event store for Azure Table Storage

DDD-NoDuplicates - Some design approaches to enforcing a business rule requiring no duplicates. Domain driven design.

EventFlow - Async/await first CQRS+ES and DDD framework for .NET

example-modules - Example PrestaShop modules

m-r - Simple CQRS example

WizardWorldAPI - Source code for fan API for WizardWorld

PatientMangement - A simple example of how to build an event sourced application

postgresql-event-sourcing - A reference implementation of an event-sourced system that uses PostgreSQL as an event store built with Spring Boot. Fork the repository and use it as a template for your projects. Or clone the repository and run end-to-end tests to see how everything works together.