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

How to implement Producer/Consumer with System.Threading.Channels

What’s this “Producer/Consumer” thing? It’s around us, everywhere. Every time you see some kind of workflow with multiple serial steps, that’s an example. A production line in a car factory, a fast-food kitchen, even the postal service. So why do we care about it? Well that’s easy: in almost every piece of software we write […]

Categories: .NET, Design Patterns, Programming

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 ↑