Implementazione del modello CQRS e MediatR tramite l'API Web .NET Core 6
In questo articolo verrà illustrato il funzionamento dei modelli CQRS e MediatR e l'implementazione dettagliata tramite l'API Web .NET Core 6.
Ordine del giorno
- Introduzione del modello CQRS
- Quando usare CQRS
- MediatR
- Implementazione passo dopo passo
- Visual Studio 2022
- server SQL
- .NET Nucleo 6
- CQRS è l'acronimo di Command and Query Responsibility Segregation e utilizza per separare read (query) e write (comandi).
- In questo, le query eseguono operazioni di lettura e il comando esegue operazioni di scrittura come creare, aggiornare, eliminare e restituire dati.
- Come sappiamo, nella nostra applicazione utilizziamo principalmente un singolo modello di dati per leggere e scrivere dati, che funzionerà correttamente ed eseguirà facilmente operazioni CRUD. Ma, quando l'applicazione diventa vasta in quel caso, le nostre query restituiscono diversi tipi di dati come un oggetto in modo che diventi difficile da gestire con diversi oggetti DTO. Inoltre, lo stesso modello viene utilizzato per eseguire un'operazione di scrittura. Di conseguenza, il modello diventa complesso.
- Inoltre, quando utilizziamo lo stesso modello sia per le operazioni di lettura che per quelle di scrittura, la sicurezza è anche difficile da gestire quando l'applicazione è grande e l'entità potrebbe esporre i dati nel contesto sbagliato a causa del carico di lavoro sullo stesso modello.
- CQRS aiuta a disaccoppiare le operazioni e rende l'applicazione più scalabile e flessibile su larga scala.
- Possiamo utilizzare Command Query Responsibility Segregation quando l'applicazione è enorme e accedere agli stessi dati in parallelo. CQRS aiuta a ridurre i conflitti di unione durante l'esecuzione di più operazioni con i dati.
- Nella terminologia DDD, se il modello di dati del dominio è complesso e deve eseguire molte operazioni prioritarie come le convalide e l'esecuzione di alcune logiche di business, in tal caso, abbiamo bisogno della coerenza che otterremo utilizzando CQRS.
- Il modello MediatR aiuta a ridurre la dipendenza diretta tra più oggetti e li rende collaborativi tramite MediatR.
- In .NET Core MediatR fornisce classi che aiutano a comunicare con più oggetti in modo efficiente in modo debolmente accoppiato.
Passo 1
Crea una nuova applicazione
Passo 2
Configura la tua applicazione
Passaggio 3
Fornire informazioni aggiuntive
Passaggio 4
Struttura del progetto
Passaggio 5
Installa i seguenti pacchetti NuGet
Passaggio 6
Crea una classe Student Details all'interno della cartella del modello
Passaggio 7
Successivamente, aggiungi DbContextClass all'interno della cartella Data
Passaggio 8
Crea un archivio studenti e una classe correlata a quello.
IStudentRepository
StudentRepository
Passaggio 9
Successivamente, aggiungi le query di lettura
GetStudentListQuery
GetStudentByIdQuery
Passo 10
Quindi, crea diversi comandi
Comando CreaStudente
Comando AggiornaStudente
EliminaStudenteComando
Passaggio 11
Ora aggiungi gestori di query e comandi
GetStudentListHandler
GetStudentByIdHandler
CreateStudentHandler
UpdateStudentHandler
DeleteStudentHandler
Passaggio 12
Configurare la stringa di connessione al database all'interno del file appsettings.json
Passo 13
Registra alcuni servizi all'interno della classe del programma
Passaggio 14
Successivamente, esegui la migrazione del database e aggiorna i comandi
add-migrazione "iniziale"
aggiornare il database
Passaggio 15
Successivamente, crea Students Controller e inserisci il servizio MediatR al suo interno per inviare query e comandi
Passaggio 16
Infine, esegui la tua applicazione e accedi a diversi endpoint utilizzando l'interfaccia utente spavalda.
URL GitHub
https://github.com/Jaydeep-007/CQRSAndMediatRDemo.git
Conclusione
Qui sono stati discussi i modelli di progettazione CQRS e MediatR e il relativo scopo e vantaggi nelle applicazioni su larga scala e nell'implementazione dettagliata tramite l'API Web .NET Core.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































