Этот курс поможет вам понять, как подход CQRS способен радикально упростить, ускорить и улучшить архитектуру Enterprise‑приложений. Мы рассмотрим, как разделение системы на стек команд и стек запросов позволяет одновременно повысить производительность, улучшить читаемость кода и сделать архитектуру более гибкой и масштабируемой.
Что такое CQRS и почему это важно
CQRS (Command Query Responsibility Segregation) предполагает раздельную обработку операций изменения и чтения данных. Команды работают поверх нормализованной реляционной базы и ORM, а запросы — поверх денормализованного хранилища, оптимизированного под быстрые чтения. Благодаря этому ускоряется большая часть backend‑операций, а архитектура приобретает чёткую структурность.
Почему нужен ещё один курс о CQRS
Несмотря на то, что CQRS известен давно, исследование InfoQ показывает: он используется заметно реже, чем микросервисы или DDD. На практике производительность часто пытаются улучшать микросервисами, хотя CQRS в ряде случаев даёт лучшие результаты при меньшей сложности.
В этом курсе вы увидите восемь ключевых архитектурных преимуществ вертикальных CQRS‑хендлеров по сравнению с горизонтальными сервисами. Мы также подробно разберём и развеем распространённые опасения разработчиков, рассматривающих переход на CQRS.
О чём курс
Курс начинается с уточнения терминологии: CQS, CQRS, Vertical Slices, Feature‑by‑folder. Далее мы перейдём к практическому разбору реализации функциональности на примере демо‑проекта интернет‑магазина, сравнивая горизонтальный слоистый подход и вертикальный CQRS.
Вы изучите на практике
как и когда можно возвращать значения из команд;
разницу между реализацией юзкейса в ApplicationService и в CQRS‑хендлере;
нужно ли использовать хендлеры для разделения стеков чтения и записи;
стоит ли делать команды/запросы DTO или отдельными классами;
как массово регистрировать CQRS‑хендлеры в DI‑контейнере;
как переиспользовать код между юзкейсами и останутся ли ApplicationServices в системе;
как мигрировать со слоистой архитектуры на хендлеры: процесс, шаги, инструменты (включая рефакторинги ReSharper);
реализацию CRUD‑сценариев в сервисах и хендлерах и сравнение подходов;
вызов одного юзкейса из другого — отличие явности между сервисами и хендлерами;
реализацию cross‑cutting concerns для сервисов и хендлеров;
как отличаются юнит‑тесты для сервисов и хендлеров;
когда стоит возвращать Result из хендлеров и как это влияет на архитектуру и performance.
CQRS‑движки и архитектура приложений
Мы разберём отличия между CQRS‑движком и архитектурой приложения, построенного на нём. Вы поймёте, в каких ситуациях команды могут возвращать значения, а где это недопустимо.
В завершение мы проведём обзор популярных CQRS‑движков, сравним их возможности и обсудим, когда имеет смысл использовать готовый инструмент, а когда выгоднее написать собственный.
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум
Ограничение времени просмотра
Вы можете просматривать пробный урок только 10 минут. Получите полный доступ, чтобы смотреть без ограничений.
Udemy — одна из самых масштабных платформ в мире, предлагающая обучающий контент от авторов и экспертов со всего света. Сервис объединяет миллионы учеников и десятки тысяч преподавателей, создающих курсы на самые разнообразные темы.Основные возможности платформыШирокий выбор тем: от программирования и дизайна до маркетинга, психологии и личной эффективности.Глобальное сообщество авторов: материалы создаются специалистами из разных стран.Удобный ф