
Sergey
25.12.2017
09:08:51
суффикс Exception дабы убрать двусмысленность у имени исключения, но лепить для всего так себе
иногда еще ползуюсь Error суффиксом

Roman
25.12.2017
09:10:00

Google

Roman
25.12.2017
09:10:53

Sergey
25.12.2017
09:10:56

Артур Евгеньевич
25.12.2017
09:11:15
А вот про это вопрос кстати:

Maksim
25.12.2017
09:11:21
выделяю и до кучи в отдельную папку в рамках модуля)
вкусовщина, как по мне. Ни за, ни против особых моментов нет) ну типа лишние 5 буковок написать не западло и всё такое)

Сергей
25.12.2017
09:12:31

Артур Евгеньевич
25.12.2017
09:13:35
У меня в проекте имеятся некоторая штука, которая позволяет указывать в анотациях метода классы, которые будут вызваны перед вызовом метода. Назыаются условно вотчдоги. Есть папка вотчдоги и в ней папка экспшнов, в которой лежат экспшны для каждой проверки - юзер нот фаун, айпиблокд и т.д Сейчас я делаю задачу, чтобы эти вотчдоги стали обязательными. И вот думаю в каую папку мне закинуть WatchdogNotFound или в папку с исключениями вотчдогов, или в папку сборщика/компилятора сервисов

Roman
25.12.2017
09:13:38

Артур Евгеньевич
25.12.2017
09:13:49
Я склоняюсь к сборщику, так как это его все таки ошибка, что не указан вотчдог
а сам вотчдог не должен знать обязательный он илнет

Roman
25.12.2017
09:14:31

Sergey
25.12.2017
09:14:52

Roman
25.12.2017
09:14:55

Артур Евгеньевич
25.12.2017
09:15:21

Google

Roman
25.12.2017
09:15:34

Sergey
25.12.2017
09:15:45

Артур Евгеньевич
25.12.2017
09:16:23
я не знаю, я не работал пока на прикладном уровне, просто дали задачу, чтобы для определенного интерфейса нельзя было написатьреализацию без указателя тего вотчера

Roman
25.12.2017
09:17:43

Max
26.12.2017
17:25:32
А кто тут норм с DDD/микросервисами дружит?
Вот например у меня есть форма, которая создает юзера, ее UI понятное дело размазан на несколько контекстов, те в каждом контексте есть своя сущность юзера (для заказов, рекламы, доставки и тп). Вопрос - где лучше создавать эти сущности? Сейчас у меня экшен контроллера, который хендлит форму и потом просто размазывает его на несколько сущностей и сохраняет в бд
и смущает полотно в 300+ строк
в одном методе
есть вариант с коммандами, памапать реквест на комманды и дальше к ним подкидывать обработчики для каждого из контекстов

Sergey
26.12.2017
17:36:40
либо саги либо сервисы-полотнища - суть в том что бы у тебя было что-то одно что описывает процесс
и желательно это что-то должно быть максимально тупым, что бы покрывалось позитивным тест кейсом

Maksim
26.12.2017
17:41:04
в саге будет больше 300 строк) если уж прям размазывать от души)

Sergey
26.12.2017
17:43:22
ну я думаю что саги все ж тут рано))
хотя честно - хз.... я пока плохо понимаю разницу в сложности, как по мне и то и то легко, просто есть нюансы другие
но я пока могу только на простых кейсах прокручивать..
вот как у Макса)

Max
26.12.2017
17:44:12
ее опять ProcessManager ??
я же уже вроде спрашивал)

Aleh
26.12.2017
17:44:28

Sergey
26.12.2017
17:44:44
ну процесс менеджер это когда у тебя процесс со стэйтом который надо держать дольше чем запрос
это как наши с тобой платежки

Google

Maksim
26.12.2017
17:44:55
вот как у Макса)
ну мои саги (которые на работе пилю) ещё попробуй пойми) там довольно большая блок-схема получается)

Max
26.12.2017
17:45:00

