Вы не нашли примеров об этом подходе, потому что основная идея действующих лиц в Service Fabric - использовать функции управления состоянием платформы, чтобы справиться с этим для вас.
Фреймворк гибок в написании вашего собственного провайдера, но будет сложнее, чем в другой актерской фреймворке, такой как Akka.Net или Орлеан, которая не построена поверх платформы, такой как SF.
SF Actors имеет ДНК от Orleans, фреймворк, на котором был портирован SF Actor.
Orleans не предоставляет платформу данных и требует провайдеров хранения для обработки персистентности для хранилища SQLВы можете создать пользовательский поставщик и зарегистрировать его во время выполнения, и все готово.У них уже есть один для хранилища таблиц Azure.
Если у вас все еще есть планы по сохранению состояния в БД, вы можете выбрать одно из этих решений или создать собственного провайдера в соответствии с рекомендациями Loek и основывать его наидеи взяты из одной из других платформ.
Что касается основной проблемы, вам не нужно фактически использовать управление состоянием актора для решения проблемы параллелизма, вы можете просто использовать его аспекты изоляции и связи дляпредотвращать одновременные операции с одним элементом (каждый элемент является актером), и все операции с данными элемента должны обрабатываться самим субъектом.
Но поскольку вы используете внешнее постоянство, ничто не мешает другим субъектам,услуги или внешние системы изменения состояния субъекта, и технически оно снова открыто для параллелизма.Может не быть проблемой, если вы можете гарантировать, что только субъект может изменить его, например, хранилище Azure, вы можете арендовать большой двоичный объект, и только владелец аренды может изменить его.
Это одна из причин, по которойСостояние субъекта должно быть инкапсулировано и управляться субъектом, иначе сложность управления им будет вытекать за пределы субъекта.