
Aleh
23.02.2017
12:18:57
бизнес-транзакция должна отработать синхронно
другие контексты естественно должны отрабатывать асинхронно
и естественно должны быть механизмы работы в случае если любая последующая кроме нашей "синхронной" транзакции упали

Aleksandr
23.02.2017
12:20:10

Google

Aleh
23.02.2017
12:20:20
можешь пример привести?
order is processed
ок, мы сделали все изменения над аггрегатами в нашей системе синхронно
команда об этом сообщила
остальные контексты отработают или нет

Aleksandr
23.02.2017
12:21:26
в вк когда ты отправляешь сообщение, оно в ui добавляет оптимистично, но по факту может появиться секунд через 10, которые эта команда обрабатывается асинхронно.

Aleh
23.02.2017
12:21:50
емнип там одинм запросом это ходит
сейчас проверю

Aleksandr
23.02.2017
12:22:30

Aleh
23.02.2017
12:22:31
да, одним
т.е. это как раз синхронная команда

Google

Aleksandr
23.02.2017
12:22:45
нет

Aleh
23.02.2017
12:22:45
но вк в любом случае такое себе решение
со всех сторон

Aleksandr
23.02.2017
12:24:08
но вк в любом случае такое себе решение
да это везде так. ты видишь оптимистичное изменение в ui, можешь обновить страницу и твоего оптимистичного изменения уже не будет (если команда не обработана или не сделано хитрое дублирование на конкретном сервисе).

Aleh
23.02.2017
12:25:29
и сообщение в одной транзакции отдается
дальше начинаются всякие
счетчик обновить
нотификации послать
это другие контексты и другие транзакции
оно выходит за рамки текущего аггрегата и тут уже eventual consistency

Aleksandr
23.02.2017
12:26:16
погоди. что команда ДобавитьСообщение делает по твоему синхронно? добавляет сообщение?

Aleh
23.02.2017
12:26:20
счетчик можно не сразу обновить

Aleksandr
23.02.2017
12:26:28
нет
это дорого

Aleh
23.02.2017
12:26:49
готов поспорить

Aleksandr
23.02.2017
12:26:53
для вк, твиттера, фб..

Aleh
23.02.2017
12:27:05
добавить легко, записать об этом все сложно

Google

Aleh
23.02.2017
12:27:17
обновить все счетчики
ленты
теги, поиски
вот это сложно
а добавить как раз легко

Hell
23.02.2017
12:35:34

Aleksandr
23.02.2017
12:39:53
кто их имплементирует?
interop писали, что отнаследовались, поэтому все, кто юзал их стандарт, наследует автоматически 11
думаю, скоро и официально перелезут

Aleh
23.02.2017
12:42:04
оо
а какие книги?

Aleh
23.02.2017
12:42:24
потому что я только 6 часовой его мастер-класс посмотрел)
ну и бложики
вот фаулера еще @YuraLukashik оч советует видосик про event sourcing

Aleksandr
23.02.2017
12:58:18
а какие книги?
видимо под книгами я имел в виду https://cqrs.files.wordpress.com/2010/11/cqrs_documents.pdf и его слайды с различных выступлений. дело было года три назад - книг по ddd/cqrs/es было прочитано около десятка

Aleh
23.02.2017
12:58:36
а если не его, то какие?
а то я эванса и вернона ток из прям по ддд
а все остальные так слегка косаются

Aleksandr
23.02.2017
12:58:53
от ms есть что-то типа cqrs journey

Google

Aleh
23.02.2017
12:59:11
а, от infoq маленькая брошюрка
ddd quickly
или типа того

Aleksandr
23.02.2017
12:59:25
эванс, вернон да. вот кстати вернона новая неплохая про reactive системы
да, от infoq. еще одна от вернона - ddd distilled, но она по сути выжимка из его ddd-изысканий в более краткой форме

Aleh
23.02.2017
13:01:17
вот ddd distilled видел, но не читал

Aleksandr
23.02.2017
13:01:17

Aleh
23.02.2017
13:01:25
я то и implementing не полностью еще прочитал(

Aleksandr
23.02.2017
13:01:56

Admin
ERROR: S client not available

Aleh
23.02.2017
13:02:02
ага

Aleksandr
23.02.2017
13:02:51
и совсем доходчивая ddd in php, если актуален язык)

Aleh
23.02.2017
13:04:43
ddd in php, это которая на leanpub?
я ее листал, когда она еще совсем сырая была

Hell
23.02.2017
13:51:58
господа, а сам pipmple как контейнер где лучше всего хранить?

Aleh
23.02.2017
13:52:40
в прошлом

Hell
23.02.2017
13:53:35
ОК, а если pimple уже выбрали?

Evgeniy
23.02.2017
13:55:26
в папке vendor :D

Hell
23.02.2017
13:55:53
$container = new Pimple\Container();
$container->register(

Google

Hell
23.02.2017
13:56:12
$container['oauth2-providers'] = $providersFactory;

Evgeniy
23.02.2017
13:56:12
конфигурацию ?)

Hell
23.02.2017
13:56:21
return $container;

Evgeniy
23.02.2017
13:56:32
вот с этим у меня была беда в больших проектах
и я запилил свою реализацию psr/container

Hell
23.02.2017
13:57:21
и теперь где хранить
self::$_container = $container;

Evgeniy
23.02.2017
13:57:34
не надо self::....
ты его можешь аргументом
получать

Hell
23.02.2017
13:58:14
в смысле?

Evgeniy
23.02.2017
13:58:22
$container['name'] = $container->factory(function (Container $container) {...});
вместо много точия функция которая возврает объект
инициализировать надо так

Hell
23.02.2017
13:59:13
я не про иницализацую контейнера сейчас говорю

Evgeniy
23.02.2017
13:59:18
$container['session'] = function ($c) {
return new Session($c['session_storage']);
};
http://pimple.sensiolabs.org/
по сути
сокращенная запись от того что я написал
более правильная вот (на той же странице ниже)
3
$container['session'] = $container->factory(function ($c) {
return new Session($c['session_storage']);
});

Hell
23.02.2017
14:00:10
а про то, где хранить сконфигурированный pimple контейнер, если он используется в двух и более классах
и код конфигурирования pimple контейнера

Evgeniy
23.02.2017
14:01:22
$loader = require_once '../vendor/autoload.php';
$container = require_once '../pimple/configuration.php';
примерно так