This article is the continuation of the first one already published about “CQRS pattern with C# (Part 1)”, therefore, we will not go to explain CQRS proposal again. In this second part we are going to speak about MediatR Library and how it can implement read and write operations defined by CQRS.
By the end of this article we should understand how to use the MediateR Library to achieve the following goals:
1- Implement Commands and Queries operations.
2- Implement Notifications.
3- Use Dependency Injection to create a new instance of MediatR.
4- Use MediatR with Console application and Web API application.
According to MediatR GitHub repository:
MediatR is a low-ambition library trying to solve a simple problem — decoupling the in-process sending of messages from handling messages. Cross-platform, supporting .NET Framework 4.6.1 and netstandard2.0.
In simple word, MediatR Library allows to dispatch messages to the appropriate handlers. It manages two kinds of messages:
- Requests/Responses, are commands and queries operations. Each operation has its own handler and may or not return a value.
- Notifications, are events raised due to the system modifications. Each event can have several handlers.
The following schema gives an overview of the MediatR Library purpose.
Install MediatR Library
To install the package via Nuget type the command:
Install-Package MediatR or use .NET Core command line like this:
dotnet add package MediatR
Real World Application
To represent a request (queries and commands) with response, MediatR Library uses a marker interface named
IRequest<out TResponse>. For example: