Каково значение понятия сериализации на языках программирования?
когда мы используем Serializable
атрибут выше класса, каково значение?
Допустим, у вас есть два приложения, которые работают на двух разных физических машинах. Оба приложения должны обмениваться данными, которые обычно используются обоими приложениями. Эти приложения взаимодействуют друг с другом для обмена данными с некоторыми носителями. Эти носители могут быть файловой системой, TCP- или UDP-соединениями или любым другим подходящим сетевым протоколом или могут быть прямым обменом данными в памяти. Любой из этих носителей будет понимать только данные, описанные в виде серии битов. Поэтому, когда одному приложению необходимо отправить значение 10 другому, значение 10 будет отправлено как его двоичное представление 1010, и вы также передадите некоторую информацию, описывающую 1010. Эта метаинформация также будет серией битов, которую может использовать другое приложение. легко понять. Хотя это было легко.
Возьмем другой пример, в котором эти два приложения должны обмениваться более сложным, не примитивным типом данных. Допустим, им нужно обмениваться объектами типа Book, где Book - это настраиваемый класс в вашем приложении, и оба приложения имеют определение типа Book.
public class Book
{
Book() { }
public long BookId { get;set; }
public string Author { get;set; }
public string Title { get;set; }
}
Как вы будете обмениваться объектами шрифтовой книги между двумя приложениями? Чтобы иметь возможность совместно использовать объект между двумя приложениями, вам необходимо иметь возможность преобразовывать объекты Book в двоичное представление. Здесь на сцену выходит сериализация.
С помощью сериализации вы можете определить, как объект может быть преобразован в его двоичное представление. Принимающее приложение будет выполнять обратный процесс, то есть десериализацию, которая создает объект Book из его двоичного представления.
Сериализация - это процесс преобразования объекта в поток байтов. Десериализация - это процесс, противоположный создание объекта из потока байтов.
Сериализация / десериализация в основном используется для передачи объекты (например, во время удаленного взаимодействия) или для сохранения объектов (например, в файл или базу данных). Сериализацию можно определить как процесс сохранения состояния объекта в хранилище Средняя. Во время этого процесса публичные и частные поля объекта и имя класса, включая сборки, содержащие класс, преобразуются в поток байтов, которые затем записываются в поток данных. Когда объект впоследствии десериализуется, точный клон оригинальный объект создан.
подробнее об этом: http://www.allinterview.com/showanswers/20627.html
Нет лучшего объяснения, чем то, которое дано в википедии.
В компьютерной науке, в контексте хранения и передачи данных, сериализация - это процесс преобразования структуры данных или объекта в последовательность битов, чтобы ее можно было хранить в файле или буфере памяти, или передавать по сети соединение, чтобы быть "воскрешенным" позже в той же или другой компьютерной среде.
http://en.wikipedia.org/wiki/Serialization
Кроме того, атрибут Serializable не может быть использован в методах. На это указывает использование атрибута
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, Inherited = false)]