yii2-cqrs (имплементация cqrs)

Выкладываем свои наработки
Аватара пользователя
ElisDN
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yii2-cqrs (имплементация cqrs)

Сообщение ElisDN » 2016.01.22, 23:49

zelenin писал(а):не хочу даже больше копаться в этом. удалю репозиторий.
Ага :)

ZeiN
Сообщения: 180
Зарегистрирован: 2012.06.06, 13:59

Re: yii2-cqrs (имплементация cqrs)

Сообщение ZeiN » 2016.01.23, 12:47

Кстати, по поводу command bus, тоже собрал на днях из наработок в один пакет свою версию шины, чтобы унифицировать ее между своими проектами. Может кому-то интересно:
https://github.com/trntv/yii2-command-bus
Версия базовая, но есть поддержка выполнения комманд в фоне (через Process ) и очереди + middlewares.

PS. Кстати, паралельное написание многими своих велосипедов говорит о том шина для yii вещь востребованная многими и хотелось бы увидеть хотя бы общие интерфейсы от core team, чтобы зоопарк был менее пестрым :-)

PSS. Хочется сделать нечто универсальное, чтобы к этому вопросу возвращатся пореже, поэтому любые мысли и юзкейсы будут очень полезны.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-cqrs (имплементация cqrs)

Сообщение zelenin » 2016.01.23, 13:45

ZeiN писал(а):Кстати, по поводу command bus, тоже собрал на днях из наработок в один пакет свою версию шины, чтобы унифицировать ее между своими проектами. Может кому-то интересно:
https://github.com/trntv/yii2-command-bus
Версия базовая, но есть поддержка выполнения комманд в фоне (через Process ) и очереди + middlewares.
ну вот хорошо, что сделал. Но опять же сделано по yiiшному, не solid.
ZeiN писал(а):PS. Кстати, паралельное написание многими своих велосипедов говорит о том шина для yii вещь востребованная многими и хотелось бы увидеть хотя бы общие интерфейсы от core team, чтобы зоопарк был менее пестрым :-)
я сделал for fun в качестве адаптации https://github.com/zelenin/cqrs для возможной дискуссии о хорошо и плохо. И отклика практически не получил, так что уверен, что вещь не востребована.
ZeiN писал(а):PSS. Хочется сделать нечто универсальное, чтобы к этому вопросу возвращатся пореже, поэтому любые мысли и юзкейсы будут очень полезны.
а мне как раз кажется что должно быть максимально простым, чтобы под конкретный проект шину расширить при необходимости. Например обработка асинхронных команд на очереди редиса - это явно проектозависимо.

ZeiN
Сообщения: 180
Зарегистрирован: 2012.06.06, 13:59

Re: yii2-cqrs (имплементация cqrs)

Сообщение ZeiN » 2016.01.23, 14:06

ну вот хорошо, что сделал. Но опять же сделано по yiiшному, не solid.
естественно, для всего остального есть и tactician и broadway и много других, но чтобы каждый раз не скрешивать их с йиишным DI, ServiceLocator или очередями (которые когда-то все же будут закончены :-)) надо делать по " yiiшному"
zelenin писал(а):а мне как раз кажется что должно быть максимально простым, чтобы под конкретный проект шину расширить при необходимости. Например обработка асинхронных команд на очереди редиса - это явно проектозависимо.
Ну как минимум интерфейс должен быть достаточным.
По поводу редиса, суть в сущестовании интерфейса QueuedCommand и BackgroundCommand, их использование, неиспользование или сочетание право, а не обязанность.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-cqrs (имплементация cqrs)

Сообщение zelenin » 2016.01.23, 14:35

ZeiN писал(а):
zelenin писал(а):а мне как раз кажется что должно быть максимально простым, чтобы под конкретный проект шину расширить при необходимости. Например обработка асинхронных команд на очереди редиса - это явно проектозависимо.
Ну как минимум интерфейс должен быть достаточным.
По поводу редиса, суть в сущестовании интерфейса QueuedCommand и BackgroundCommand, их использование, неиспользование или сочетание право, а не обязанность.
я про консольный контроллер, не про интерфейс. У тебя есть такие интерфейсы, только твоя абстрактная команда их не реализует, а является сразу винегретом.
Шина без интерфейса - сразу и синхронная и нет и все зашито.
Асинхронная команда владеет информацией о своей работе с очередью, хотя команда - это просто сообщение. Плюс сообщения у тебя еще и сами себя обрабатывают, а еще являются и мидлварью.
Шина не должна ничего возвращать - команду отправили в нее и забыли.

Я за последние месяцы перелопатил кучу различного кода, в том числе видел около десятка различные реализаций шин. Все они были написаны достаточно качественно, некоторые с косяками (на самом деле косяк могу вспомнить один - self-handling-command как и у тебя), большинство нет, но все были выдержаны в академичном стиле исключительно по solid. Оценки качества дам скажем от 7 до 10 по 10-бальной шкале. Твой же код - это худшая имплементация из мною виденных (3/10) и в таком виде не заслуживает даже быть рассматриваемой для участия в каком-то проекте. Лапша. Не обижайся.

