Using Mediator Design Patterns for CMS development
Why I think using Mediatr makes sense
After being recommended Mediatr a while back I have been finding more and more use cases for it. the most recent has been for CMS development where the CMS supports 'dynamic areas' such as Content Areas in Episerver (Optimizely), and multi reference fields in Contentful. These has always been difficult as you don't know the type of the child components, and you often find yourself using switch statements and casting or awkward reflection code that can quickly become unmanageable, and a lot of the time I have found a lot of developers put all this code in the controller(s).
My approach is to always have nice 'slim' controller, and Mediatr enables this by extracting the page logic into page
IRequestHandler<>s which the either uses Automapper or Microsoft Dependency injection to create an
IRequest<> for each block on the page (including those in 'dynamic areas'). This means that the page
IRequestHandler<> are also pretty light, and the logic for each component has it's own
IRequestHandler<> where the logic for each block is kept, giving a very high level of separation.
Andy Blyth is a technical architect/senior C# developer, studies martial arts and attempts to write blog posts (when he remembers). He currently works as an C# Principal Developer in Manchester, UK.