Spec-Zone .ru
спецификации, руководства, описания, API
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT Спецификация Сериализации Объекта Java
версия 6.0

Управление версиями Сериализуемых Объектов






ГЛАВА 5


Темы:


5.1 Краткий обзор

Когда сериализация использования объектов Java, чтобы сохранить состояние в файлах, или как блобы в базах данных, потенциал возникает, что версия класса, читая данные отличается чем версия, которая записала данные.

Управление версиями повышает некоторые фундаментальные вопросы об идентификационных данных класса, включая то, что составляет совместимое изменение. Совместимое изменение является изменением, которое не влияет на контракт между классом и его вызывающими сторонами.

Этот раздел описывает цели, предположения, и решение, которое пытается рассмотреть эту проблему, ограничивая виды позволенных изменений и тщательно выбирая механизмы.

Предложенное решение обеспечивает механизм для "автоматической" обработки классов, которые развиваются, добавляя поля и добавляя классы. Сериализация обработает управление версиями без специфичных для класса методов, которые будут реализованы для каждой версии. Потоковый формат может быть пересечен, не вызывая специфичные для класса методы.


5.2 Цели

Цели к:


5.3 Предположения

Предположения то, что:


5.4 Кто Ответственен за Управление версиями Потоков

В развитии классов это - ответственность развитого (позже версия) класс, чтобы поддержать контракт, установленный неразвитым классом. Это принимает две формы. Во-первых, развитый класс не должен повредить существующие предположения об интерфейсе, обеспеченном оригинальной версией, так, чтобы развитый класс мог использоваться вместо оригинала. Во-вторых, связываясь с оригиналом (или предыдущий) версии, развитый класс должен предоставить достаточную и эквивалентную информацию, чтобы позволить более ранней версии продолжать удовлетворять неразвитый контракт.

Частный протокол сериализации и контракт с отношениями супертипа между развитыми и неразвитыми классами и их экземплярами

В целях обсуждения здесь, каждый класс реализует и расширяет интерфейс или контракт, определенный его супертипом. Новые версии класса, например foo', должен продолжать удовлетворять контракт для foo и может расширить интерфейс или изменить его реализацию.

Передача между объектами через сериализацию не является частью контракта, определенного этими интерфейсами. Сериализация является частным протоколом между реализациями. Это - обязанность реализаций связаться достаточно, чтобы позволить каждой реализации продолжать удовлетворять контракт, ожидаемый его клиентами.


5.5 Совместимое Развитие Типа Java

Спецификация языка Java обсуждает совместимость на уровне двоичных кодов классов Java, поскольку те классы развиваются. Большая часть гибкости совместимости на уровне двоичных кодов прибывает из использования позднего связывания символьных ссылок для имен классов, интерфейсов, полей, методов, и так далее.

Следующее является принципиальными аспектами проекта для управления версиями сериализированных объектных потоков.


5.6 Введите Изменения, Влияющие на Сериализацию

С этими понятиями мы можем теперь описать, как проект справится с различными случаями развивающегося класса. Случаи описываются с точки зрения потока, записанного некоторой версией класса. Когда поток читается назад той же самой версией класса, нет никакой потери информации или функциональности. Поток является единственным источником информации об исходном классе. Его описания класса, в то время как подмножество исходного описания класса, достаточны, чтобы подойти данные в потоке с версией воссоздаваемого класса.

Описания с точки зрения потока, считанного, чтобы воссоздать или более раннюю или более позднюю версию класса. В языке систем RPC это - "получатель, делает правильную" систему. Писатель пишет его данные в самой подходящей форме, и получатель должен интерпретировать ту информацию, чтобы извлечь части, в которых это нуждается и заполнить части, которые не доступны.


5.6.1 Несовместимые Изменения

Несовместимые изменения к классам являются теми изменениями, для которых не может сохраняться гарантия функциональной совместимости. Несовместимые изменения, которые могут произойти, развивая класс:


5.6.2 Совместимые Изменения

Совместимые изменения к классу обрабатываются следующим образом:



СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT
Авторское право © 2005, 2010, Oracle и/или его филиалы. Все права защищены.