Building a Custom Domain Events Dispatcher in .NETDomain events are a powerful way to decouple parts of your system. Instead of tightly coupling your logic, you can publish events and have other parts of your code subscribe to those events. This pattern is especially valuable in Domain-Driven Design...May 30, 2025 · 7 min readmilanjovanovic.hashnode.dev
CQRS Pattern the Way It Should've Been From the StartMediatR is going commercial. Jimmy Bogard recently announced that MediatR will adopt a commercial license model for companies above a certain size. For many teams, this is a trigger to re-evaluate their usage and possibly look for alternatives. And i...May 16, 2025 · 7 min readmilanjovanovic.hashnode.dev
From Anemic Models to Behavior-Driven Models: A Practical DDD Refactor in C#If you've ever worked with a legacy C# codebase, you know the pain of an anemic domain model. You have probably opened an OrderService (all similarities to production code are merely a coincidence) and thought "this file does everything." Pricing log...May 9, 2025 · 6 min readmilanjovanovic.hashnode.dev
Event-Driven Architecture in .NET with RabbitMQEvent-driven architecture (EDA) can make applications more flexible and reliable. Instead of one part of the system calling another directly, we let events flow through a message broker. In this quick guide, I'll show you how to set up a simple event...May 2, 2025 · 8 min readmilanjovanovic.hashnode.dev
Refactoring Overgrown Bounded Contexts in Modular MonolithsWhen you're building a modular monolith, it's easy to let bounded contexts grow too large over time. What started as a clean domain boundary slowly turns into a dumping ground for unrelated logic. Before you know it, you have a massive context respon...Apr 25, 2025 · 6 min readmilanjovanovic.hashnode.dev