Что такое сериализация? - PullRequest
119 голосов
/ 11 марта 2009

Я только начинаю программировать на ООП и хотел бы знать, что означает сериализация на языке ООП?

Ответы [ 14 ]

115 голосов
/ 11 марта 2009

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

Десериализация - это обратный процесс: превращение потока байтов в объект в памяти.

69 голосов
/ 30 августа 2014

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

Десериализация - полная противоположность - извлечение потока байтов из сетевого или постоянного хранилища и преобразование его обратно в объект с тем же состоянием .

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

  1. XML : преобразовать объект в XML, передать его по сети или сохранить в файле / db. Получить его и преобразовать обратно в объект с таким же состоянием. В Java мы используем библиотеку JAXB (архитектура Java для привязки XML) (из java 6 она поставляется в комплекте с JDK).
  2. JSON : То же самое можно сделать путем преобразования объекта в JSON (нотация JavaScript-объекта). Опять же, есть библиотека GSON, которую можно использовать для этого.
  3. Или мы можем использовать сериализацию, предоставляемую самим языком ООП. Например, в Java вы можете сериализовать Object, сделав его реализующим Serializable interface и записав его в Object Stream.
43 голосов
/ 01 февраля 2018

Объяснение через изображение:

Rex, my dog, is serialised!

Объяснение по аналогии:

Предположим, я разговариваю со своим приятелем по телефону и рассказываю ему о моем новом щенке.

Вот моя проблема: щенок - живое, дышащее млекопитающее. Как мне передать щенка по телефонной линии? Я не могу физически положить своего щенка в телефонную трубку.

Так что вместо этого мне придется передать изображение щенка по телефону. Другими словами, я затем сериализую свою собаку Рекс и посылаю ему сериализованную версию Рекса по телефонной линии:

{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }

Это идеальное представление - сериализация моей собаки.

Резюме:

Сериализация в основном означает превращение моего собачьего рекс во что-то еще - объект JSON - который затем может быть передан по телефонной линии в виде последовательности 1 и 0. Мой приятель из Нью-Йорка может затем перевести эти 1 и 0 обратно в объект JSON, чтобы у него было идеальное представление о моей собаке Рекс. Простой!

Есть вопросы? Просто оставьте комментарий.

14 голосов
/ 11 марта 2009

Проверьте это, это даст вам хорошее объяснение:

http://en.wikipedia.org/wiki/Serialization

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

EDIT: Еще один термин, с которым вы можете столкнуться - это маршаллинг / демаршаллинг. Маршаллинг - это в основном та же концепция, что и сериализация, а демаршаллинг - то же, что десериализация.

5 голосов
/ 01 февраля 2018

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

...

На этом рисунке показан общий процесс сериализации

Overall process of serialization

...

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

С https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/

(акцент мой)

5 голосов
/ 26 февраля 2010

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

2 голосов
/ 11 марта 2009

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

, чтобы вы могли сохранить эту последовательность в файл, базу данных или отправить по сети.

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

Веб-сервисы и AJAX - наиболее распространенный пример сериализации. Объекты сериализуются перед отправкой ответа клиенту.

1 голос
/ 23 сентября 2017

Сериализация - это процесс преобразования Java, C # или любого другого (поддерживаемого ООП-языками) объекта в транспортабельную форму. Таким образом, он будет транспортироваться по сети или храниться на диске. Чтобы класс был сериализуемым, он должен реализовывать сериализуемый интерфейс.

1 голос
/ 08 ноября 2012

сериализация - это не что иное, как передача объекта, поддерживаемого Java, в файл, поддерживаемый формой

                         (OR)

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

1 голос
/ 11 марта 2009

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

Просто относитесь к нему, как к созданию печенья - объект - это тесто, печенье - это сериализованное тесто.

Таким образом, "сериализуя", вы можете отправить куки своему другу.

Что-то в этом роде: -)

...