АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Структура и сериализация передаваемых данных

Читайте также:
  1. Cбор и подготовка данных
  2. II. Работа в базе данных Microsoft Access
  3. II. СТРУКТУРА отчетА по Практике по профилю специальности
  4. III. СТРУКТУРА КУРСА
  5. III. Структура курсовой и ВКР
  6. IV Структура и стратегия фирмы, внутриотраслевая конкуренция
  7. LDPC коды: структура
  8. V. ИНФРАСТРУКТУРА
  9. А.П. Цыганков. Современные политические режимы: структура, типология, динамика. (учебное пособие) Москва. Интерпракс, 1995.
  10. А4. Знание о файловой системе организации данных
  11. Автоматическое управление памятью ссылочных данных
  12. Адміністративно-господарська структура лісгоспу

Сериализация – процесс перевода какой – либо структуры данных в последовательность битов. Сериализация используется для передачи объектов по сети и для сохранения их в файлы. Например, нужно создать распределённое приложение, разные части которого должны обмениваться данными со сложной структурой. В таком случае для типов данных, которые предполагается передавать, пишется код, который осуществляет сериализацию и десериализацию. Приложение-получатель создаёт объект того же типа и вызывает код десериализации, в результате получая объект с теми же данными, что были в объекте приложения-отправителя. По такой схеме работает, например, сериализация объектов через SOAP в Microsoft.NET. Полный список способов передачи данных и сериализации:

· Использование контрактов данных (DataContractSerializer);

· Использование класса XmlSerializer

· Использование контрактов сообщений

· Использование класса сообщений (Message)

· Изменение структуры сообщения на прямую (существует несколько способов)

По умолчанию в WCF в качестве сериализатора используется класс DataContractSerializer. Так как структура СМЭВ сообщения не является сложной, поэтому, в своей работе, я использовал класс XmlSerializer и контракт сообщений. Класс XmlSerializer имеет одно важное преимущество, по сравнению с контрактами данных – это возможность добавить префиксы пространства имен к элементу.

Структура данных возвращаемого класса представлена в главе 3. Для переключения способа серализации, в интерфейсе класса, для вызываемого метода указываем атрибут [XmlSerializerFormat] (Рис. 7).

Чтобы сериализовать поля и классы, используется три вида атрибутов:

· XmlRoot – сериализует класс, как корневой элемент XML.

· XmlElement – сериализует поле класса, как элемент XML.

· XmlAttribute – сериализует поле класса, как атрибут элемента XML.

Пример сериализации класса ActorType представлен на рисунке 9. В XML будет выглядеть:

<Actor>

<Code/>

<Name/>

</Actor>

Чтобы задать пространство имен (namespace) элемента, нужно указать свойство Namespace в атрибуте, пример:

[XmlRoot(Namesapce = http://www.testnamesapce.com/ru)]

Объявление свойства [XmlNamesapceDeclaration] позволяет задать для элемента XML префикс пространства имен (Рис. 10)

Рисунок 9 – Применение свойств XmlRoot и XmElement

Рисунок 10 – Применение свойства XmlNamespaceDeclaration

Выше описан способ сериализации при использовании класса XmlSerializer. Все возвращаемые и принимаемые классы добавляются в элемент <body>, но сообщение запрос будет содержать элемент <smevheader> в блоке <header>. Для добавление произвольного элемента в блок <header> используется контракты сообщений. Указываем атрибут [MessageContract] для возвращаемого или, получаемого в виде контракта, класса и используем два атрибута:

· [MessageBodyMember] – сериализует объект, как элемент блока <body>

· [MessageHeader] – сериализует объект, как элемент блока <header>

Пример использования контракта сообщения приведен на рисунке 11.

Рисунок 11 – Использование контракта сообщения

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Поиск по сайту:



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