169 похожих чатов

Не, видосик прикольный смотрю. Итак. Есть пара сервисов, допустим, пользователя

и пользовательских событий. Есть сервис менеджер которому надо отдать агрегат. Естественно есть пара репозиториев которые ходят куда-то за данными. Вопросик: как лучше строить агрегат из юзера и допустим 50 его последних действий с пагинацией? Я видел умные решения где этот агрегат собирают в контроллере, обычные решения где его собирают в сервисменеджере, хитрые решения где делают отдельный запрос в хранилище и оптимизированные решения где вообще нет агрегата и клиент ходит за каждой сущностью в свой энд пойнт. Как бы вы решили такую простую задачку и почему?

9 ответов

28 просмотров

А где тут собственно вопрос?

хмммм.... агрегаты... несколько репозиториев..... а там точно "агрегат"?

Sergey P
хмммм.... агрегаты... несколько репозиториев..... ...

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

Ghost Walker
вот кстати да, вы много говорите про агрегат, могл...

есть агрегаты которые описывает Эванс в своей синей книге. Он там описывает "проблема" и "агрегат как паттерн ее решающий". Вполне ознозначная штук. мол проблема - у нас есть некий набор бизнес правил и ограничений которые больше про то как данные между собой соотносятся и их неудобно выражать в виде констрейнтов в базе. решение - давайте мы из базы будем забирать кусок данных нужных для этой транзакции, вешать в базе лог и за целостности этого куска будет отвечать код внутри объекта-агрегата. То есть агрегат - это некая граница кусочка стэйта которая ВСЕГДА обязана быть консистентной. А с точки зрения стораджа это просто key-value. забрали по айдишке, оно там чет внутри пересчиталось - положили по айдишке

~
кусок стейта сущности

там есть нюансы: - агрегаты не должны пересекаться. То есть буквально содержимое агрегата другим транзакциям трогать нельзя. Я хз как у всех а до меня это ограничение далеко не сразу дошло когда я погружался в этот дивный мир. И если это ограничение примерять много интересного начнет в голову идти - агрегаты проектируются не по сущностям а по операциям которые ты с сущностями вытворяешь. Иначе у тебя нарушается предыдущий пункт. - сущности как объекты реального мира и вот этот весь булшит сильно уменьшают спектр возможностей по моделированию домена. Ибо слова и названия громкие и их смысл сильно зависят от контекста. Как мы подтвердили это с определением агрегатов

Sergey P
там есть нюансы: - агрегаты не должны пересекать...

получаю таску на фичу и делаю пекейдж бай фича + функшинал кохижн + агрегат, часть данных сущности которые нужны в фиче и более менее норм должно быть (или нет)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта