Search  
RU EN

MediatR with .NET 6.0

Author:
HungryWolf
Source:
Views:
5065
MediatR with .NET 6.0 favorites 0

What is MediatR? Why do we need it? And How to use it?

Mediator Pattern - The mediator pattern ensures that objects do not interact directly instead of through a mediator. It reduces coupling between objects which makes it easy to maintain the code. Mediator pattern unified the service interfaces around a common design, one request in, one response out.

MediatR is a simple, unambitious mediator implementation in .NET.

Let’s now dive deeper into the working of a simple web API with MediatR. Complete code for the same can be found here.

1. Create a new web API project.

OpenAPI support makes it easy to test the API.

2. Create a folder with these three classes.


Solution Hierarchy

2.1 ApiRequestModel: This class represents a request for API.


ApiRequestModel

IRequest<> It represents a request with a response.

2.2 ApiResponseModel : This class represents a response of API.


ApiResponseModel

2.3 ApiHandler: And this class keeps the logical part.


ApiResponseModel

IRequesthandler<> binds request and response with handler class. The logic of API is kept in the Handle method.

3. Now let’s check the controller. I wrote a base controller that would be inherited by other controllers.


ApiControllerBase

ISender is responsible for communication between different mediator-linked objects. It sends a request through a mediator pipeline to be handled by a single handler.

In this code, HomeController is inheriting the base controller. ApiController communicates with ApiHandler based on ApiRequestModel and ApiResponseModel pair.


ApiController

You can test this API using swagger (OpenAPI).

From the above example, you can see a separation of request, response, logic, and communication using MediatR. And if you want to move to CQRS (Command and Query Responsibility Segregation) pattern, the mediator makes the transition seamless.

Similar
Oct 24, 2022
Author: Henrique Siebert Domareski
Singleton and Static classes can only have one instance available in memory, and both classes can be used to maintain the global state of an application, however, there are many differences between them. In this article, I explain what their...
Jan 1, 2023
Author: Matt Eland
New and old ways of creating your own exceptions in dotnet with C# 11 and .NET 7. Let’s talk about building custom exceptions in C# code and why you’d want to do that. We’ll cover the traditional way as well...
Dec 23, 2024
Author: Kenji Elzerman
I have written a few tutorials on Entity Framework already, but I’ve always used SQL Server. The reason is simple: It’s easy to use. Then I got a few questions and requests on how to use SQLite with entity framework...
Jan 7, 2024
Author: Sebastian Stupak
Few days ago I stopped myself while writing code. I wrote my LINQ filtering wrong. items.Where(x => x > 0).Any(); (Obviously, it’s a pseudo code) I realized my mistake immediately, changed the code, and went on with my day. Then...
Send message
Type
Email
Your name
*Message