Сериализация (в программировании) - процесс превращения любой структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации - восстановление начального состояния структуры данных из битовой последовательности.
Сериализация используется для передачи объектов по сети и для сохранения их в файлы. Например, нужно создать распределенный приложение, разные части которого имеют обмениваться данными со сложной структурой. В таком случае для типов данных, которые предполагается передавать, пишется код, осуществляющий сериализации и десериализацию. Объект заполняется нужными данными, затем вызывается код сериализации, в результате получается, например, XML -документ. Результат сериализации передается принимающей стороне, например, по электронной почте или HTTP. Приложение-получатель создает объект того же типа и вызывает код десериализации, в результате получая объект с тем же данным, которые были в объекте приложения-отправителя. По такой схеме работает, например, Сериализация объектов через SOAP вMicrosoft.NET.
Применение сериализации
Сериализация предоставляет несколько полезных возможностей:
- метод реализации хранения объектов, который более удобен, чем запись их свойств в текстовый файл на диск и повторная сборка объектов чтением файлов;
- метод осуществления удаленных вызовов процедур, как, например, в SOAP;
- метод распространения объектов, особенно в технологиях компонентно-ориентированного программирования, таких как COM и CORBA;
- метод выявления изменений в данных, которые изменяются со временем.
Для наиболее эффективного использования данных возможностей необходимо поддерживать независимость от архитектуры. Например, необходимо иметь возможность надежно воспроизводить сериализований поток данных, независимо от порядка байтов, используемый в этой архитектуре. Это означает, что наиболее простая и быстрая процедура прямого копирования участка памяти, в котором размещается структура данных, не может работать надежно для всех архитектур. Сериализация структур данных в архитектурно-независимый формат означает, что не должно возникать проблем из различный порядок следования байтов, механизмов распределения памяти или различий представления структур данных в языках программирования.
Любой из схем сериализации свойственно то, что кодирование данных последовательно по определению, и выборка любой части сериализованои структуры данных требует, чтобы весь объект был считан с начала до конца и был восстановлен. Во многих программах такая линейность полезна, так как позволяет использовать простые интерфейсы ввода / вывода общего назначения для сохранения и передачи состояния объекта. В приложениях, где важна высокая производительность, возможно будет лучше использовать более сложную, нелинейную организацию хранения данных.
Сериализация научных данных
Для научных наборов данных, имеющих большой объем, таких как данные, получаемые со спутников, или численные модели климата, погоды и океанов, были разработаны специальные бинарные стандарты сериализации, например HDF, netCDF и старше GRIB.