IReliableDictionary 的内容是否已更改?

Has the contents of an IReliableDictionary changed?

我定期对 IReliableDictionary 进行完整备份是 Azure Service Fabric。每 X 分钟我检查一次集合中的元素数量是否发生变化,如果发生变化,我创建一个新备份。

这显然有一个缺点,如果我只是更改字典中某个项目的值,集合大小不会改变并且不会发生备份。

一种解决方案是枚举整个字典并计算集合的整体哈希(假设可以保证项目的顺序)。有没有更好的方法来确定 IReliableDictionary 是否已更改?

StateManager 生成的 few events 可能会有帮助。

TransactionChanged 如果提交事务,则会引发事件。

例如:

public MyService(StatefulServiceContext context)
    : base(MyService.EndpointName, context, CreateReliableStateManager(context))
{
    this.StateManager.TransactionChanged += this.OnTransactionChangedHandler;
}