Какую проблему решает шаблон прокси сериализации, который не решает шаблон сериализации? - PullRequest
2 голосов
/ 10 мая 2011

Мне нужно иметь возможность сериализовать класс в строку, и я знаю 2 шаблона:

1) (нормальный) Шаблон сериализации 2) Шаблон сериализации прокси

Я прочитал http://lingpipe -blog.com / 2009/08/10 / serializing-immutable-singletons-serialization-proxy / (единственный сайт в Google, который говорит о сериализации прокси шаблон) и до сих пор не может найти преимущество или преимущество использования этого шаблона. Может ли кто-нибудь объяснить, что именно представляет собой шаблон сериализации прокси-сервера, или, скорее, какую именно проблему решает шаблон сериализации прокси-сервера, который не решает шаблон нормальной сериализации?

1 Ответ

1 голос
/ 10 мая 2011

Сериализация по умолчанию:

  • Создает несколько экземпляров классов, которые должны быть синглетонами при десериализации
  • Возможно, есть проблемы с измененными десериализованными объектами "на лету" (да?)

Второй пункт спорен.Кто изменил данные bytestream?Если это могло произойти, у нас есть более серьезная проблема, чем десериализация: безопасность.Подписанные / зашифрованные потоки также решат проблему сериализации.

Первый - настоящий.Сериализуйте один и тот же синглтон несколько раз, десериализуйте на другой стороне и упс!у вас есть несколько синглетонов (мультитоны?).Хотя эту проблему ИМХО проще решить, сделав из Enum синглтон, тогда JVM принудительно задействует сам единственный экземпляр.

ОБНОВЛЕНИЕ

Как указал Стив Б.Постер блога, возможно, неправильно понял / неверно представил то, что он прочитал.Вместо «сериализации, настройки байтов, а затем десериализации» следует читать «сериализация, развертывание новой версии класса, десериализация».Да, это известная проблема, и интерфейс Externalizable позволяет ее аккуратно решить, взяв полный контроль над сериализацией класса, поэтому даже более поздняя версия класса может десериализовать собственные данные из потока, созданного предыдущими версиями (если это возможно)на все).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...