Skip to content

Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.

Learn more about Software Architecture & Design.
Join thousands of developers getting weekly updates to increase your understanding of software architecture and design concepts.


Follow @CodeOpinion

Mediator Pattern using MediatR and Unity

In a couple previous posts I’ve discussed using Query Objects instead of Repositories and the Mediator pattern.  I find creating query objects being used with the command pattern much cleaner than polluting repositories with a ton of query methods. The concept is nothing new as many people already use the command pattern in the context of executing commands/behavior following CQRS.   However, there is nothing wrong with using the same patterns for the query side. I’ve been using my own home grown solution of the mediator pattern in a few different projects but had nothing really formalized.  I was thinking about creating a simple library… Read More »Mediator Pattern using MediatR and Unity

Domain Driven Design: “What” not “How”

Many years have past since Eric Evans release the blue book: Domain Driven Design.  A lot has changed over the years but I find the core ideas still hold very true. In some ways, I think some of the concepts outlined are even more prevalent now than they have ever been. Ubiquitous Language The Ubiquitous Language is a shared language developed by the team.  The team is everyone working on the project: developers, domain experts, QA, BA. Everyone on the team. The ubiquitous language isn’t developed by the domain expert(s) alone.  If you have more than one domain expert, they may struggle with… Read More »Domain Driven Design: “What” not “How”

Clean up your Domain Model with Event Sourcing

I recently had a discussion with a developer who was new to Domain Driven Design, CQRS and Event Sourcing.  They were using Greg Young’s Simple CQRS Example to create there own simple app as learning exercise. After taking a quick look at their aggregate root, one thing that immediately stood out to me was a class field that contained current state.  Why this is interesting is because this field was not in any invariant. When I first started reading and exploring Event Sourcing, this was a big “ah ha!” moment for me. The realization that only certain data within my domain model was really important. We… Read More »Clean up your Domain Model with Event Sourcing