Частичная потеря данных в модели Service Fabric
У нас есть служба с сохранением состояния, которая сохраняет данные в 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.
}
}
Есть ли способ, которым изменение сборки / пространства имен модели может вызвать проблемы в надежном словаре?
1 ответ
Как описано здесь: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-data-serialization
Изменение имени класса или пространства имен повлияет на ваш формат сериализации.
Я не экспериментировал с этим, но предположил бы, что если вы укажете name и namespace в вашем атрибуте datacontract, они будут в сериализованном формате вместо пространства имен класса и сборки, так что любые изменения в классе позже не повлияют на сериализацию формат - но это всего лишь предположение, основанное на том, к чему я привык с WCF, а не на какой-либо ткани.