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 导致可靠词典出现问题?
更改 class 名称或命名空间会影响您的序列化格式。
我没有试验过,但我假设如果您在 datacontract 属性中指定名称和命名空间,它们将采用序列化格式而不是 class 和程序集命名空间,以便对class 之后不会影响序列化格式 - 但这只是基于我对 WCF 的习惯的推测,而不是任何与结构相关的东西。
我们有一个将数据保存在 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 导致可靠词典出现问题?
更改 class 名称或命名空间会影响您的序列化格式。
我没有试验过,但我假设如果您在 datacontract 属性中指定名称和命名空间,它们将采用序列化格式而不是 class 和程序集命名空间,以便对class 之后不会影响序列化格式 - 但这只是基于我对 WCF 的习惯的推测,而不是任何与结构相关的东西。