
Mediatr C# (Comment ça fonctionne pour les développeurs)
MediatR est une bibliothèque .NET populaire qui implémente le modèle médiateur, permettant aux objets de communiquer les uns avec les autres à travers un médiateur, plutôt que directement. Cette approche est particulièrement utile dans les applications où il est souhaitable de maintenir un faible niveau de couplage entre les composants. Dans cet article, nous allons examiner en détail MediatR dans le contexte du développement C#, en fournissant des exemples pratiques et des conseils sur la façon de l'intégrer dans vos projets d'applications web. Nous explorerons également la bibliothèque IronPDF pour les fonctionnalités PDF dans les applications .NET pour l'intégration des fonctionnalités PDF dans les projets ASP.NET Core.
Introduction au modèle médiateur et à MediatR

Le modèle médiateur est un modèle de conception logicielle qui facilite l'interaction entre les objets d'une manière qui réduit les dépendances directes entre eux, favorisant un couplage lâche. MediatR fournit une implémentation de médiateur sans prétention, focalisée sur la simplicité et l'efficacité en facilitant la communication entre objets.
Au cœur de la bibliothèque MediatR se trouve le concept de requêtes et de multiples gestionnaires. Au point de requête, un objet encapsule les détails de l'opération ou de l'action, en attente de traitement par le mécanisme MediatR. Chaque requête est traitée par un gestionnaire ou une méthode de gestion correspondante, qui contient la logique métier pour exécuter la requête. Cette structure est particulièrement utile pour implémenter le modèle de séparation des responsabilités entre commande et requête (CQRS), où la séparation des opérations de lecture et d'écriture peut conduire à des architectures logicielles plus maintenables et évolutives.
Installer MediatR dans un projet .NET Core en utilisant la console de gestion des packages
Pour commencer à utiliser MediatR dans un projet ASP.NET Core, vous devez d'abord installer le package MediatR. Cela peut être effectué via la console de gestion des packages dans Visual Studio avec la commande suivante :

Après avoir installé le package, il est nécessaire d'ajouter MediatR au conteneur d'injection de dépendances ASP.NET Core. Cela se fait généralement dans le fichier Program.cs ou Startup.cs de votre projet d'application web, en fonction de la version d'ASP.NET Core que vous utilisez. Voici comment vous pouvez le faire dans un programme avec une couche de présentation API minimale.
// Initialize a new web application
var builder = WebApplication.CreateBuilder(args);
// Add MediatR to the service container
builder.Services.AddMediatR(typeof(Program).Assembly);
// Build the web application
var app = builder.Build();' Initialize a new web application
Dim builder = WebApplication.CreateBuilder(args)
' Add MediatR to the service container
builder.Services.AddMediatR(GetType(Program).Assembly)
' Build the web application
Dim app = builder.Build()Dans la classe de programme, var builder = WebApplication.CreateBuilder(args); initialise l'application web, préparant le terrain pour l'intégration de MediatR.
Créer votre première requête et gestionnaire MediatR
Les requêtes MediatR sont de simples classes qui représentent les données nécessaires à l'exécution d'une opération spécifique. Voici un exemple de classe de requête qui représente une commande pour créer un nouvel utilisateur.
public class CreateUserCommand : IRequest<int>
{
public string Name { get; set; }
public string Email { get; set; }
public int Id { get; set; }
}Public Class CreateUserCommand
Implements IRequest(Of Integer)
Public Property Name() As String
Public Property Email() As String
Public Property Id() As Integer
End ClassDans cet exemple, la classe CreateUserCommand implémente l'interface IRequest<int>, indiquant que cette requête attend une réponse entière, qui pourrait représenter l'ID de l'utilisateur créé.
Ensuite, vous devez créer un gestionnaire pour cette demande. Dans chaque gestionnaire, la méthode Handle est l'endroit où la logique de la demande est exécutée :
public class CreateUserHandler : IRequestHandler<CreateUserCommand, int>
{
public async Task<int> Handle(CreateUserCommand command, CancellationToken token)
{
// Implement logic to create a user here
// For this example, let's pretend we create a user and return the ID
return await Task.FromResult(1); // Assume the user's ID is 1
}
}Public Class CreateUserHandler
Implements IRequestHandler(Of CreateUserCommand, Integer)
Public Async Function Handle(ByVal command As CreateUserCommand, ByVal token As CancellationToken) As Task(Of Integer)
' Implement logic to create a user here
' For this example, let's pretend we create a user and return the ID
Return Await Task.FromResult(1) ' Assume the user's ID is 1
End Function
End ClassUtiliser MediatR dans votre application
En suivant le même processus utilisé pour configurer MediatR, vous l'intégrez dans le flux de travail de votre application. Cela se fait généralement via un contrôleur ou un endpoint dans une application ASP.NET Core. Voici un exemple utilisant un contrôleur API :
[ApiController]
[Route("[controller]")]
public class UsersController : ControllerBase
{
private readonly IMediator _mediator;
public UsersController(IMediator mediator)
{
_mediator = mediator;
}
[HttpPost]
public async Task<ActionResult<int>> Create(CreateUserCommand command)
{
var userId = await _mediator.Send(command);
return CreatedAtRoute("GetUser", new { id = userId }, command);
}
}<ApiController>
<Route("[controller]")>
Public Class UsersController
Inherits ControllerBase
Private ReadOnly _mediator As IMediator
Public Sub New(ByVal mediator As IMediator)
_mediator = mediator
End Sub
<HttpPost>
Public Async Function Create(ByVal command As CreateUserCommand) As Task(Of ActionResult(Of Integer))
Dim userId = Await _mediator.Send(command)
Return CreatedAtRoute("GetUser", New With {Key .id = userId}, command)
End Function
End ClassDans ce contrôleur, la méthode d'action Create envoie la CreateUserCommand à MediatR en appelant _mediator.Send(command). MediatR trouve ensuite le gestionnaire approprié pour cette commande et l'exécute. Le résultat est renvoyé et utilisé pour générer une réponse dans le même processus.
Au-delà des requêtes de base : notifications et comportements
MediatR prend également en charge les notifications et les comportements. Les notifications sont des messages auxquels plusieurs gestionnaires peuvent s'abonner et traiter, permettant une approche plus orientée événements au sein de votre application. Les comportements, d'autre part, s'apparentent à des middlewares pour vos requêtes MediatR, vous permettant d'implémenter des préoccupations transversales telles que la journalisation, la validation, ou la gestion des transactions.
Présentation de la Bibliothèque IronPDF

