2. В цьому модулі:
Поняття атрибутів
Що таке сериалізація?
Атрибути для сериалізації [Serializable] і
[NonSerializable]
Формати сериалізації
◦ Двійкове форматування. Клас BinaryFormatter
◦ XML-форматування. Клас XmlSerializer
◦ Soap форматування. Клас SoapFormater
2
Andrii Hladkyi
trilobt@gmail.com
3. Поняття атрибутів
Атрибути використовуються при створені класів які можуть
бути сериалізовані
Атрибути представлені у вигляді анотацій програмного коду,
які можуть застосовуватись до заданого типу (класу,
інтерфейсу, структури), а також до полів типу.
Самі атрибути в платформі .Net являються типами (класами),
що розширюють базовий клас System.Atribute
Andrii Hladkyi
trilobt@gmail.com 3
5. Що таке сериалізація?
Це збереження стану об’єкта в байтовий потік, з метою його
(об’єкта) подальшого відновлення.
Збережена послідовність байт містить всю необхідну інформацію
для відновлення об’єкта.
За допомогою сериалізації просто зберігати великі об’єми даних (в
різних форматах).
Збереження даних за допомогою сервісів сериалізації набагато
зручніше, ніж пряме використання засобів читання/запис, в
просторі імен System.IO
Використання сериалізації також відіграє важливу роль при
копіюванні об’єкта на віддалений комп’ютер
Andrii Hladkyi
trilobt@gmail.com 5
6. Атрибути для сериалізації [Serializable] і [NonSerializable]
Щоб зробити об’єкт доступним серверу сериалізації .Net,
достатньо помітити кожний зв’язаний клас атрибутом
[Serializable].
Якщо необхідно, щоб деякі члени даного класу не повинні (чи
не можуть) брати участь в процесі сериалізації, потрібно
позначити відповідне поле атрибутом [NonSerializable].
Атрибути [Serializable] не наслідуються. Тому похідний клас
також потрібно позначити атрибутом [Serializable]
Якщо серіалізуючий клас містить посилання на об'єкти інших
класів, які позначені атрибутом SerializableAttribute, ці об'єкти
також будуть серіалізовані.
Andrii Hladkyi
trilobt@gmail.com 6
8. Формати сериалізації
Серіалізація в двійковий формат. Здійснюється об’єктом класу
BinaryFormatter, що знаходиться в просторі імен
System.Runtime.Serialization.Formatters.Binary
Серіалізація в формат SOAP (Simple Object Access Protocol).
Здійснюється об’єктом класу SoapFormater, який знаходиться в
просторі імен System.Runtime.Serialization.Formatters.Soap.
BinaryFormatter зберігає об’єкт абсолютно точно.
SoapFormater не записуює абсолютні імена і компоновочні
блоки. Даний формат сериалізації призначений для зберігання
стану об’єкта, таким чином, щоб він міг використовуватись в
будь якій операційній системі для будь якого каркасу програми
(.Net, Java, QT), в будь якій мові програмування.
Andrii Hladkyi
trilobt@gmail.com 8
9. Двійкове форматування. Клас
BinaryFormatter
В класі BinaryFormatter визначено два методи, за допомогою
яких виконується серіалізація/десеріалізація об’єктів:
BinaryFormatter сериалізує як відкриті так і закриті поля і
властивості об’єкта.
Andrii Hladkyi
trilobt@gmail.com 9
10. XML форматування
При XML-серіализації відкриті поля і властивості об'єкта або
параметри і повернені значення методів серіалізуются в XML-
потік, складеним на мові XSD (мова визначення схеми XML)
XML-серіалізація призводить до утворення строго типізованих
класів з відкритими властивостями і полями, які
перетворюються в формат XML.
Простір імен System.Xml.Serialization містить класи, необхідні
для серіалізації і десеріалізациї XML.
Andrii Hladkyi
trilobt@gmail.com 10
12. Soap форматування. Клас SoapFormater
SoapFormater зберігає об’єкт в повідомлені SOAP. Даний
варіант форматування є кращим вибором для передачі об’єктів
засобами віддаленої взаємодії по протоколу HTTP.
SOAP визначає стандартний процес, за допомогою якого можна
викликати методи незалежні від платформи і ОС способом для
Web- сервісів XML
SOAP являється XML мовою
Andrii Hladkyi
trilobt@gmail.com 12