Service Fabric 模型部分数据丢失

Service Fabric model partial data loss

我们有一个将数据保存在 ReliableDictionary 中的有状态服务。我们注意到今天此服务丢失了少量数据。

我们最近进行了一次代码更新,更改了存储在字典中的其中一个模型的名称空间和程序集,但数据协定本身没有变化。

之前:

namespace MainProject.StatefulService.Models
{
   [DataContract]
   public class ColorElement
   {
      [DataMember(Name = "Color")]
      private readonly Color color;

      // Shortened for clarity.
   }
}

之后:

namespace MainProject.Models
{
   [DataContract]
   public class ColorElement
   {
      [DataMember(Name = "Color")]
      private readonly Color color;

      // Shortened for clarity.
   }
}

有没有什么方法可以改变模型的 assembly/namespace 导致可靠词典出现问题?

如此处所述:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-data-serialization

更改 class 名称或命名空间会影响您的序列化格式。

我没有试验过,但我假设如果您在 datacontract 属性中指定名称和命名空间,它们将采用序列化格式而不是 class 和程序集命名空间,以便对class 之后不会影响序列化格式 - 但这只是基于我对 WCF 的习惯的推测,而不是任何与结构相关的东西。