ZeiN
Сообщения: 180
Зарегистрирован: 2012.06.06, 13:59

Re: yii2-cqrs (имплементация cqrs)

Сообщение ZeiN » 2016.01.23, 14:49

zelenin писал(а):Я за последние месяцы перелопатил кучу различного кода, в том числе видел около десятка различные реализаций шин. Все они были написаны достаточно качественно, некоторые с косяками (на самом деле косяк могу вспомнить один - self-handling-command как и у тебя), большинство нет, но все были выдержаны в академичном стиле исключительно по solid. Оценки качества дам скажем от 7 до 10 по 10-бальной шкале. Твой же код - это худшая имплементация из мною виденных (3/10) и в таком виде не заслуживает даже быть рассматриваемой для участия в каком-то проекте. Лапша. Не обижайся.
Странно ты подходиш к вопросу, паттерны и "академический стиль" есть результат удобства и целесообразности, а не вещь сама в себе. self-handling комманды, вещь удобная, потому и используемая, в том же laravel. Регистрировать под каждую команду хендлер или городить магические локаторы академичнее? ну ок.
Шина не должна ничего возвращать - команду отправили в нее и забыли.
спорный момент, не один из подходов "возвращать/не возвращать", не окончательный. Да и большинство имплементаций все же возвращает результат.
не заслуживает даже быть рассматриваемой для участия в каком-то проекте
да ну что вы говорите? потому что... что?

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-cqrs (имплементация cqrs)

Сообщение zelenin » 2016.01.23, 15:06

ZeiN писал(а):
zelenin писал(а):Я за последние месяцы перелопатил кучу различного кода, в том числе видел около десятка различные реализаций шин. Все они были написаны достаточно качественно, некоторые с косяками (на самом деле косяк могу вспомнить один - self-handling-command как и у тебя), большинство нет, но все были выдержаны в академичном стиле исключительно по solid. Оценки качества дам скажем от 7 до 10 по 10-бальной шкале. Твой же код - это худшая имплементация из мною виденных (3/10) и в таком виде не заслуживает даже быть рассматриваемой для участия в каком-то проекте. Лапша. Не обижайся.
Странно ты подходиш к вопросу, паттерны и "академический стиль" есть результат удобства и целесообразности, а не вещь сама в себе. self-handling комманды, вещь удобная, потому и используемая, в том же laravel. Регистрировать под каждую команду хендлер или городить магические локаторы академичнее? ну ок.
Шина не должна ничего возвращать - команду отправили в нее и забыли.
спорный момент, не один из подходов "возвращать/не возвращать", не окончательный.
не заслуживает даже быть рассматриваемой для участия в каком-то проекте
да ну что вы говорите? потому что... что?
спорить не буду. это опять очередной спор типа этого viewtopic.php?f=26&t=34859
один говорит о пользе solid, другой говорит о вопросах целесообразности, первый начинает с аргументами показывать целесообразность, второй сливается, поскольку солид для него - это абстрактные "паттерны и академический стиль", а не что-то о чем он имеет практическое представление.

ZeiN
Сообщения: 180
Зарегистрирован: 2012.06.06, 13:59

Re: yii2-cqrs (имплементация cqrs)

Сообщение ZeiN » 2016.01.23, 15:32

zelenin писал(а):
ZeiN писал(а):
zelenin писал(а):Я за последние месяцы перелопатил кучу различного кода, в том числе видел около десятка различные реализаций шин. Все они были написаны достаточно качественно, некоторые с косяками (на самом деле косяк могу вспомнить один - self-handling-command как и у тебя), большинство нет, но все были выдержаны в академичном стиле исключительно по solid. Оценки качества дам скажем от 7 до 10 по 10-бальной шкале. Твой же код - это худшая имплементация из мною виденных (3/10) и в таком виде не заслуживает даже быть рассматриваемой для участия в каком-то проекте. Лапша. Не обижайся.
Странно ты подходиш к вопросу, паттерны и "академический стиль" есть результат удобства и целесообразности, а не вещь сама в себе. self-handling комманды, вещь удобная, потому и используемая, в том же laravel. Регистрировать под каждую команду хендлер или городить магические локаторы академичнее? ну ок.
Шина не должна ничего возвращать - команду отправили в нее и забыли.
спорный момент, не один из подходов "возвращать/не возвращать", не окончательный.
не заслуживает даже быть рассматриваемой для участия в каком-то проекте
да ну что вы говорите? потому что... что?
поскольку солид для него - это абстрактные "паттерны и академический стиль", а не что-то о чем он имеет практическое представление.
все же тебя немного заносит на поворотах

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-cqrs (имплементация cqrs)

Сообщение zelenin » 2016.01.23, 15:41

ZeiN писал(а):все же тебя немного заносит на поворотах
ну вот и хорошо. подтред закрыт )

