CQRS- und MediatR-Musterimplementierung mithilfe der .NET Core 6-Web-API
In diesem Artikel besprechen wir die Funktionsweise von CQRS- und MediatR-Mustern und die schrittweise Implementierung mithilfe der .NET Core 6-Web-API.
Agenda
- Einführung des CQRS-Musters
- Wann sollte CQRS verwendet werden?
- MediatR
- Schrittweise Umsetzung
- Visual Studio 2022
- SQL Server
- .NET Core 6
- CQRS steht für Command and Query Responsibility Segregation und verwendet, um Lese- (Abfragen) und Schreib- (Befehle) zu trennen.
- Dabei führen Abfragen Lesevorgänge durch und Befehle führen Schreibvorgänge wie das Erstellen, Aktualisieren, Löschen und Zurückgeben von Daten aus.
- Wie wir wissen, verwenden wir in unserer Anwendung meistens ein einzelnes Datenmodell zum Lesen und Schreiben von Daten, das gut funktioniert und CRUD-Operationen problemlos durchführt. Wenn die Anwendung in diesem Fall jedoch sehr umfangreich wird, geben unsere Abfragen unterschiedliche Datentypen als Objekt zurück, sodass die Verwaltung mit unterschiedlichen DTO-Objekten schwierig wird. Außerdem wird dasselbe Modell verwendet, um eine Schreiboperation durchzuführen. Dadurch wird das Modell komplex.
- Wenn wir dasselbe Modell sowohl für Lese- als auch für Schreibvorgänge verwenden, ist die Sicherheit auch schwer zu verwalten, wenn die Anwendung groß ist und die Entität aufgrund der Arbeitslast auf demselben Modell möglicherweise Daten im falschen Kontext verfügbar macht.
- CQRS hilft, den Betrieb zu entkoppeln und die Anwendung im großen Maßstab skalierbarer und flexibler zu machen.
- Wir können Command Query Responsibility Segregation verwenden, wenn die Anwendung riesig ist und parallel auf dieselben Daten zugreifen. CQRS trägt dazu bei, Zusammenführungskonflikte zu reduzieren, während mehrere Operationen mit Daten durchgeführt werden.
- Wenn das Domänendatenmodell in der DDD-Terminologie komplex ist und viele Vorgänge mit Priorität ausführen muss, wie z.
- Das MediatR-Muster hilft, die direkte Abhängigkeit zwischen mehreren Objekten zu reduzieren und sie durch MediatR kollaborativ zu machen.
- In .NET Core stellt MediatR Klassen bereit, die bei der effizienten Kommunikation mit mehreren Objekten auf lose gekoppelte Weise helfen.
Schritt 1
Erstellen Sie eine neue Anwendung
Schritt 2
Konfigurieren Sie Ihre Anwendung
Schritt 3
Geben Sie zusätzliche Informationen an
Schritt 4
Projektstruktur
Schritt 5
Installieren Sie die folgenden NuGet-Pakete
Schritt 6
Erstellen Sie im Modellordner eine Klasse „Schülerdetails“.
Schritt 7
Fügen Sie als Nächstes DbContextClass im Ordner Data hinzu
Schritt 8
Erstellen Sie ein Schüler-Repository und eine damit verbundene Klasse.
IStudentRepository
StudentRepositorium
Schritt 9
Fügen Sie danach Leseabfragen hinzu
GetStudentListQuery
GetStudentByIdQuery
Schritt 10
Erstellen Sie als Nächstes verschiedene Befehle
CreateStudentCommand
UpdateStudentCommand
DeleteStudentCommand
Schritt 11
Fügen Sie nun Abfrage- und Befehlshandler hinzu
GetStudentListHandler
GetStudentByIdHandler
CreateStudentHandler
UpdateStudentHandler
DeleteStudentHandler
Schritt 12
Konfigurieren Sie die Datenbankverbindungszeichenfolge in der Datei appsettings.json
Schritt 13
Registrieren Sie einige Dienste innerhalb der Programmklasse
Schritt 14
Führen Sie als Nächstes Datenbankmigrations- und Aktualisierungsbefehle aus
add-migration „initial“
Datenbank auf den neusten Stand bringen
Schritt 15
Erstellen Sie danach den Students Controller und fügen Sie den MediatR-Dienst darin ein, um Abfragen und Befehle zu senden
Schritt 16
Führen Sie schließlich Ihre Anwendung aus und greifen Sie über die Swagger-Benutzeroberfläche auf verschiedene Endpunkte zu.
GitHub-URL
https://github.com/Jaydeep-007/CQRSAndMediatRDemo.git
Fazit
Hier haben wir die CQRS- und MediatR-Entwurfsmuster sowie deren Zweck und Vorteile in umfangreichen Anwendungen und die schrittweise Implementierung mithilfe der .NET Core-Web-API besprochen.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































