
Anton
16.01.2018
11:25:08
Долго же ты писал это шутку.

Bohdan
16.01.2018
11:25:43

Sergey
16.01.2018
11:25:49

Maksim
16.01.2018
11:27:08
nservicebus не говно))

Google

Борис
16.01.2018
11:27:12

Aleh
16.01.2018
11:27:12
(не я)
мм, ладно, как минимум один из них

Bohdan
16.01.2018
11:28:04
а кто ещё может быть? хД

Anton
16.01.2018
11:30:08

Pavel
17.01.2018
13:30:47
Не осилиливаю много постов в этом чате. Видал долгие сплетения языков на тему статики. Может об этом уже была речь - дополню от себя из мира .net'а про статические методы.
У нас есть возможность определять статический объект - семантика типа синглтона, соответственно и методы у него должны быть статикой. Так же есть сахар - методы расширения когда можно в статическом классе определять статические методы для других классов не модифицируя их. И еще мож есть разные варианты. Т.е. чисто для технической реализации некоторых фич.

Sergey
17.01.2018
13:32:27
но зачем?)

Pavel
17.01.2018
13:33:11
зачем что?

Sergey
17.01.2018
13:33:13
хотя EventStore объектом сингелтоном норм по идее
зачем что?
1. зачем ты это написал, с какой целью
2. зачем нужны сингелтон объекты? для каких юзкейсов?

Maksim
17.01.2018
13:34:17
я вот с позиции разработчика, использующего язык, который нельзя называть, не могу понять за каким хреном нужен синглтон для стора)

Google

Roman
17.01.2018
13:34:21

Pavel
17.01.2018
13:34:29
1) Как сказал - выше были вопросы у коллег. Походу годы прошли уже))

Sergey
17.01.2018
13:35:38

49576
17.01.2018
13:35:46
ахах эт че это нельзя называть на каком языке пишешь?

Sergey
17.01.2018
13:35:53

Pavel
17.01.2018
13:35:59
2. Зачем нужны? Кому то нужны. Вот в дотнетн есть класс Math там дофига методов для выполнения мат вычислений.

Maksim
17.01.2018
13:36:18

Sergey
17.01.2018
13:36:33

49576
17.01.2018
13:36:38
имя господне долгое время тоже нельзя было называть у евреев

Sergey
17.01.2018
13:37:06

Pavel
17.01.2018
13:37:11
Не историю почему так сделали я не знаю

49576
17.01.2018
13:37:18
та конечно нету. тот проект давно сдулся

Aleh
17.01.2018
13:37:29

Maksim
17.01.2018
13:38:32

Aleh
17.01.2018
13:39:10
поэтому и удобно)

Roman
17.01.2018
13:39:43
И его как синглтон зарегать

Aleh
17.01.2018
13:39:55
т.е. это сразу тебе и наследоваться не надо, и unit of work халявный
удобненько

Google

Maksim
17.01.2018
13:40:59
так и н поняыл в чём удобство. Ладно, мб наткнусь как-нить на такую реализацию, посмотрю

Aleh
17.01.2018
13:41:18
я покажу в чем удобство)

Артур Евгеньевич
17.01.2018
13:42:05

Sergey
17.01.2018
13:42:33

Aleh
17.01.2018
13:43:29

Maksim
17.01.2018
13:44:11
есть какой-то абстрактный агрегат, у которого есть метод applyEvent
в нём же хранится список применённых, но не сохранённых эвентов. И есть внезапно метод для получения этого списка.
Когда выполняется сохранение, список получается и на его основе сохраняется стрим. Усё как бы.

Aleh
17.01.2018
13:44:40

Maksim
17.01.2018
13:46:03
вопрос нипанимать. Явно с подвохом.
конечные агрегаты очевидно не наследую. Они вполне себе самодостаточные

Aleh
17.01.2018
13:46:19
и метод получения списка, и метод добавления для данного инстанса ивентов?

Maksim
17.01.2018
13:47:58
выше написано.
абстрактный агрегат к собственно предметной области зависит никак.
каким образом там эти методы появятся - вопрос третий. Хоть прокси классы создавай.
а вот почему их надо выносит в синглтон эвент стор - в душе не ипу

Aleh
17.01.2018
13:48:38

Maksim
17.01.2018
13:49:05
ты проблему из 1 места в другое перекладываешь. Что ты решил этим?)

Aleh
17.01.2018
13:49:17

Maksim
17.01.2018
13:49:26
да нет) из одного вв другое)

Aleh
17.01.2018
13:49:38
еще раз опиши как ты решаешь эту проблему

Maksim
17.01.2018
13:49:42
+ ко всему: а как ты эвенты применяешь к агрегату?

Aleh
17.01.2018
13:50:10
eventStore.recordThat(this, blahblahEvent)

Maksim
17.01.2018
13:50:24
это публичный метод7

Google

Aleh
17.01.2018
13:50:39
у ивент стора да

Maksim
17.01.2018
13:51:11
как эвент стор понимает к какому агрегату относится это событие?

Aleh
17.01.2018
13:51:18
там передается this

Maksim
17.01.2018
13:52:11
Отлично. Передался this в эвент стор.
дальше, как собственно информация из эвента накладывается на агрегат?

Aleh
17.01.2018
13:52:54
это уже можно делать соглашением, аля у агрегата должен быть метод when%EventName%

Maksim
17.01.2018
13:53:07
публичный?

Aleh
17.01.2018
13:53:31
доступный ивент стору, самый простой вариант - публичный

Maksim
17.01.2018
13:54:37
дисклеймер: я ваши блатные языки не понимаю:
а что мешает васе пупкину вне контекста стора дёрнуть сей метод?

Aleh
17.01.2018
13:54:53

Maksim
17.01.2018
13:55:03
какую проблему мы решили в итоге?

Sergey
17.01.2018
13:55:13

Aleh
17.01.2018
13:55:16
если ивент стор публичный, то он еще и recordThat может вызвать

Maksim
17.01.2018
13:55:30

Aleh
17.01.2018
13:55:40

Maksim
17.01.2018
13:55:44
если он проблемы только порождает

Sergey
17.01.2018
13:55:52
так как там append-only структура - опасность минимальна

Maksim
17.01.2018
13:56:15
да чем проще?)
вот объясни идиоту на пальцах: чем?)
она есть. И это уже нихрена не проще)

Aleh
17.01.2018
13:56:30

Google

Aleh
17.01.2018
13:56:34
все, больше ничем

Maksim
17.01.2018
13:56:52
это не ответ)

Aleh
17.01.2018
13:56:58
это не вопрос)

Maksim
17.01.2018
13:58:47
Сергей, так чем проще?)
вот возьмём наш богомерзкий пхп: я логику protected метода apply прилепил трейтом, метод onSomeEvent в конечном агрегате private.
усё. Никто из вне эвент не подсунет. Щасце, брызги шампанского, никакого "логика в сотне агрегатов"
чем проще?)

Aleh
17.01.2018
13:59:18
как собрать ивенты из нескольких агрегатов?

Maksim
17.01.2018
13:59:58
вопрос нипанимать) у тебя так же есть какой-то список наблюдаемых агрегатов

Sergey
17.01.2018
14:00:07

Maksim
17.01.2018
14:00:46

Sergey
17.01.2018
14:01:14
у тебя просто так не может кто-то "менять состояние откуда захочет" - ты либо это специально сделал и сам виноват, либо... либо проблемы нет