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 until I stumbled upon MediatR created by Jimmy Bogard. It is incredibly simple and only has one dependency, CommonServiceLocator. The Github repo has a good set of docs and some examples with different dependency injection containers.
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.