Building an event sourced system in C#
If we only store the current state of our data, as we often do with CRUD-based systems, we’re losing information by default. For instance, there is no way of knowing how the data looked at a certain point in time. And when you build a new feature, you cannot re-run the system to find out what the result of history on that part of the system would have been.
This is exactly the type of problems the event sourcing pattern tries to solve. If we preserve all the events that led up to the current state, we can replay history and derive the current state from that, but we also open the door for more flexibility in our system.
During this workshop we will explore all the concepts that are associated with event sourcing. We will use C# to implement our own event sourced system over the course of the workshop, so we can see things in practice. Eventually, we will look at a couple of frameworks and libraries that can be useful when you start building your own event sourced system.
During this workshop, you will learn about:
- The event sourcing pattern
- Relation between event sourcing and DDD
- Commands, Events, Aggregates, etc.
- How to build this code in a test-friendly way
- Read projections and the CQRS pattern
- Performance-optimizations in the system
- Enabling feature development with history applied
To attend this workshop, you should be a developer with:
- Working knowledge of the C# programming language
- A basic knowledge of how to use a SQL Server database from code
You will spend a lot of time coding during this workshop. I will present concepts for the whole class, which you will then apply in code on your own, or as a group. This workshop will be very hands-on. If you prefer watching slide decks for most of the day, this workshop might not be for you.
- Your .NET IDE of choice (Visual Studio or Rider)
- .NET 6 SDK
- A working SQL server instance (LocalDB will do just fine)
- A working internet connection
Doubting if this workshop is for you?
Hannes is a developer, a coach and a father of 3.
In .NET development, he has always had a passion for performance, databases, distributed systems and large scale applications. But most of all, he likes playing devil’s advocate in technical discussions by drawing the ‘it depends’ card.
As a coach, he is enthousiastic about knowledge sharing, personal growth and building careers. All this while keeping in mind that the pace needs to be sustainable.
In his free time, when he’s not building LEGO® castles with his kids, he likes to spend time building guitars, playing chess or poker, tasting whisky and doing all round geeky stuff.
You can occasionally find him on an afterparty stage at PubConf or with Dylan Beattie & the Linebreakers.