Вопрос по прочитанному( Гексагональная архитектура)?

Недавно прочел habrahabr.ru/post/267125
Наконец то!
Давно хотел рашн едишн что нибудь найти по этому поводу!
Но я хочу один момент только уточнить я понимаю что все очень образно и хоть и названия паттернов перекликаются с laravel ,это можно где угодно использовать.
Но все же, в ларавел 5.1 вырезали ту самую командную шину из 5.0. И остался только JOB, но я так понимаю она нужна вообще только ради то чтобы хандлер использовал команду, но в job как раз handler вызовется сразу после конструктора. То есть если все эти 3 помощника объединить в один, как и сделали в 5.1 то это ведь даже лучше, правда?и еще пожалуйста один момент как быть скажем с обработкой таких форм когда создаются например 3 сущности одновременно? вся обработка разделятся грубо говоря на 4 job'a(command,handler,commandBus'a) ? то есть один запускает трансакцию другой создает основую сущность и затем две другие которые привяжутся затем к ней, или все же это в один обработчик ?
  • Вопрос задан
  • 1936 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Вы не уловили сути идеи гексагоналок судя по всему. В частности вся соль гексагоналки заключается в том, что бы при помощи инверсии зависимости (не путать с контейнером зависимисти или IoC) отделить слои друг от друга. В частности отделить ваш код от кода фреймворка. Далее уже идут концепции из луковой архитектуры. Гексагоналка лишь описывает что должно быть на границах слоев.

То есть если все эти 3 помощника объединить в один, как и сделали в 5.1 то это ведь даже лучше, правда?

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

и еще пожалуйста один момент как быть скажем с обработкой таких форм когда создаются например 3 сущности одновременно?

А теперь опишите ваш случай в виде юз кейса. Когда вам такое понадобиться может? И причем тут формы? Формы это часть интерфейса, то от чего мы хотим изолировать наше приложение.

короч.. лучше не практикуйте пока гексагоналки, они вам пока не нужны. Все эти приемы приследуют определенную цель. И если у вас нет причин для этого, вроде... возможности быстро организовать еще один интерфейс к приложению, например черей MQ, или же у вас есть потребность в изоляции слоев для лучшей тестируемости оных... Или у вас сложная архитектура базы данных (что звучит маловероятно при использовании active record) и вы хотите применить CQRS что бы упростить работу с оными...

Вы должны четко понимать зачем это все нужно. Иначе есть шанс что вы архитектуре своего приложения сделаете только хуже. Просто так такого рода усложнения делать просто не целесообразно.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Но все же, в ларавел 5.1 вырезали ту самую командную шину из 5.0. И остался только JOB

Ничего там не вырезали, просто переименовали. И даже при том, что переименовали, старое имя продолжает работать, никто вас лично не заставляет ничего переименовывать.
Ну а остальной ваш текст я не понял, какой-то набор терминов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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