Сериализация объектов с помощью SoapFormatter

Сериализация объектов с помощью SoapFormatter

Следующим вариантом является тип SoapFormatter. Тип SoapFormatter сохраняет объектный граф в сообщении SOAP (Simple Object Access Protocol – простой протокол доступа к объектам), что делает этот вариант форматирования прекрасным выбором при передаче объектов средствами удаленного взаимодействия по протоколу HTTP. Если вы не знакомы со спецификациями SOAP, не волнуйтесь. В сущности, SOAP определяет стандартный процесс, с помощью которого можно вызывать методы не зависящим от платформы и ОС способом (мы рассмотрим SOAP чуть более подробно в последней главе этой книги при обсуждении Web-сервисов XML).

В предположении о том, что вы установили ссылку на компоновочный блок System.Runtime.Serialization.Formatters.Soap.dll, можно реализовать сохранение и восстановление JamesBondCar в формате сообщения SOAP с помощью замены BinaryFormatter на SoapFormatter. Рассмотрите следующий программный код, который выполняет сериализацию объекта в локальный файл с именем CarData.soap.

using System.Runtime.Serialization.Formatters.Soap;

static void Main(string[] args) {

 …

 // Сохранение объекта в файл CarData.soap в формате SOAP.

 SoapFormatter soapFormat = new SoapFormatter();

 fStream = new FileStream("CarData.soap", FileMode.Create, FileAccess.Write, FileShare.None);

 soapFormat.Serialize(fStream, jbc);

 fStream.Close();

 Console.ReadLine();

}

