Версии профилей ASP.NET? - PullRequest
       11

Версии профилей ASP.NET?

6 голосов
/ 12 августа 2010

Как профили ASP.NET управляют версиями? Я знаю, потому что данные сериализуются, это может быть проблемой, когда с таблицами это не так.

Будет ли генерироваться ошибка сериализации?

Пример: я сохраняю объект v1 в профилях. Я обновляю свое веб-приложение новой версией v2, но база данных по-прежнему содержит объекты v1.

Что произойдет, когда я попытаюсь десериализовать объекты v1 в объекты v2? И каковы лучшие решения этой проблемы?

1 Ответ

3 голосов
/ 18 августа 2010

Обычно ASP.NET обрабатывает данные профиля как пакет свойств - поэтому он, вероятно, пропустит свойство (которое было сохранено в хранилище данных), но удалено из конфигурации. Аналогично, для вновь добавленного свойства будет использоваться значение по умолчанию. Теперь тип свойств также будет иметь значение - если тип свойства является вашим пользовательским классом, то его сериализация будет обрабатываться либо XmlSerializer, либо BinaryFormatter. XmlSerializer является значением по умолчанию и обычно допускает сериализатор (пропущенные свойства будут пропущены и т. Д.). Вы можете использовать атрибуты для управления сериализацией XML. В случае BinaryFormatter, он аналогичен сериализации во время выполнения и, если вы хотите поддерживать управление версиями, лучше всего реализовать ISerializable и решать любые проблемы с версиями. Я не уверен, что произойдет в случае, если у вас есть свойство профиля некоторого типа A, а затем вы удаляете этот тип. Я предполагаю, что вы должны получить ошибку, но я не уверен в этом.

Обычно я предпочитаю свернуть собственную реализацию для поддержки функции профиля пользователя, потому что

  1. По моему вкусу можно управлять такими вещами, как управление версиями и т. Д.
  2. Выбор схемы хранения и хранения может быть независимым (это возможно в ASP.NET профили по индивидуальному заказу профиль провайдера)
  3. Это может быть легко помещено в многоуровневое приложение и данные профиля также доступен для любого не-сети клиенты при необходимости
  4. Хотя это означает переизобретать руль и имея некоторые дополнительные усилия, это стоит для любого программного обеспечения, которое имеет Срок годности более 2-3 лет.
  5. Я могу точно контролировать, когда сохранить / получить данные профиля из хранилище данных.
...