@symfony_php

Страница 746 из 1418
Bohdan
15.03.2018
22:33:28
сервисный слой, получающий команды и делегирующий сущностям

Sergey
15.03.2018
22:33:43
а никто не говорит что прям всей логики. у тебя есть бизнес логика, а есть инфраструктурная логика то что можно впихнуть в сущности - пихай, если нужно отпралять какие-то эмейлы или дергать реальные сервисы - такое не пихай. если код не относится к сущности - не пихай его туда. все просто же у тебя получается нормальное API описывающее поведениен, а не просто тупые структурки данных ты управляешь внутри стейтом твоих сущностей, при этом инкапсулируешь его тебе не нужны никакие хелперы, менеджеры и прочее дерьмо и в итоге ты получишь кое-какой доменный язык

Bohdan
15.03.2018
22:33:43
без него печально - порты/адаптеры становятся мечтой

Sergey
15.03.2018
22:34:03
я не говорю упарываться и делать доменные ивенты и прочую хрень

Google
Sergey
15.03.2018
22:34:18
просто где можно поместить логику которая относится к сущностям - в сущности, и уже код станет получше

Bohdan
15.03.2018
22:34:50
вот, плюсую

в любом случае без сервисов никак

иногда приходится ворочать сущности, не связанные по иерархии или с внешними зависимостями тогда остается использовать сервисы

Sergey
15.03.2018
22:35:25
сервисы будут, будут еще DTO, целые модули будут, куча инфраструктурного кода и даже всякие хеплеры

Alan
15.03.2018
22:35:45
ну или например сгенерировать какой то статус по закрытым issue

профакапили месяц или нет)

но возможно есть сущность Sprint и это в нее зайдет)

Sergey
15.03.2018
22:38:54
http://blog.byndyu.ru/2010/05/domain-driven-design.html короче почитай немного Бындю, там все описано

Andrey
15.03.2018
22:41:01
Меня один вопрос сильно смущает. Есть ли жизнь этих доменов без орм, которая той же рефлексией соберёт тебе объект, минуя корструктор. Ибо иначе, тебе придётся его руками создать и "провести" до нужного статуса

Petr
15.03.2018
22:43:42
Я понимаю, что лень печатать, но вот у меня, например, возможности узнать содержимое войс-месседжа сейчас нет

Andrey
15.03.2018
22:44:02
И то, что есть стореджи/репозитории, отвечающие за маленькие части одного "агрегата". Они, в теории могут ходить в разные совсем датасеты. Чтобы его раз собрать, нужно композировать их сверху. А если ещё критерий выборки по типу аля джоин будет, то композиция эта ещё накладывает сложности

Google
Алексей
15.03.2018
22:44:23
Много буков

И с телефона вообще не удобно

Andrey
15.03.2018
22:44:32
Это со стороны. Вопрос в воздух

Alan
15.03.2018
22:44:41
да оставьте на стрим обсуждение)

хотя бы цельный материал будет

Алексей
15.03.2018
22:45:02
да оставьте на стрим обсуждение)
Там обсудим дополнительно

Придумайте как стримить 2 монитора в ютьюб с федоры

Sergey
15.03.2018
22:47:10
все зависит от проекта и самого домена у меня есть проект, где тонна инфраструктурного кода, при этом нет ни сущностей, ничего. и там мне не нужно это все, где надо делаются запросы к базам, достаются данные и дальше уже с ними колбасится инфраструктурный код а если этот проект сильно завязан на бизнес логику, т.е реальную бизнес логику, а не какие-то там круды. т.е это нужно работать со стейтом, стейт машинами, правилами, по типу икоммерсов, всяких страховых и прочих бухгалтерских систем. то там без нормального доменного дизайна ты далеко не уедешь и можно быстро погрязнуть в этих сервисах и хелперах, которые разростутся до 40++ методов и будут делать все на свете другая проблема что если у вас обычный круд, то начинают выдумывать и отказываться от структур данных в пользу rich model, хотя это реальный оверинженеринг в общем это все описано и у Фаулера, и у Эванса в книжках. если это пересказывать то выйдет много текста)

