@Fsharp_chat

Страница 619 из 772
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 А ты можешь дать инструктаж, как делать массовые опросы акторов? Ощущаю, что я велосипедю по страшному.

@Kleidemos Поясни за context.Self
Просто самому себе отправляешь сообщение. Всю сопутстсвующую инфу заворачивай в сообщение во второй строке.

Ayrat
28.06.2018
09:10:46
Ayrat А ты можешь дать инструктаж, как делать массовые опросы акторов? Ощущаю, что я велосипедю по страшному.
Есть два пути. Сделать актора, который будет знать о состоянии акторов априори (держать словарь своих детей например с времени последнего ответа от них) или реально делать броадкасты. Второй случай ну такой себе, я предпочитал диспетчера, который знает о всех

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

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

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

Klei
28.06.2018
09:15:23
Отдельный childActor?
Ты можешь все дерево представить в рамках одного актора?

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

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

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

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

Ayrat
28.06.2018
09:19:48
А по броадкастам есть готовые примитивы? Желательно с запросом промежуточного состояния, когда не все еще ответили, и т.п.
Есть примитив броадкаста, но без ответов. Т.е. положить всем акторам в мейлбоксы этот месадж - такой примитив есть.

И да, это актор роутер просто

Можно считерить и через ActorSelection отправить

типа отправь всем по пути /user/sql-actors/*

Ayrat
28.06.2018
09:20:39
https://getakka.net/articles/actors/routers.html

ctrl-f Broadcast

Roman
28.06.2018
09:20:54
Тыкни в статью, плиз.
https://petabridge.com/blog/large-messages-and-sockets-in-akkadotnet/

Ayrat
28.06.2018
09:21:15
https://petabridge.com/blog/large-messages-and-sockets-in-akkadotnet/
тут про Ремоут если чо, т.е. нетворк

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

Roman
28.06.2018
09:21:34
И да, это актор роутер просто
Стоит сказать, что роутеры быстрее обычных акторов.

тут про Ремоут если чо, т.е. нетворк
Да-да. Я все же обещал статью)

Klei
28.06.2018
09:24:38
https://getakka.net/articles/actors/routers.html
Эт по моему не про мой случай. Хотя я еще поковыряю.

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
Ну помойка же

Из разных типов сообщений

Страница 619 из 772