В этой статье мы собираемся обсудить работу шаблонов 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.