
Vasily
28.06.2018
08:31:49
Клиент выбирает услугу, вбивает параметры, вносит бабло этц

Ayrat
28.06.2018
08:32:51
ну это глобально, а локально что решаешь?

Vasily
28.06.2018
08:33:24
На данный момент есть репозиторий на мейлбоксе
По факту, мимикрирует под CRUD

Google

Vasily
28.06.2018
08:34:07
Но с последовательной обработкой запросов к базе
ВОт думаю, так его оставить
Или менять

Klei
28.06.2018
08:35:08
У тебя БД уже готовая?

Vasily
28.06.2018
08:35:14
Ну да
Ну как готовая
Сам пишу, сам читаю
Локальная

Klei
28.06.2018
08:35:37
Ну ты можешь перехать на ES?
Один пользователь же.

Vasily
28.06.2018
08:35:59
ES - это что?
Эластик?

Klei
28.06.2018
08:36:31
Event Sourcing.

Google

Vasily
28.06.2018
08:37:01
Ну не совсем понятно, как это мне поможет в моей задаче
Т.е. условно я получаю с сервиса список услуг, мне его надо в некоторых местах иметь
Предлагаешь по записи в базу просто пушить эвенты об обновлении?
И на них подписываться?
Как вариант в целом
Но надо, чтобы это еще в моей ооп картине мира уложилось :)

Klei
28.06.2018
08:41:08
Как минимум абстрагируешься напрочь от контакта с БД. Бизнес логику я щас не очень понимаю, в некоторых вариантах может также ряд проблем решить.

Vasily
28.06.2018
08:41:57
Хммм
А выборки как делать?

Klei
28.06.2018
08:43:52
Какие выборки? У тебя есть объект (коллекция) полностью представленный внутри актора. Все запросы через актор. Или там какое-то космическое количество элементов в коллекции?

Vasily
28.06.2018
08:44:04
Ну тыщи полторы

Klei
28.06.2018
08:48:25
Услуги принадлежат одному пользователю?
Или это некий перечень доступных?

Vasily
28.06.2018
08:48:46
Для всех одинаковые
Так что второе

Klei
28.06.2018
08:57:42
Если внутри будет иммутабельный стейт, то его можно безболезненно выдавать наружу. Я бы сделал запрос GetState, после чего все выборки проводил бы над результатом по месту требования. А от асков избавился бы через:
collectionActor <? GetState
|> Async.map (List.fold ... >> WrapperMessageType)
|!> context.Self

Vasily
28.06.2018
08:58:36
А теперь объясни значки :)

Klei
28.06.2018
08:58:48
Ты с аккой работаешь?

Vasily
28.06.2018
08:58:53
Угу

Klei
28.06.2018
09:00:13
<? - ask, пока еще асинхронный.
|!> - pipeTo, с ним ты уже сталкивался, run-ит async.

Google

Roman
28.06.2018
09:01:34
Я бы уточнил что большие объекты не стоит передавать в сообщениях

Klei
28.06.2018
09:01:43
Почему?
Разве это не тождественно передаче ссылки?

Roman
28.06.2018
09:02:34
petabridge.com
Тут много постов полезных
petabridge.com
Один из них как раз говорит о больших сообщениях см. http://petabridge.com/blog

Klei
28.06.2018
09:04:25
Кластеры?
Мы вроде только про локальную машину говорили.

Roman
28.06.2018
09:04:58
Не только про кластеры)

Vasily
28.06.2018
09:05:16
Машина локальная

Klei
28.06.2018
09:05:38

Roman
28.06.2018
09:06:02

Ayrat
28.06.2018
09:07:01
Разве это не тождественно передаче ссылки?
По умолчанию инпроцесс мессаги НЕ сериализируются (для скорости). Если мессаги идут через нетворк, то они точно сериализируются.
Можно включить сериализацию ин процесс и получить падение скорости на два порядка, зачем это делать, чтобы гарантировать иммутабельность сообщений (это если кодеры совсем криворукие).
Резюме. Если ты инпроцесс делаешь и у тебя конфиг дефолтный, то месаджи по ссылке передаются, иммутабельность на программисте