IronPDF est une bibliothèque C# conçue pour les développeurs .NET qui ont besoin d'un moyen simple de créer, modifier et travailler avec des fichiers PDF dans leurs applications sans préoccupations d'écriture. Les développeurs peuvent générer des PDFs sans se plonger dans des APIs complexes en convertissant simplement des pages web ou du code HTML directement en format PDF. IronPDF ne se limite pas seulement à la création de PDFs ; il offre également des fonctionnalités pour modifier les PDFs, telles que l'ajout de texte, d'images et de pages, ou même remplir et éditer des formulaires dans des documents PDF. Les développeurs peuvent travailler de manière exhaustive avec les PDFs, y compris des tâches comme la fusion, la division et la sécurisation des fichiers PDF avec des mots de passe et des autorisations.
IronPDF se spécialise dans la conversion HTML en PDF en préservant avec précision les mises en page et styles originaux. Cela le rend idéal pour générer des PDFs à partir de contenu web comme des rapports, des factures et de la documentation. Il prend en charge la conversion de fichiers HTML, d'URLs et même de chaînes HTML brutes en fichiers PDF.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End ClassExemple de Code
Dans cet exemple, supposons que la requête MediatR fait référence à une certaine forme de contenu ou de métadonnées média que nous voulons inclure dans notre PDF. Puisque MediatR n'est pas directement lié à la fonctionnalité d'IronPDF, nous aborderons cela en créant un document PDF à partir d'un contenu HTML incluant des informations ou références médias comme un excellent point de départ.
using IronPdf;
public class PdfGenerator
{
public void CreatePdfWithMediaInfo(string htmlContent)
{
// Insert your License Key here if required
License.LicenseKey = "License-Key";
// Initialize the HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Create an HTML template with media information
string htmlTemplate = $@"
<html>
<head>
<title>Media Information</title>
</head>
<body>
<h1>Media Details</h1>
<!-- Insert your media information here -->
{htmlContent}
</body>
</html>";
// Convert the HTML string to a PDF document
var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate);
pdfDocument.SaveAs("MediaInformation.pdf");
}
}
class Program
{
static void Main(string[] args)
{
// Example HTML content with MediatR information
string htmlContent = @"
<div>
<h2>MediatR Information</h2>
<p>MediatR is a media tracking system...</p>
</div>";
// Create an instance of PdfGenerator
PdfGenerator pdfGenerator = new PdfGenerator();
// Call the CreatePdfWithMediaInfo method to generate the PDF
pdfGenerator.CreatePdfWithMediaInfo(htmlContent);
Console.WriteLine("PDF generated successfully.");
}
}Imports IronPdf
Public Class PdfGenerator
Public Sub CreatePdfWithMediaInfo(ByVal htmlContent As String)
' Insert your License Key here if required
License.LicenseKey = "License-Key"
' Initialize the HtmlToPdf renderer
Dim renderer = New ChromePdfRenderer()
' Create an HTML template with media information
Dim htmlTemplate As String = $"
<html>
<head>
<title>Media Information</title>
</head>
<body>
<h1>Media Details</h1>
<!-- Insert your media information here -->
{htmlContent}
</body>
</html>"
' Convert the HTML string to a PDF document
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate)
pdfDocument.SaveAs("MediaInformation.pdf")
End Sub
End Class
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Example HTML content with MediatR information
Dim htmlContent As String = "
<div>
<h2>MediatR Information</h2>
<p>MediatR is a media tracking system...</p>
</div>"
' Create an instance of PdfGenerator
Dim pdfGenerator As New PdfGenerator()
' Call the CreatePdfWithMediaInfo method to generate the PDF
pdfGenerator.CreatePdfWithMediaInfo(htmlContent)
Console.WriteLine("PDF generated successfully.")
End Sub
End ClassDans cet extrait de code, htmlContent est une variable qui devrait contenir vos informations médias au format HTML. Cela pourrait inclure du texte, des images, des liens vers des vidéos ou tout autre contenu compatible HTML. IronPDF convertira ce contenu HTML en un document PDF, en préservant la mise en page et le formatage spécifiés dans le HTML.

Conclusion
En suivant les étapes décrites dans cet article, vous devriez maintenant avoir une base solide pour incorporer MediatR dans vos projets, en démarrant avec la gestion de commandes et de requêtes de base pour tirer parti des fonctionnalités plus avancées comme les notifications et les comportements. À mesure que votre application grandit et évolue, MediatR offre des outils et des modèles qui peuvent aider à garder votre code propre, maintenable et évolutif.
En conclusion, il mérite d'être noté qu'explorer et intégrer différentes bibliothèques et outils, tels qu'IronPDF, peut encore améliorer vos projets .NET. IronPDF propose un essai gratuit des fonctionnalités avancées de PDF. Pour les projets nécessitant des fonctionnalités PDF avancées, les licences IronPDF commencent à partir de $999, offrant une solution robuste pour les développeurs .NET cherchant à étendre les fonctionnalités de leur application.

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.
Articles connexes


