
Mykola
11.12.2017
11:43:08
корректная "последовательность" ивентов же составляет консистентность приложения

Aleh
11.12.2017
11:43:27
ну ты опять про асинхронность
зачем ты это мешаешь с ивентами и IoC неясно
потому что у вас так было сделано и ты страдал?

Google

Mykola
11.12.2017
11:44:07
ну у всех так сделано
есть примеры другого подхода?

Aleh
11.12.2017
11:44:39
симфонишные\спринговые контроллеры - пример IoC
нормальный другой подход без ивентов, просто с вызовами методов

Mykola
11.12.2017
11:45:00
так там же ивенты сплошные)

Sergey
11.12.2017
11:45:04

Aleh
11.12.2017
11:45:29
и ивенты там - благо, почти мана небесная

Антон
11.12.2017
11:46:16

Mykola
11.12.2017
11:47:50
это же все про ивенты :)

Aleh
11.12.2017
11:49:14
что такое ивенты?

Антон
11.12.2017
11:49:55

Mykola
11.12.2017
11:50:47
ок, поясню: есть синхронный флоу, это например мы получили реквест интерпретируя его как RPC, зароутили его на определенный контроллер, вызвали и вернули результат

Google

Mykola
11.12.2017
11:51:15
но синхронный флоу нам не интересен, мы хотим реюзать код

Aleh
11.12.2017
11:51:43
реюзать код никто не хочет
все хотят реюзать абстракции)

Mykola
11.12.2017
11:52:08
абстракции это тоже код

Aleh
11.12.2017
11:52:11
и синхронный флоу никакого влияния на реюз не оказывает, либо опять же мы о чем-то очень разном

Mykola
11.12.2017
11:52:19
абстракции для того и придуманы, чтоб их реюзать
так вот, с синхронным флоу понятно? тут чистый IoC как процедурный подход

Aleh
11.12.2017
11:53:08
что значит “чистый IoC как процедурный подход”?

Mykola
11.12.2017
11:53:12
внезапно, добавим асинхронности
ну в википедию глянь, что-ли)
там как раз кейсы описаны
к примеру мы хотим писать логи в контроллере
чот мы можем сделать, чтоб не нарушить IoC?

Антон
11.12.2017
11:55:00

Mykola
11.12.2017
11:56:14
но мы же тогда явно будем дёргать функционал другого модуля
а по идеологии IoC мы можем только с фреймворком общаться

Антон
11.12.2017
11:57:58

Mykola
11.12.2017
11:59:07
да я ж уже все сказал: мы шлем ивент для фреймворка ака "залогируйте мне вот это пожалуйста" :)
этим мы не нарушим IoC

Aleh
11.12.2017
11:59:27

Google

Aleh
11.12.2017
11:59:43

Mykola
11.12.2017
12:00:33
почему? мы же не вызываем никакой метод, это не контрол флоу

Anton
11.12.2017
12:00:43
Похоже я не могу уловить мысль...

Aleh
11.12.2017
12:00:56

Anton
11.12.2017
12:01:28
Наброшу: окей, AOP будет нарушать IoC в вашем представлении?

Mykola
11.12.2017
12:01:45
грубо говоря типа так: application.dispatch('my_event')

Aleh
11.12.2017
12:01:56
явный вызов есть, за ним следуют действия
control flow полностью соответстует тому, как ты вызываешь методы
нет никакой инверсии

Mykola
11.12.2017
12:02:16
AoP может и нарушать, почему нет?

Антон
11.12.2017
12:02:52

Mykola
11.12.2017
12:03:03
методы, процедуры и другие штуки - это конкретные реализации конкретных языков

Mykola
11.12.2017
12:03:19
а контрол флоу - это понятие абстрактное
это когда твой модуль каким-то образом влияет на работу приложения напрямую, контролируя это
control - контролировать
что тут не ясно же?

Anton
11.12.2017
12:04:07
Ну т.е. в вашем примере если мы сделаем аспект для логирования и будет в котроллере висеть поинт на него это нарушение, а ивент нет? Моя не понимать

Aleh
11.12.2017
12:04:28
я ваще перестал понимать, что тут обсуждается

Антон
11.12.2017
12:05:16

Mykola
11.12.2017
12:05:23

Google

Mykola
11.12.2017
12:05:31
а не как продолжение флоу

Anton
11.12.2017
12:06:14

Aleh
11.12.2017
12:06:18
также можно представить и любой вызов метода
короч ладно, я все)

Антон
11.12.2017
12:06:48

Mykola
11.12.2017
12:11:19
чуть позже, надо уехать срочно

Антон
11.12.2017
12:12:10

Mykola
11.12.2017
13:35:03
я тут, ща вам обьясню на пальцах

Admin
ERROR: S client not available

Mykola
11.12.2017
13:36:03
почему DI не решает задачу IoC очень просто можно понять на примере внешнего вызова сервиса, который может упасть
у нас например кейс логировать действия юзера, для аналитики
если этот сервис, скажем, заинжектить в контроллер, а потом вызвать, то надо заворачивать в try-catch
потому что вызов не критичен для логики работы и не должен ронять приложение
вот вам на лицо нарушение ioc
с другой стороны, если мы бросим ивент для обработки ферймворком, и пусть сам фреймворк решает как его обрабатывать и в каком модуле - то нарушение ioc не будет. мы можем абстрагироваться от того, что бросить ивент - это просто еще один способ вернуть результат работы контроллера, кусками так сказать
по поводу аспектов: они тут могут порешать если мы сможем заменить вызов логирования поинтами и инкапсулировать логику обработки исключений, но суть не особо поменяется, будет работать в точности как с ивентами


Aleh
11.12.2017
13:47:25
а так, твой фреймворк может кинуть эксепшн
или там диспатчер

Mykola
11.12.2017
13:47:57
тут же вопрос кто владеет интерфейсом

Google

Mykola
11.12.2017
13:49:07
если этот safe-интерфейс живет в фреймворке, то это надо для каждого внешнего вызова такое создаавать, и декорировать там, и.т.д, очень много бойлерплейта
а диспатчер если накрылся - то это фреймворк накрылся, можно падать)
но я хз как реализовать диспатчер, чтоб он падал

Alexey
11.12.2017
15:04:05
Всем привет. А никто не кинет статьей на Хабре про проектирование рест апи? Там ещё запуск ракеты был в примерах. Давно смотрел, сейчас хочу перечитать, но не нашел сходу

Борис
11.12.2017
15:05:56
Кто тут спец по английским терминам? "Атомарная операция" как Linearizability это норм? https://en.wikipedia.org/wiki/Linearizability

Bohdan
11.12.2017
15:20:39
во-первых (не вчитывался еще)
linearizability - это свойство
то есть, это может быть "атомарность"

Sergey
12.12.2017
07:02:41

Alexey
12.12.2017
07:17:23
Все конечно хорошо, но я вроде задал вполне конкретный вопрос - не смог найти статейку. Я же не уточнял что именно ищу в ней

Sergey
12.12.2017
07:18:25
и лучше разобраться с тем что такое идемпотентность и как она аффектит клиент

Alexey
12.12.2017
07:21:28
окей

Mykola
12.12.2017
07:39:27

Alexey
12.12.2017
08:29:14
> Или вообще graphql бери
jsonrpc

Sergey
12.12.2017
08:30:05

Alexey
12.12.2017
08:30:36
не могу не согласиться. Но в большинстве случаев его комплексность избыточна :)

Alexey
12.12.2017
08:43:05
Если бы гуглом нашел - тут не спрашивал)

Alexey
12.12.2017
08:43:23
первая же ссылка

Alexey
12.12.2017
08:44:07