CQRS + MediatR: зачем я вообще полез в это на практике? 🤔

Когда писал backend-систему управления проектами на производственной практике, решил попробовать CQRS и MediatR.

Честно говоря, изначально причина была довольно простая - мне стало интересно. Знакомый после стажировки рассказывал про Vertical Slice Architecture, MediatR и то, как удобно работать, когда логика не размазана по сервисам и слоям. Захотелось самому разобраться, что это такое и зачем нужно.

Проблема была в том, что я вообще не понимал, как правильно это использовать.

Особенно когда начал работать с агрегатом Project и собственной FSM. Для меня это был настоящий дремучий лес: много состояний, переходов и бизнес-правил. Поэтому двигался постепенно - писал код, читал статьи, переделывал решения и пытался понять, почему многие используют этот подход.

В итоге получилось примерно так: - 22 Commands - 8 Queries - Отдельные Handler’ы для каждой операции

Самое приятное ощущение было при работе с контроллерами.

Вместо контроллеров на сотни строк получались небольшие методы, которые просто отправляют команду через MediatR: await _mediator.Send(command);

А вся логика лежит рядом с предметной областью. Например, всё, что связано с проектами, находится в одном месте: 📂 Features/Projects

Когда работаешь с FSM и сложными бизнес-правилами, это оказалось намного удобнее, чем искать код по разным сервисам и слоям.

Но были и сложности. Больше всего меня удивило, что нет какого-то единственного правильного способа организовать структуру проекта. Каждый показывает свою версию CQRS, свою структуру папок и свои правила.

С одной стороны — гибкость.

С другой — новичку сложно понять, что действительно важно, а что просто предпочтения конкретной команды.

Если бы сегодня начинал этот проект заново, сначала бы задал себе вопрос: “А точно ли здесь нужен CQRS?” Для такого проекта можно было обойтись и без него.

Но ни разу не пожалел, что попробовал этот подход. Благодаря практике стало намного понятнее, какие задачи он решает и почему его используют в реальных проектах.

Сейчас хочется глубже разобраться в теме, посмотреть доклады и почитать больше материалов, потому что после первого знакомства вопросов стало только больше 🙂

А у вас был опыт с CQRS и MediatR? В какой момент вы поняли, что их действительно стоит использовать, а когда это уже лишнее усложнение?

#dotnet #csharp #backend #cqrs #mediatr

CQRS + MediatR: зачем я вообще полез в это на практике? 🤔 | Сетка — социальная сеть от hh.ru