В этой статье мы собираемся обсудить работу шаблонов CQRS и MediatR и пошаговую реализацию с использованием веб-API .NET Core 6.

Повестка дня

  • Введение шаблона CQRS
  • Когда использовать CQRS
  • МедиатР
  • Пошаговая реализация

Предпосылки

  • Визуальная студия 2022
  • SQL-сервер
  • .NET Core 6

Введение в шаблон CQRS

  • CQRS означает разделение ответственности за команды и запросы и используется для разделения чтения (запросов) и записи (команд).
  • При этом запросы выполняют операцию чтения, а команда выполняет операцию записи, например создание, обновление, удаление и возврат данных.

  • Как мы знаем, в нашем приложении мы в основном используем одну модель данных для чтения и записи данных, которая будет работать нормально и легко выполнять операции CRUD. Но когда приложение в этом случае становится огромным, наши запросы возвращают разные типы данных в виде объекта, поэтому становится трудно управлять разными объектами DTO. Кроме того, эта же модель используется для выполнения операции записи. В результате модель становится сложной.
  • Кроме того, когда мы используем одну и ту же модель для операций чтения и записи, безопасностью также трудно управлять, когда приложение большое и объект может предоставлять данные в неправильном контексте из-за рабочей нагрузки на одну и ту же модель.
  • CQRS помогает отделить операции и сделать приложение более масштабируемым и гибким в больших масштабах.

Когда использовать CQRS

  • Мы можем использовать разделение ответственности командных запросов, когда приложение огромно и обращается к одним и тем же данным параллельно. CQRS помогает уменьшить конфликты слияния при выполнении нескольких операций с данными.
  • В терминологии DDD, если модель данных домена сложна и требует выполнения многих операций с приоритетом, таких как проверки и выполнение некоторой бизнес-логики, в этом случае нам нужна согласованность, которую мы получим с помощью CQRS.

МедиатР

  • Шаблон MediatR помогает уменьшить прямую зависимость между несколькими объектами и сделать их совместными с помощью MediatR.
  • В .NET Core MediatR предоставляет классы, которые помогают эффективно взаимодействовать с несколькими объектами в слабосвязанной манере.

Пошаговое внедрение

Шаг 1

Создать новое приложение

Шаг 2

Настройте свое приложение

Шаг 3

Предоставьте дополнительную информацию

Шаг 4

Структура проекта

Шаг 5

Установите следующие пакеты NuGet

Шаг 6

Создайте класс Student Details внутри папки модели.

Шаг 7

Затем добавьте DbContextClass в папку Data.

Шаг 8

Создайте один студенческий репозиторий и связанный с ним класс.

IStudentRepository

Студенческий репозиторий

Шаг 9

После этого добавьте запросы на чтение

GetStudentListQuery

GetStudentByIdQuery

Шаг 10

Далее создайте разные команды

CreateStudentCommand

UpdateStudentCommand

УдалитьСтудентКомманд

Шаг 11

Теперь добавьте обработчики запросов и команд.

GetStudentListHandler

GetStudentByIdHandler

CreateStudentHandler

ОбновлениеСтудентХэндлер

УдалитьСтудентХэндлер

Шаг 12

Настройте строку подключения к базе данных в файле appsettings.json.

Шаг 13

Зарегистрируйте несколько сервисов внутри класса программы

Шаг 14

Затем выполните команды миграции и обновления базы данных.

добавить-миграция «начальный»

обновление базы данных

Шаг 15

После этого создайте Контроллер студентов и внедрите в него службу MediatR для отправки запроса и команды.

Шаг 16

Наконец, запустите свое приложение и получите доступ к различным конечным точкам, используя пользовательский интерфейс swagger.

URL-адрес GitHub

https://github.com/Jaydeep-007/CQRSAndMediatRDemo.git

Заключение

Здесь мы обсудили шаблоны проектирования CQRS и MediatR, их назначение и преимущества в крупномасштабных приложениях, а также пошаговую реализацию с использованием .NET Core Web API.