а @fes0r тактично слился

Bohdan
15.03.2018
23:05:11
а @fes0r тактично слился
он решил не слушать)

Kirill
16.03.2018
04:35:14
офтоп кто-нибудь настраивал в aws для ec2 через load balanse ssl из ACM? не могу никак разобраться на сервере какие настройки сделать

всё что за балансером уже по https должно быть доступно, но на сервере свои настройки какие-то нужны для веб сервера

Sergey
16.03.2018
06:19:10
а @fes0r тактично слился
лень слушать было) остановился на странной трактокве information hiding)

Меня один вопрос сильно смущает. Есть ли жизнь этих доменов без орм, которая той же рефлексией соберёт тебе объект, минуя корструктор. Ибо иначе, тебе придётся его руками создать и "провести" до нужного статуса
И да и нет. По сути вопрос воспроизведения жизненного цикла сущностей. У тебя ЯП дает вполне четкий цикл жизни объекта. Начало (конструктор) и все остальное. В случае если делать без рефлексии - тебе надо как-то вопрос "вызываем один раз в начале жизненного цикла" как-то переместить куда-то. Это можно но зачем... То есть можно без ORM но без рефлексии неудобно.

ну и по поводу вечной войны инфраструктуры и домена - представим себе сервис букинга. Если в рамках одного какого-то помещения работа с расписанием красиво и вполне эффективно ложится на модель, то если вам надо искать среди десятков тысяч объектов, да еще и как-то по хитрому, то тут инфраструктурные ограничения побеждают и ты начинаешь размазывать логику по SQL. И сделать тут ничего особо нельзя.

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

Maxim
16.03.2018
06:31:00
СТРИМ))

во сколько? в какой день?

Google
Maxim
16.03.2018
06:31:36
или пока в подвешеном состоянии все?

Sergey
16.03.2018
06:43:48
во сколько? в какой день?
на след неделе решим

Но это из разряда фантастики?
почему же? просто это "немного не то"

Maxim
16.03.2018
06:44:22
на след неделе решим
понял, спасибо!

Andrey
16.03.2018
07:14:26
почему же? просто это "немного не то"
Переизобретение джоинов. Пробовал.

Sergey
16.03.2018
07:14:58
Переизобретение джоинов. Пробовал.
почему переизобретение?)

ну то есть можно и с джойнами - вопрос насколько удобно композицией запросы такие строить)

Andrey
16.03.2018
07:23:13
почему переизобретение?)
Ну когда ты их кодом пишешь, т. к. не знаешь, куда идти за первым типом сущности, а куда за вторым. И остаётся только кодом скрещивать. Или изобретать dql

Актуально для коллекций. В свете вчерашних обсуждений, пускай будут issue со своими подзадачами

Sergey
16.03.2018
07:50:29
Переизобретение джоинов. Пробовал.
но все же - не понравилось? мне вот понравилось) Правда не надо в крайности - у меня например на один метод API есть жирная выборка, части которой имеют свои джойны и юзаются в других местах. Но вот для этой штуки сильно усложняется гидрация и логика самих запросов. А так вжух, 3 выборки, каждая с 3-мя джойнами, склеил выплюнул. Удобно. По производительности не сказать что плохо. Да и доктрине с гидрацией проще)

Sergey
16.03.2018
07:56:35
чуть красочнее с разделением на контексты, когда можно хоть немного разделять критерии между собой и работать с ними независимо, но...
откуда ты там уже нарисовал контексты?) вот так почитают тебя и подумают "та ну нахуй, пойду логику в контроллерах дальше писать"

Sergey
16.03.2018
07:57:01
я б тебе советовал как-то упрощать пояснение и опускаться поближе к реальности)

ты много видел приложений где у тебя несколько контекстов нормально имплементировано?