Как и ранее, здесь просто используются Serialize() и Deserialize() для перемещения объектного графа в поток и восстановления его из потока. Если открыть полученный файл *.soap, вы увидите в нем элементы XML, представляющие значения JamesBondCar и взаимосвязи между объектами графа (с помощью лексем #ref). Рассмотрите следующий фрагмент XML-кода, соответствующий конечному результату (для краткости здесь опущены указания на пространства имен XML).

‹SOAP-ENV:Envelope xmlns:xsi="…"›

 ‹SOAP-ENV:Body›

  ‹a1:JamesBondCar id="ref-1" xmlns:a1="…"›

   ‹canFly›true‹/canFly›

   ‹canSubmerge›false‹/canSubmerge›

   ‹theRadio href="#ref-3"/›

   ‹isHatchBack›false‹/isHatchBack›

  ‹/a1:JamesBondCar›

  ‹a1:Radio id="ref-3" xmlns:a1="…"›

   ‹hasTweeters›true‹/hasTweeters›

   ‹hasSubWoofers›false‹/hasSubWoofers›

   ‹stationPresets href="ref-4"/›

  ‹/a1:Radio›

  ‹SOAP-ENC:Array id="ref-4" SOAP-ENC:arrayType="xsd:dooble[3]"›

   ‹item›89.3‹/item›

   ‹item›105.1‹/item›

   ‹item›97.1‹/item›

  ‹/SOAP-ENC:Array›

 ‹/SOAP-ENV:Body›

 ‹/SOAP-ENV:Envelope›

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Выделение объектов с помощью фильтров

Из книги AutoCAD 2009 автора Орлов Андрей Александрович

Выделение объектов с помощью фильтров Одним из способов выделения является применение фильтров. Используя команду FILTER или команду Quick Select (Быстрый выбор) из меню кнопки Utilities (Утилиты) на вкладке Home (Основная) ленты, вы можете отфильтровать наборы выделения по свойствам


Извлечение данных из объектов рисунка с помощью специального мастера

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Извлечение данных из объектов рисунка с помощью специального мастера Рассмотрим порядок работы с мастером извлечения данных.1. Запустите команду вставки таблицы в рисунок (допустим, что рисунок содержит некоторые объекты, атрибуты которых вы хотели бы внести в эту


ГЛАВА 17. Сериализация объектов

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

ГЛАВА 17. Сериализация объектов Из главы 16 вы узнали о функциональных возможностях, предоставленных пространством имея System.IO. Было показано, что это пространство имен содержит множество типов ввода-вывода, которые могут использоваться для чтения и сохранения данные в


Сериализация объектов с помощью BinaryFormatter

Из книги AutoCAD 2010 автора Орлов Андрей Александрович

Сериализация объектов с помощью BinaryFormatter Чтобы показать, как сохранить экземпляр JamesBondCar в физическом файле, давайте используем тип BinaryFormatter. Подчеркнем снова, что двумя ключевыми методами типа BinaryFormatter являются Serialize() и Deserialize().• Serialize(). Сохраняет объектный граф в


Реконструкция объектов с помощью BinaryFormatter

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Реконструкция объектов с помощью BinaryFormatter Теперь предположим, что вы хотите прочитать сохранённые данные JamesBondCar из двоичного файла назад в объектную переменную. Программно открыв CarData.dat (с помощью метода OpenRead()), вызовите метод Deserialize() объекта BinaryFormatter. Метод Deserialize()


Сериализация объектов с помощью XmlSerializer

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Сериализация объектов с помощью XmlSerializer Вдобавок к SOAP и двоичному формату, компоновочный блок System.Xml.dll предлагает третий формат, обеспечиваемый типом System.Xml.Serialization. XmlSerializer который может использоваться для сохранения состояния данного объекта в виде "чистого" XML в


Хостинг удаленных объектов с помощью сервиса Windows

Из книги VBA для чайников автора Каммингс Стив

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


Хостинг удаленных объектов с помощью IIS

Из книги автора

Хостинг удаленных объектов с помощью IIS Хостинг удаленного компоновочного блока с помощью сервера IIS (Internet Information Server – информационный сервер Интернет) даже проще, чем создание сервиса Windows, поскольку сервер IIS специально запрограммирован на то, чтобы получать


Получение множества наборов результатов с помощью объектов чтения данных

Из книги автора

Получение множества наборов результатов с помощью объектов чтения данных Объекты чтения данных могут получать от одного объекта команды множество наборов результатов. Например, чтобы получить все строки таблицы Inventory и все строки таблицы Customers, можно указать оба


Изменение содержимого таблиц с помощью объектов команд

Из книги автора

Изменение содержимого таблиц с помощью объектов команд Вы только что убедились, что метод ExecuteReader() извлекает объект чтения данных, позволяющий проверить результаты выполнения SQL-оператора Select в однонаправленном и доступном только для чтения потоке. Но если вы хотите


Манипулирование данными с помощью объектов

Из книги автора

Манипулирование данными с помощью объектов После создания таблиц можно приступить к манипуляциям с данными: вводить данные в таблицы, извлекать их из таблиц, проверять и изменять структуру таблиц. Для манипулирования структурой таблиц используются команды определения


Выделение объектов с помощью фильтров

Из книги автора

Выделение объектов с помощью фильтров Одним из способов выделения является применение фильтров. Используя команду filter или кнопку Quick Select (Быстрый выбор) из группы Utilities (Утилиты) на вкладке Home (Основная) ленты, вы можете отфильтровать наборы выделения по свойствам


Извлечение данных из объектов с помощью специального мастера

Из книги автора

Извлечение данных из объектов с помощью специального мастера Рассмотрим порядок работы с мастером извлечения данных.1. Запустите команду вставки таблицы (допустим, что документ содержит некоторые объекты, атрибуты которых вы хотели бы внести в эту таблицу (рис. 4.54)).


Глава 10 Разработка СОМ-объектов с помощью языков сценариев 

Из книги автора

Глава 10 Разработка СОМ-объектов с помощью языков сценариев  Во всех сценариях WSH, которые мы рассматривали ранее, создавались экземпляры внешних СОМ-объектов, являющихся серверами автоматизации, после чего мы не задумываясь использовали свойства и методы этих объектов.


10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore

Из книги автора

10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore Библиотека PStore реализует хранение объектов Ruby в файле. Объект класса PStore может содержать несколько иерархий объектов Ruby. У каждой иерархии есть корень, идентифицируемый ключом. Иерархии считываются с диска


Управление наборами данных с помощью объектов Collection

Из книги автора

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