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...7 min read·milanjovanovic.hashnode.devMay 30, 2025
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...7 min read·milanjovanovic.hashnode.devMay 16, 2025
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...6 min read·milanjovanovic.hashnode.devMay 9, 2025
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...8 min read·milanjovanovic.hashnode.devMay 2, 2025
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...6 min read·milanjovanovic.hashnode.devApr 25, 2025