Что такое «сериализованный» объект в программировании? - PullRequest
39 голосов
/ 31 января 2010

Я видел термин «сериализованный» повсюду, но никогда не объяснял. Пожалуйста, объясните, что это значит.

Ответы [ 6 ]

52 голосов
/ 31 января 2010

Сериализация обычно относится к процессу преобразования абстрактного типа данных в поток байтов (иногда вы также сериализуетесь в текстовый, XML или CSV или другие форматы. Важно то, что это простой формат, который можно читать / написано без понимания абстрактных объектов, которые представляют данные). При сохранении данных в файл или передаче по сети вы не можете просто сохранить объект MyClass, вы можете хранить только байты. Таким образом, вам нужно взять все данные, необходимые для восстановления вашего объекта, и превратить их в последовательность байтов, которые можно записать на целевое устройство, а в более поздний момент прочитать и десериализовать, восстановив ваш объект.

12 голосов
/ 31 января 2010

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

Десериализация - это процесс использования сериализованного состояния для восстановления объекта из сериализованного состояния в его исходное состояние.

5 голосов
/ 31 января 2010

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

Другое значение относится к последовательному или параллельному выполнению, т.е. гарантирует, что только один поток выполнения делает что-то одновременно. Например, если вы собираетесь читать, изменять и записывать переменные, вам необходимо убедиться, что один поток завершает последовательность чтения, изменения и записи, прежде чем другой сможет ее запустить.

5 голосов
/ 31 января 2010

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

Типичным примером является XML-сериализация для использования в веб-сервисах - у меня есть экземпляр класса на сервере, и мне нужно отправить его через Интернет, сначала я сериализую его в XML, что означает создание XML-версии эти данные в классе, один раз в XML я могу использовать транспорт, как HTTP, чтобы легко отправить его.

Существует несколько форм сериализации, таких как XML или JSON.

2 голосов
/ 31 января 2010

Что они сказали. Слово «последовательный» относится к тому факту, что байты данных должны быть помещены в некоторый стандартизированный порядок записи в последовательное запоминающее устройство, такое как поток вывода файла или последовательная шина. На практике необработанных байтов редко бывает достаточно. Например, адрес памяти из программы, которая сериализует структуру данных, может быть недействительным в программе, которая восстанавливает объект из сохраненных данных. Таким образом, протокол требуется. За эти годы было много, много стандартов и внедрений. Я помню одну из середины 80-х годов под названием XDR, но она была не первой.

0 голосов
/ 14 августа 2017
  • У вас есть данные в определенном формате (например, список, карта, объект и т. Д.)
  • Вы хотите передать эти данные (например, через API или вызов функции)
  • Транспортное средство поддерживает только определенные типы данных (например, JSON, XML и т. Д.)
  • Сериализация : вы преобразуете существующие данные в поддерживаемый тип данных, чтобы их можно было транспортировать.

Ключ заключается в том, что вам необходимо передавать данные, а средства, с помощью которых вы переносите, допускают только определенные форматы. Ваш текущий формат данных не разрешен, поэтому вы должны его «сериализовать». Следовательно, как Митч ответил:

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

...