Сценарий: statefull SF сервис сохранит свое состояние в нескольких надежных коллекциях. Statefull SF доступен через удаленный доступ.Когда и где лучше всего инициализировать надежную коллекцию?
Нужно ли «инициализировать» коллекции перед первым использованием (путем вызова StateManager.GetOrAddAsync)? Помогло бы ли оно снизить первый доступ к надежной коллекции или нет необходимости делать этот шаг?
Если это необходимо сделать, когда это подходящее время и место для этого? Самое разумное место прямо перед бесконечным циклом в RunAsync, но что, если метод, вызванный посредством удаленного доступа, будет вызываться до того, как коллекции будут инициализированы? Будет ли какое-либо ухудшение производительности в этом первом удаленном вызове (когда сбор будет инициализирован)?
Последняя вещь -> при работе с надежными коллекциями в порядке хранения ссылки на коллекцию в классе (например, во время запуска какого-либо экземпляра я получаю ссылку с помощью StateManager.GetOrAddAsync) и работает только с этой ссылкой или лучше вызвать StateManager.GetOrAddAsync перед каждым вызовом коллекции?
Спасибо за ответы!
Спасибо за ответ! Небольшое дополнение к ссылке «hold reference vs. call GetOrAddAsync»: Сценарий: класс Wrapper вокруг надежной коллекции. Методы класса создают транзакцию, хранят/извлекают данные и фиксируют транзакцию. Достаточно получить ссылку на коллекцию в инициализации/построении обертки или я должен вызвать GetOrAddAsync во всех методах до создания транзакции и работы с коллекцией? Вы получаете состояние перед каждым добавлением/RetrievePost? – ElDiabloComputatore
Прежде чем создавать транзакцию и работать с коллекцией, вы должны вызывать 'GetOrAddAsync' в каждом методе.Ну, конечно, вы можете сохранить его в переменной, но я не уверен, что он будет работать, например, когда одновременно вызываются несколько методов службы. Наверное, это сработает, но я бы не рекомендовал этот подход. Итак, да, вам нужно создать его при вызове метода каждой службы. Почему бы и нет? Это дешево, как черт по сравнению с другими операциями. Я получаю состояние при каждом вызове AddPost, только внутри самого метода. – cassandrad