Maksim
26.12.2017
17:45:14
наркоманская схема, все дела

Sergey
26.12.2017
17:45:25

Max
26.12.2017
17:45:31
а чем смущает?
как показывает практика, где 300, там через месяц уже 500, плюс с десяток if - else - if

Sergey
26.12.2017
17:45:44
в отдельные сервисы
в VO
куда угодно

Maksim
26.12.2017
17:45:53
ты разобрался в том, как они сами работают) а как в них бизнесс-логика обрабатывается - другой момент)

Aleh
26.12.2017
17:45:57

Sergey
26.12.2017
17:45:58
полотнище должно оставаться линейным
если у тебя много зависимостей - убирай логику

Maksim
26.12.2017
17:46:39
в целом, всё говно в сервисах, а саги типа не при чём)
если/то

Sergey
26.12.2017
17:46:59
да, саги форсят разделять лучше... но это не точно)

Maksim
26.12.2017
17:47:24
угу) есть у меня сага, которая по пути инициализирует ещё 3) такое себе удовольствие, если честно)

Max
26.12.2017
17:47:39
саги тут не причем, так как все в рамках одной транзакции

Maksim
26.12.2017
17:47:42
оно работает, но вот за прозрачность схемы не ручаюсь)
а сага - эт не транзакция?)

Max
26.12.2017
17:50:41

Google

Maksim
26.12.2017
17:51:18
отчасти)
но да ладно, любителей обмазаться команд басами нет, пойду дальше квартиру убирать)

Sergey
26.12.2017
17:52:52
а сага - эт не транзакция?)
мне больше нравится воспринимать это как процесс состоящий из нескольких логических транзакций... и все это должно приводить к консистентному результату.
ну то бишь да транзакция короч убеди...(

Maksim
26.12.2017
17:53:40
я поэтому выше и написал, что отчасти. Всё от использования зависит, имхо. Тебя никто не заставляет откатывать что-то. Или не бросить на пол пути
сохранив "что получилось"
в +/- большом flow по саге ещё попробуй роллбэк сообрази
в принципе довольно коварный инструмент, который оставляет большой запас для "творчества". И это иногда может стать проблемой)

Roman
26.12.2017
19:33:23
А можно на пальцах про саги?
Ну и если не затруднит - где подробнее прочитать можно? Что это такое и с чем их готовить?

Maksim
26.12.2017
19:39:15
https://docs.particular.net/nservicebus/sagas/
как пример)

Roman
26.12.2017
19:44:39

Maksim
26.12.2017
19:45:06
зависит от реализации. Скорее что-то вроде аркестрации, если такой термин применим

Anton
27.12.2017
07:17:48
Про саги лучше у мелкомягких почитать: https://msdn.microsoft.com/en-us/library/jj591569.aspx
И у Джонатана тоже можно немного мыслишек: http://blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-i-of-ii/
А оттуда по ссылочкам к Уди, Янгу и обмазыванию басами как здесь любят :)

Roman
27.12.2017
07:22:56
А это зашкварище.
Пушо чтобы хэндлеры инстанциировать - надо либо сервис-локатор юзать (что зашквар), либо инстанциировать их ручками - что тоже зашквар.

Ilia
27.12.2017
07:24:13

Google

Roman
27.12.2017
07:24:40
Как кстати решаете обработку доменных событий
В шину пулять их?
Типа медиатора богартовского
Чтобы он через DI обработчики резолвил
Со всякими сервисами, блэкджеком и прочим.

Ilia
27.12.2017
07:27:24
Ты поинтересуйся на досуге...

Roman
27.12.2017
07:27:47
Да нет.
Ну тогда чтобы протестить обработку - надо переопределять регистрации в DI
Хотя...
Их и так надо переопределять)
Просто сервис локатор - такой себе паттерн.
Явное инстанциирование - вообще абсолютное зло.

Bohdan
27.12.2017
07:31:22

Roman
27.12.2017
07:32:22

Maksim
27.12.2017
07:33:40
шо. опять..)