Klei
28.06.2018
09:08:12
Так и думал. Так что в нашем случае все гуд.

Vasily
28.06.2018
09:09:21
@Kleidemos Поясни за context.Self

Klei
28.06.2018
09:09:31
Ayrat А ты можешь дать инструктаж, как делать массовые опросы акторов? Ощущаю, что я велосипедю по страшному.

Ayrat
28.06.2018
09:10:46

Vasily
28.06.2018
09:12:46
Такс, еще один сценгарий

Google

Vasily
28.06.2018
09:13:00
Выбираем услугу, надо показать дочерние

Roman
28.06.2018
09:13:27
А статью я поищу.)

Vasily
28.06.2018
09:13:52
Отдельный childActor?

Klei
28.06.2018
09:15:23

Ayrat
28.06.2018
09:15:26
Предположим ты хочешь CRUD. Делаешь актора диспетчера который отвечает за работу с БД, там делаешь разворачивание твоих доменных запросов/команд в SQL например. Он знает о N акторах, которые умеют отправлять SQL команды в БД (лоу левел акторы, которых может быть много) Все кто хотят так или иначе получить что-то от БД, шлют запрос диспетчеру работы с БД и меняют свой стейт на "Ожидаю получения инфы, отвалите от меня", чтобы оставаться реактивными. Когда им в мейлбокс прилетает ответ, они реагируют на него, что-то делают и переходят в другое состояние

Vasily
28.06.2018
09:18:20
Короче, дело ясное, что пока тёмное

Klei
28.06.2018
09:18:29

Ayrat
28.06.2018
09:18:32
У меня есть пример, но он не хелоуворлд)

Roman
28.06.2018
09:19:07

Klei
28.06.2018
09:19:35
Честно говоря пока не представляю, как их можно заюзать для данной задачи.

Ayrat
28.06.2018
09:19:48
И да, это актор роутер просто
Можно считерить и через ActorSelection отправить
типа отправь всем по пути /user/sql-actors/*

Klei
28.06.2018
09:20:35

Ayrat
28.06.2018
09:20:39
https://getakka.net/articles/actors/routers.html
ctrl-f Broadcast

Roman
28.06.2018
09:20:54

Ayrat
28.06.2018
09:21:15

Google

Ayrat
28.06.2018
09:21:18
у него всё инпроцесс

Roman
28.06.2018
09:21:34

Klei
28.06.2018
09:24:38

Ayrat
28.06.2018
09:36:20

Klei
28.06.2018
09:36:53
Что значит "тяжкой"?

Ayrat
28.06.2018
09:37:08
Ну, там больше 2х классов

Klei
28.06.2018
09:37:25
Эт C#?

Ayrat
28.06.2018
09:37:35
Ага

Klei
28.06.2018
09:37:49
Ужас.

Ayrat
28.06.2018
09:38:00
Но эту репку потом портировали на F# достаточно просто, потому что она фукциональненько написана
Там короче попытка писать как на F# только на C#

Klei
28.06.2018
09:39:05
Давай.
// Я так понимаю, что к портированному варианту меня пускать нельзя.

Ayrat
28.06.2018
09:39:21
Правильно понимаешь)
почту скинь, репка на VSTS
можешь в личку

Andrew
28.06.2018
11:06:53
Есть ли в Rider возможность прикрутить некое подобие #region для F#?
Чтобы коллапсить куски кода

Vasily
28.06.2018
11:53:04
В акке можно намутить кастомный стрим наподобие system.EventStream, чтобы на него акторы подписывать?

Pavel
28.06.2018
11:55:16
а чем EventStream не устраивает?

Vasily
28.06.2018
11:55:27
Ну помойка же
Из разных типов сообщений