【问题标题】:Call GetOrAddAsync in the OnOpenAsync method在 OnOpenAsync 方法中调用 GetOrAddAsync
【发布时间】:2019-05-21 19:06:36
【问题描述】:
我使用StatefulService 和IReliableDictionary。
目前,我会在任何需要这本词典的地方拨打StateManager.GetOrAddAsync<IReliableDictionary>。
最佳实践是在StatefulService 的OnOpenAsync 方法中只调用一次StateManager.GetOrAddAsync<IReliableDictionary> 并将返回值存储在成员中吗?
【问题讨论】:
标签:
azure
azure-service-fabric
service-fabric-stateful
reliable-dictionary
【解决方案1】:
根据官方文档here,不建议存储可靠的集合引用。
我们不建议您保存对可靠集合的引用
类成员变量或属性中的实例。必须特别小心
确保将引用设置为一个实例
服务生命周期中的时间。可靠状态管理器处理
这对您有用,并且针对重复访问进行了优化。
【解决方案2】:
没关系。 I've asked it 产品团队收到此回复:
您可以在本地缓存 GetOrAddAsync 的结果,但这并不重要,因为 statemanager 会自动为您执行此操作。有些人认为保持本地更容易,但我从来没有这样做,因为现在你有一些生命周期的事情要处理(你有一个不受状态管理器获取锁保护的东西的引用,所以你可以看到一些不同的异常,但你什么都没有无论如何都不必处理)。
我插入的斜体文字。