Аватара пользователя
rugabarbo
Сообщения: 1061
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: yii2-cqrs (имплементация cqrs)

Сообщение rugabarbo » 2016.01.23, 16:09

SOLID, DRY, SL, CQRS, DDD, программирование на событиях и прочее академическое барахло с практическим удобством вообще никак не связано :mrgreen: Всё это удел Enterprise-решений, где иначе никак (где не получится управлять сложностью проекта и командой разработки без полного разделения вещей и строгих стандартов).

Зачем использовать всё это в личных/небольших наработках, которыми занимаются 1.5 программиста, я не понимаю :mrgreen: Какая-то разновидность мазохизма.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-cqrs (имплементация cqrs)

Сообщение zelenin » 2016.01.23, 16:21

rugabarbo писал(а):SOLID, DRY, SL, CQRS, DDD, программирование на событиях и прочее академическое барахло с практическим удобством вообще никак не связано :mrgreen: Всё это удел Enterprise-решений, где иначе никак (где не получится управлять сложностью проекта и командой разработки без полного разделения вещей и строгих стандартов).
только ddd вещь достаточно академичная и редко используется. Все остальное используется практически всегда и везде на проектах чуть больше чем маленький.
Опять же: компетенция yii-сообщества такова, что программисты yii не делают сильно развитых проектов. Поэтому дешевле в 5 местах исправить говнокод при изменении условий, чем заранее абстрагироваться.
rugabarbo писал(а):Зачем использовать всё это в личных/небольших наработках, которыми занимаются 1.5 программиста, я не понимаю :mrgreen: Какая-то разновидность мазохизма.
именно это я и написал:
в таком виде не заслуживает даже быть рассматриваемой для участия в каком-то проекте

Аватара пользователя
ElisDN
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yii2-cqrs (имплементация cqrs)

Сообщение ElisDN » 2016.01.23, 16:25

rugabarbo писал(а):...и прочее академическое барахло с практическим удобством вообще никак не связано...
Да, прямолинейный и проверенный веками подход "фигак, фигак и по FTP в продакшн" действительно проще. И сторонников у него заметно больше. Счастливые люди... Не заморачиваются с VCS, CI, Composer, LESS, миграциями...

Аватара пользователя
samdark
Администратор
Сообщения: 9127
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: yii2-cqrs (имплементация cqrs)

Сообщение samdark » 2016.01.23, 16:35

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

Аватара пользователя
ElisDN
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yii2-cqrs (имплементация cqrs)

Сообщение ElisDN » 2016.01.23, 23:14

Можно всё. Лишь бы до такого не дошло :) :

Изображение

ZeiN
Сообщения: 180
Зарегистрирован: 2012.06.06, 13:59

Re: yii2-cqrs (имплементация cqrs)

Сообщение ZeiN » 2016.01.25, 12:31

Sam Dark писал(а):И не надо заморачиваться, если задача того не стоит. Я сам когда делаю что-то очень простое особо не парюсь. Единственное, что я вижу в этом плохого — отсутствие практики. То есть когда попадётся что-то действительно сложное, оно может поставить фанатичного адепта простоты, никогда не делавшего абстракций, в тупик.
с этим не стоит сильно заморачиватся, только когда ты уже умеешь, понимаешь и осознаешь стоит ли в этом месте строго придерживатся принципов, например, solid или можно немного отступить в угоду скорости, простоте. Такое решение должно быть осознаным, но чаще всего это въедается на уровне подсознания и отступить от них становится довольно сложно

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: yii2-cqrs (имплементация cqrs)

Сообщение zelenin » 2016.01.25, 12:41

ZeiN писал(а):
Sam Dark писал(а):И не надо заморачиваться, если задача того не стоит. Я сам когда делаю что-то очень простое особо не парюсь. Единственное, что я вижу в этом плохого — отсутствие практики. То есть когда попадётся что-то действительно сложное, оно может поставить фанатичного адепта простоты, никогда не делавшего абстракций, в тупик.
с этим не стоит сильно заморачиватся, только когда ты уже умеешь, понимаешь и осознаешь стоит ли в этом месте строго придерживатся принципов, например, solid или можно немного отступить в угоду скорости, простоте. Такое решение должно быть осознаным, но чаще всего это въедается на уровне подсознания и отступить от них становится довольно сложно
вот именно. а solid можно не придерживаться, когда твое приложение заведомо будет состоять из 3-5 контроллеров, без мыслей о дальнейшем развитии. В реальном проекте по крайней мере SOL всегда должен быть, а ID для более крупных.

lynicidn
Сообщения: 2221
Зарегистрирован: 2014.05.24, 15:12

Re: yii2-cqrs (имплементация cqrs)

Сообщение lynicidn » 2016.01.25, 15:32

все дело в соли

Аватара пользователя
ElisDN
Сообщения: 5355
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yii2-cqrs (имплементация cqrs)

Сообщение ElisDN » 2016.01.25, 19:05

- В чём соль, бро?
- В соли :)

Ответить