Сериализация: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
См. также: Добавил JSON
Нет описания правки
Строка 1: Строка 1:
'''Сериализация''' (в программировании) — процесс перевода какой-либо [[Список структур данных|структуры данных]] в последовательность [[бит]]ов. Обратной к операции сериализации является операция ''десериализации'' (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.
'''Сериализация''' (в программировании) — процесс перевода какой-либо [[Список структур данных|структуры данных]] в последовательность [[бит]]ов. Обратной к операции сериализации является операция ''десериализации'' (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.


Сериализация используется для передачи [[объект (программирование)|объектов]] по сети и для сохранения их в [[файл]]ы. Например, нужно создать распределённое [[Прикладное программное обеспечение|приложение]], разные части которого должны обмениваться данными со сложной структурой. В таком случае для типов данных, которые предполагается передавать, пишется код, который осуществляет сериализацию и десериализацию. Объект заполняется нужными [[Данные|данными]], затем вызывается код сериализации, в результате получается, например, [[XML]]-документ. Результат сериализации передаётся принимающей стороне, например, по [[Электронная почта|электронной почте]] или [[HTTP]]. Приложение-получатель создаёт объект того же типа и вызывает код десериализации, в результате получая объект с теми же данными, что были в объекте приложения-отправителя. По такой схеме работает, например, сериализация объектов через [[SOAP]] в [[Microsoft .NET]].
Сериализация используется для передачи [[объект (программирование)|объектов]] по сети и для сохранения их в [[файл]]ы. Например, нужно создать распределённое [[Прикладное программное обеспечение|приложение]], разные части которого должны обмениваться данными со сложной структурой. В таком случае для типов данных, которые предполагается передавать, пишется код, который осуществляет сериализацию и десериализацию. Объект заполняется нужными [[Данные|данными]], затем вызывается код сериализации, в результате получается, например, [[XML]]-документ. Результат сериализации передаётся принимающей стороне по, скажем, [[Электронная почта|электронной почте]] или [[HTTP]]. Приложение-получатель создаёт объект того же типа и вызывает код десериализации, в результате получая объект с теми же данными, что были в объекте приложения-отправителя. По такой схеме работает, например, сериализация объектов через [[SOAP]] в [[Microsoft .NET]].


== Применение ==
== Применение ==

Версия от 12:51, 27 июля 2015

Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.

Сериализация используется для передачи объектов по сети и для сохранения их в файлы. Например, нужно создать распределённое приложение, разные части которого должны обмениваться данными со сложной структурой. В таком случае для типов данных, которые предполагается передавать, пишется код, который осуществляет сериализацию и десериализацию. Объект заполняется нужными данными, затем вызывается код сериализации, в результате получается, например, XML-документ. Результат сериализации передаётся принимающей стороне по, скажем, электронной почте или HTTP. Приложение-получатель создаёт объект того же типа и вызывает код десериализации, в результате получая объект с теми же данными, что были в объекте приложения-отправителя. По такой схеме работает, например, сериализация объектов через SOAP в Microsoft .NET.

Применение

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

Сериализация предоставляет несколько полезных возможностей:

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

Сериализация массива в PHP

В PHP массив сериализируется с помощью функции serialize($array), где $array - это массив, а возвращаемое значение функции - текстовая строка. После этого строку можно заново превратить в массив с помощью функции unserialize($string), где - $string - сериализированный массив (строка), а возвращаемое значение функции - начальный массив.

Сериализация научных данных

Для научных наборов данных, имеющих большой объём, таких как данные, получаемые от спутников, или численные модели климата, погоды и океанов, были разработаны специальные бинарные стандарты сериализации, например HDF, netCDF и более старый GRIB.

См. также

Ссылки