Частичная потеря данных в модели 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, а не на какой-либо ткани.

Другие вопросы по тегам