Size: a a a

Software Design/Architecture/Zen

2020 October 21

DE

Dmitry Eliseev in Software Design/Architecture/Zen
Максим Федоров
хочу уточнить, почему поздно?

Чтобы в контроллере мы могли создать событие о создании с нужным id, которое попадет в сагу и она с этим id отправит одну или несколько комманд?
Поздно для того, чтобы из контроллера сразу вернуть id
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Anton Lakotka
CQRS это не про бизнес или нет.
CQRS это больше про бизнес и DDD :)
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
Dmitry Eliseev
Поздно для того, чтобы из контроллера сразу вернуть id
Все же я думаю тут несколько др имелось в виду
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Максим Федоров
Все же я думаю тут несколько др имелось в виду
не именно это
источник

SP

Sergey Protko in Software Design/Architecture/Zen
мы снаружи не имеем доступа к результатам хэндлера, то есть отправив команду на обработку мы не должны делать "предположений" что оно прям вот сча сделается.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
хэндлеры не возвращают ничего
источник

SP

Sergey Protko in Software Design/Architecture/Zen
и это специально что бы максимально явно сказать "хотите результат - подпишитесь на событие"
источник

RS

Roman Shandur in Software Design/Architecture/Zen
Sergey Protko
ну смотри, если нет конкурентных запросов на изменение стэйта системы то и проблемы сделать update в базе нет. Для таких задач подходит любой подход даже уровня "а давайте мы перед базой просто postgrest поставим" - тут чем проще тем лучше. Достали поменяли сохранили.

Если же возникают гонки то гонки надо как-то разруливать. Ты положил товар в карзину и в это же время товар сняли с продажи. Что делать? Тут надо с бизнесом разбираться, делать разделение на операции и т.д. Можно конечно "по старинке локи выставить и транзакции фэйлить" но это может пагубно сказаться на масштабировании системы.

То есть CQRS нам даже не всегда нужен когда есть колаборация, а скорее когда вероятность конфликтов действий людей очень высокая.

Иначе мы просто оверинженерим потому что писать круды скучно
Спасибо)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
что бы вот во всех этих temporal coupling потом не запутаться
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
Sergey Protko
хэндлеры не возвращают ничего
про возврат понятно, я думал просто может нужно просто иметь ID снаружи… вдруг надо в контроллере просто событие создать и вернуть Id
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Максим Федоров
про возврат понятно, я думал просто может нужно просто иметь ID снаружи… вдруг надо в контроллере просто событие создать и вернуть Id
ивенты ты тоже не можешь кидать ибо операция возможно еще не завершилась - хэндлер (или с чем оно там работает) сообщение кинет как закончет
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
а команды просто должны получить Id (и др значения) какой создать
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Я не то командами называл)))

Вот у меня есть на каждый юзкейс класс (создать пользователя, привязать пользователя к задаче и т. п.)
Это вот как называется?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
Я не то командами называл)))

Вот у меня есть на каждый юзкейс класс (создать пользователя, привязать пользователя к задаче и т. п.)
Это вот как называется?
транзакционные скрипты)
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
Sergey Protko
ивенты ты тоже не можешь кидать ибо операция возможно еще не завершилась - хэндлер (или с чем оно там работает) сообщение кинет как закончет
ну а как тогда процесс-менеджер тут завязать?
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
я думал есть событие на создание и завелась целая фабрика, в т.ч. с созданием самого агрегата, но не единственная
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
фабрика — фигуральное выражение
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
или я как-то криво подумал
источник

RS

Roman Shandur in Software Design/Architecture/Zen
Сергей Предводителев
Я не то командами называл)))

Вот у меня есть на каждый юзкейс класс (создать пользователя, привязать пользователя к задаче и т. п.)
Это вот как называется?
CRUD в красивой обёртке)))
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
Сергей Предводителев
Я не то командами называл)))

Вот у меня есть на каждый юзкейс класс (создать пользователя, привязать пользователя к задаче и т. п.)
Это вот как называется?
команда = приказ, по сути ДТО и есть UseCase (или интерактор) в виде хэндлера
источник