Поделиться через


Постоянное хранилище

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

Среда CLR управляет способом хранения объектов в памяти и обеспечивает механизм автоматической сериализации с помощью reflection. При сериализации объекта имя класса, сборка и все члены данных экземпляра класса записываются в хранилище. Объекты часто содержат ссылки на другие экземпляры в переменных-членах. При сериализации класса модуль сериализации отслеживает уже сериализованные объекты, на которые указывает ссылка, чтобы предотвратить повторную сериализацию объекта. Архитектура сериализации, обеспечиваемая .NET Framework, автоматически правильно обрабатывает графы объектов и циклические ссылки. Единственным требованием к графам объектов является то, что все объекты, на которые ссылается сериализуемый объект, также должны быть отмечены как Serializable (дополнительные сведения см. в разделе Базовая сериализация). Если этого не сделать, при попытке сериализовать неотмеченный объект модулем сериализации будет выдано исключение.

При десериализации сериализованного класса он создается заново, а значения всех членов данных автоматически восстанавливаются.

См. также

Другие ресурсы

Концепции сериализации
Remote Objects
XML- и SOAP-сериализация