CategorySoftware Architecture

Event Sourcing in .NET Core – part 2: storing events

And here we are for the second part of the Event Sourcing series. Last time we introduced the main idea and some of its benefits. This time we’ll see how we can start storing events in our system. As usual, I have prepared a small demo, modeled around the banking example I depicted in part […]

Categories: .NET, ASP.NET, Design Patterns, Docker, Microservices, MongoDB, Programming, Software Architecture

Event Sourcing in .NET Core – part 1: a gentle introduction

Event sourcing, aka “the great myth”. I’ve been thinking about writing a series of articles about this for a while, and now it’s time to put my hands back on the keyboard. I thought that with all this bull**it pandemic at least I could have had more time to write on this blog but it […]

Categories: .NET, ASP.NET, Design Patterns, Programming, Software Architecture

Consuming message queues using .net core background workers – part 4: adding System.Threading.Channels

Apparently I was not done yet with this Series! Few days ago I got a comment on Part 3, asking how would I mix background workers with System.Threading.Channels . That comment first led me to write an introduction on the Channels library, which has been sitting on my ToDo list for too long. Then I […]

Categories: .NET, ASP.NET, Design Patterns, Microservices, Programming, RabbitMQ, Software Architecture

Improving microservices reliability – part 3: Outbox Pattern in action

And here we are for the third and last part of the Series! Last time we talked about the Outbox Pattern and it’s now time to see it in action. The main idea is to persist in the same transaction the Entity data plus the Messages that will be eventually sent to the potential subscribers. […]

Categories: .NET, ASP.NET, Design Patterns, EntityFramework, Microservices, Programming, Software Architecture

Improving microservices reliability – part 2: Outbox Pattern

Welcome back to the second part of the Series. Today we’ll talk about the Outbox Pattern. Just to recap, last time we discussed how the 2-Phase-Commit technique can help us with distributed transactions. However, it may lead to unwanted side effects and performance issues. So is there any other approach we could take? Personally I’m […]

Categories: Design Patterns, Microservices, Programming, RabbitMQ, Software Architecture

© 2020 Davide Guida

Theme by Anders NorenUp ↑