Sergey
16.03.2018
07:57:22
Bohdan
16.03.2018
07:57:31
просто тот кусок был похож на мысли вслух)

Sergey
16.03.2018
07:57:46
ты много видел приложений где у тебя несколько контекстов нормально имплементировано?
и это тип говорит о том что "вертикальное разделение приложение миф"?

или больше говорит о том что большинство не парятся?

Admin
ERROR: S client not available

Sergey
16.03.2018
07:58:13
что есть "ближе к реальности"? тип как все привыкли?
тут для людей инкапсуляция это "нуу, у меня ж в сервисе скрыта логика, вот инкапсуляция"

Google
Sergey
16.03.2018
07:58:18
а ты за контексты топишь)

Sergey
16.03.2018
07:58:31
не топлю, там троеточее в конце))

я привел конкретный пример когда "ну не выйдет сделать красиво в модели логику и придется размазать по SQL"

Это у Эванса все клево и красиво в книжке, а в реальности инфраструктура часто побеждает над чистотой модели

Sergey
16.03.2018
08:00:10
а еще у тебя тот же issue при закрытии должен к примеру отправить имейлы, или дернуть какие-то гитхаб сервисы. это уже тоже в сущность не впихнешь и без внедрения доменных ивентов выбора особо не остается

Bohdan
16.03.2018
08:01:11
ребяты я еще раз закину свой вопрос для domain events дергать releaseEvents в сервисном слое это вообще типа ок?

Sergey
16.03.2018
08:01:21
я сколько не гуглил мнения людей которые искали пути уменьшения связанности, большинство в своих размышлениях приходят к whole value. А после для таких случаях к event driven подходам

Bohdan
16.03.2018
08:02:08
мне это просто слегка калечным кажется совсем не магическое)

хотя ,наверное, это самый правильный вариант

Sergey
16.03.2018
08:02:23
Bohdan
16.03.2018
08:02:46
да и в том же litecqrs и подобных это реализовано подобным образом (речь не про cqrs, а про примеры реализации)

Sergey
16.03.2018
08:02:58
в целом releaseEvents должен вызываться там где ты уже знаешь что эти ивенты... факты. То есть данные сохранены, транзакция закоммичена и все такое

Bohdan
16.03.2018
08:03:15
я имею ввиду то, что мне не нравится необходимость дергать releaseEvents и dispatch вручную

Sergey
16.03.2018
08:03:18
а где у тебя это место - сам решай)

Bohdan
16.03.2018
08:03:29
это, в принципе, одна из причин того, почему мне ранее нравились шины

значит, что вручную прописать)

Sergey
16.03.2018
08:03:38
у меня есть один сервис который отвечает за коммит транзакции. он этим и занимается

Google
Bohdan
16.03.2018
08:03:52
ну у меня нет такого) или ты про flusher свой?

Sergey
16.03.2018
08:04:15
ну у меня нет такого) или ты про flusher свой?
ну если у тебя только доктрина - достаточно postFlush листенера. У меня не только доктрина потому своя надстройка

Bohdan
16.03.2018
08:05:37
смотри, как было в litecqrs во всех хендлерах был встроен сервис identitymap и в хендлерах я дергал $this->map->add($entity); да, это вручную, но на одну строчку кода меньше :D а дальше уже сама шина выдергивала все сущности из identitymap и раскидывала их ивенты в диспетчер

Bohdan
16.03.2018
08:06:10
оч странная штука
да не отрицаю

Sergey
16.03.2018
08:07:00
да не отрицаю
ну то есть.... все намного проще когда ты просто знаешь что у тебя хэндлер команды работает строго с одним агрегатом. И увы это... сложно) особенно если ты не умеешь так делать) я бы даже так сказал - это пипец сложно.

?
16.03.2018
08:07:13
я правильно понимаю, что список доступных локалей с переводами надо как-то самому задавать? (т.е. нет способа из коробки получить локали, для которых есть переводы)

Страница 746 из 1418