Продолжается подписка на наши издания! Вы не забыли подписаться?

Сериализация в .NET

Сериализация – это одна из ключевых частей .NET Framework. Инфраструктура remoting, включающая Web Services и SOAP, зависит от сериализации, представляющей собой процесс редуцирования экземпляра объекта в транспортабельный формат, который представляет высокоточное представление объекта. Интересен этот процесс тем, что можно взять сериализованное представление, перенести его в другой контекст, например, на другую машину, и восстановить исходный объект. При эффективной поддержке сериализации можно сохранить объект простым сохранением сериализованного представления на диск. Можно также переносить объекты с помощью простой сериализации в поток байтов, хранящихся в памяти и передачи этого потока на другую машину, понимающую формат сериализации.

В .NET сериализация часто используется с потоками (stream), абстракциями, применяемыми для чтения и записи в файлы, маршалинга данных по сети или управления памятью.

Как использовать сериализацию?

Сериализация в основном выполняется классами и интерфейсами пространства имен System.Runtime.Serialization. Для сериализации объекта нужно создать две вещи:

Код, нужный для выполнения сериализации в .NET, крайне прост. Большая часть этого кода похожа на приведенный ниже шаблонный код, сериализующий объект в файловый поток, используя класс BinaryFormatter:

public static void WriteToFile(BaseballPlayer bp, String filename)
{
    Stream str = File.OpenWrite(filename);
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(str, bp);
    str.Close();
} 

Использование BinaryFormatter позволяет получить компактное представление на диске, хотя это и не та форма, которую легко читать с помощью текстового редактора. Если требуется более человеколюбивое представление, используйте SOAP-форматер, как показано ниже:

public static void WriteToFile(SerialCircle shape, String filename)
{
    Stream str = File.OpenWrite(filename);
    SoapFormatter formatter = new SoapFormatter();
    formatter.Serialize(str, shape);
    str.Close();
}
<...>
Прочитать статью полностью вы можете в печатной версии журнала

Copyright © 1994-2016 ООО "К-Пресс"