Size: a a a

Software Design/Architecture/Zen

2021 May 31

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
правда это те же яйца, только в профиль)
источник

П

Павел in Software Design/Architecture/Zen
Типо веб вью?
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
или электрон, или что-то типа этого
источник

П

Павел in Software Design/Architecture/Zen
Все работает круто
источник

ST

Serguei Tarassov in Software Design/Architecture/Zen
"Who watch the watchmen?" Понедельник неплохо начинать, задавшись вопросом: "Кто/что обеспечивает целостность самих агрегатов?"
источник

Kd

Konstantin dmz9 in Software Design/Architecture/Zen
программист?
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Пользователь присылает сообщение в чат.
Сообщение должно быть определённого формата и если она не проходит валидацию, то удалить его (удаляет бот).

Валидировать и удалять в декораторе комманд хендлера? (validator command handler decorator)

Или же логика такая :

Создать агрегат сообщения, но эвент будет не прошёл валидацию, запушить в аутбокс

А потом нотификацией сделать удаление
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Или же можно выкидывать эвенты в аутбокс не относящиеся к домену?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
отдельный агрегат сам гарантирует свою консистентность. Грубо говоря это просто стэйт машина которая "не может перейти в невалидный стэйт". Что бы эти гарантии работали и нужны все эти ограничения мол доступ строко эксклюзивный (локи, оптимистик стратегии там где конфликты маловероятны), агрегаты не могут пересекаться (иначе изменение стэйта одного агрегата влияет на стэйт другого и мы тут уже не можем ничего гарантировать) и т.д. Потому агрегат это партиция данных для операции.

В целом гарантировать консистентность отдельных агрегатов не является проблемой и легко достигается в том "как гарантировать консистентность стэйта всей системы". Вот за этим надо как-то следить. Вот тут появляются всякие eventual consistency. Вот тут чаще всего сложности и вопрос "а кто за этим следит". Тут возникают все эти сложности с temporal coupling.
источник

ST

Serguei Tarassov in Software Design/Architecture/Zen
Ну вот есть агрегат "книга" и есть две книги. Кто гарантирует что у них ISBN не совпадут?
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Аггрегат уникальности ISBN
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
А агрегат книга очень плохой аггрегат
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
ХОтябы потому что не понятно а что он вообще гарантирует что защищает какие инварианты блюдёт
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
процесс добавления/изменения гарантирует, ЕСЛИ НАДО по логике иметь эту гарантию
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Добрый вечер!

Когда ID - VO.
В репозиториях как лучше делать метод get()?

1) public function get(ClientId $id): ?Client;
2) public function get(string $id): ?Client;
3) public function get(string|ClientId $id): ?Client;
4) public function get(string|Stringable $id): ?Client;
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
в доменной части ходят только VO, из/в стрингу оно конвертируется на границах
источник

SP

Sergey Protko in Software Design/Architecture/Zen
1-ый вариант.
источник

SF

Segmentation Fault in Software Design/Architecture/Zen
1
источник

V

Viktor in Software Design/Architecture/Zen
1 и я бы все-таки назвал метод find
источник

AZ

Artem Zakirullin in Software Design/Architecture/Zen
Get обычно non-nullable ответ подразумевает (?Client)
источник