Build An Event Store In C# .Net For Cqrs And Event Sourcing
Published 10/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 8.09 GB | Duration: 7h 19m
Published 10/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 8.09 GB | Duration: 7h 19m
Build an Event Store in C#. NET for Event-Driven Architectures using CQRS, Event Sourcing and Domain-Driven Design
What you'll learn
Understand the importance of using business (domain) events as a source of truth in your solution.
Understand how to use and implement the ubiquitous language in your source code.
Understand how to build an event store, how it functions, and how to use it properly.
Understand how to separate a system between read and write functions to optimize flow and performance by using CQRS.
Understand how to use Domain-Driven Design (DDD) in your solution using aggregate roots.
Understand what projections are and how to program projections.
Understand how to publish domain events and failure events.
Understand what snapshots are and how to use them properly.
Understand what read-models are and how to implement them.
Requirements
It is not entirely required but it would be helpful to know how to program in C#. If you are a Java developer, you can easily convert the concepts or even the source code to Java.
Description
Real-time communication and feedback to your customers are more important then ever. Customers have become used to immediate feedback on the actions they take in your software. It is very hard in create, read, update, and delete (CRUD) based applications to provide this sort of responsiveness that your customers are demanding. Event-based solutions that are based on CQRS, Event Sourcing, and Domain-Driven Design (DDD) can offer deep insides in real-time to your customers and to your business. More importantly, you won't loose data in an event-sourced solution when compared to CRUD-based solutions because your solution will be able to provide the context on why changes happened and record changes into an immutable log, the event store.In this course, you will learn about the importance of using domain events as your source of truth instead of pieces of data that are incomplete in CRUD-based applications. You will be able to tell stories on what happened when and why. You will be able to answer future questions by your customers and business even though you may not have all the requirements at hand when you design and build your event-sourced solution.At the very heart of your solution will be the event store. The event store is the source of truth in your entire solution. We will be building an event store in C#. NET and utilizing AWS DynamoDB as the persistence mechanism. However, the provided C# source code can easily be converted to Java or other languages. For the actual persistence, you could also use MySQL, PostgreSQL, MongoDB, and others. The C# code is abstracted so that can you can re-use it for specific persistence implementations. The concepts and code can work for on-premise, cloud only, or hybrid models. For an example read model implementation, we will be creating a read model using MySQL in AWS.Once you understand the power of even sourcing, you won't go back.
Overview
Section 1: Introduction
Lecture 1 Introduction
Lecture 2 Course Structure
Lecture 3 Source Code in C#
Section 2: Event Sourcing
Lecture 4 What is Event Sourcing?
Lecture 5 The Business Insights of Event-Sourced Systems
Lecture 6 The Technical Advantages of Event-Sourced Systems
Lecture 7 Building your own Event Store vs. using a third party solution
Section 3: CQRS
Lecture 8 What is CQRS?
Lecture 9 Implementing a Command
Lecture 10 Implementing Command Handlers
Lecture 11 Queries
Section 4: Domain-Driven Design (DDD)
Lecture 12 Implementing Aggregate Roots
Section 5: Event Store
Lecture 13 High-Level Architecture
Lecture 14 What database should you use?
Lecture 15 Using AWS DynamoDB as an Event Store
Section 6: Implementing an Event Store
Lecture 16 Overview of the components we will build
Lecture 17 Data flow within the architecture and how the event store will operate
Lecture 18 Implementing DynamoDB Tables by Hand
Lecture 19 Implementing DynamoDB Tables with CloudFomration
Lecture 20 Creating a DynamoDB Event Store in C# and .NET Core
Lecture 21 How to manage concurrency violations
Lecture 22 Memory Event Store
Section 7: Snapshots
Lecture 23 What is a Snapshot
Lecture 24 Implementing a Snapshot
Section 8: Projections
Lecture 25 What is a Projection?
Lecture 26 Implementing a Projection
Section 9: Publishing and Consuming Domain Events
Lecture 27 Publishing and consuming domain events
Lecture 28 Implementing a consistent domain event publication process
Section 10: Read Models
Lecture 29 The importance of read models
Lecture 30 Implementing a read model in C# using MySQL on AWS
Section 11: Final Thoughts
Lecture 31 Final Thoughts
Developers and Architects who are curious about event-driven architectures by utilizing CQRS, Event Sourcing, and Domain-Driven Design (DDD).