Ввод-вывод в C# Сериализация.

Slides:



Advertisements
Similar presentations
EXtreme Programming XP Тема 3. XP Пусть есть некоторая информационная система для банков. В качестве основной валюты для расчетов используется доллар,
Advertisements

© Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP CarePack registration.
EXtreme Programming XP Тема 10. XP 1. Контроллеры (SimpleFormController, UrlFilenameViewController); 2. Модель и представление соединяются посредством.
 Overview  Smart Scan  Predicate Filtering  Column Projection  Join Filtering  Storage Indexes  Hybrid Columnar Compression  Flash Cache.
Языки описания информации Лекция ХХХ. Кафедра «ОСУ» Весенний семестр 2010/2011 уч. года Среда описания ресурсов RDF.
Английский язык. Настоящее совершенное длительное время.
ЗАРЯДКА НА АНГЛИЙСКОМ ЯЗЫКЕ.  Зарядка на уроке английского языка может стать самым любимым и веселым занятием для детей, при том, что она проходит исключительно.
ООП Классы. Данные отдельно, методы отдельно struct Node { Node* next; void* data; }; struct List { Node* first; int size; }; void* allocate() { … } void.
Философская этика Дилемма заключенного Рассмотрим следующий сценарий: Двух заключенных допрашивали по отдельности; А признаетсяA не признается B признается.
Астрометрические каталоги К.В.Куимов, ГАИШ МГУ. Определение астрометрического каталога Астрометрический каталог – понятие неопределённое. Например, это.
Linguistic tools Лекция 5. ПОИСКОВЫЕ СИСТЕМЫ: предыстория Библейские индексы и конкордансы 1247 – Hugo de St. Caro – было задействовано 500 монахов для.
Разработка программного обеспечения (Software Engineering) Ian Sommervillle Часть 4. Реализация ПО: Проектирование с повторным использованием компонентов.
Глава 1 Принципы экономики 4. Кривая производственных возможностей.
Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.
Системы с наследованием. Если систему можно представить в виде : Где - непрерывные функции, то такая система называется системой с наследованием. Математическое.
Системы отбора. Условные обозначения (1) (2) (3) (4) (5) (6) (7) Математическое моделирование процессов отбора2.
Астащенко Александр, 445 группа Научный руководитель: В.Г.Шистеров.
Тушин Александр, ЗАО «Компания Либэр». 1) Предоставление полнотекстовых материалов 2) Поиск по внутреннему содержанию документа 3) Доступность в режиме.
По учебнику учиться, Каждый любит, каждый рад. И учебник помогает Нам добиться всех наград!
Некомпенсаторное агрегирование и рейтингование студентов Авторы: Гончаров Алексей Александрович, Чистяков Вячеслав Васильевич. НФ ГУ ВШЭ 2010 год.
ПРИНЦИПЫ РАЗРАБОТКИ СИСТЕМЫ КЛАССА LEARNING MANAGEMENT SYSTEM И ОПЫТ ЕЕ ИСПОЛЬЗОВАНИЯ НА ФАКУЛЬТЕТЕ МЕНЕДЖМЕНТА Афанасьева С.В. Кафедра бизнес-информатики.
Стресс и здоровье Презентация Нефёдовой Евгении Николаевны, классного руководителя 9 «Б» класса МОУ СОШ № 30 города Энгельса Саратовской области 2010 год.
Учитель математики Кулакова Т.М. МОУ ООШ №15 г.о Новокуйбышевск Самарской области Сентябрь 2011г.
Что за хулиган толкает пассажиров автобуса то вперед, то назад? Этот хулиган, вернее, хулиганка -
Российский государственный педагогический университет им. А.И. Герцена ИНСТИТУТ ДОВУЗОВСКОЙ ПОДГОТОВКИ Дистанционное обучение «Русский язык. Подготовка.
Обзор последних достижений биометрических методов аутентификации РусКрипто 2005.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Особенности Java. Блок static static { } Создание и уничтожение объектов  new – создание объекта  finalyze()
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
Номинация «Лучшее предложение по развитию массового спорта» «Строительство Роллердрома в городе Челябинск» Предложение подготовлено: Бобковой Екатериной.
Freelance: правила игры. КИРИЛЛ РЕЗНИЧЕНКО + СПЕЦИАЛИСТ В ОБЛАСТИ 3D ГРАФИКИ + КООРДИНАТОР ОБРАЗОВАТЕЛЬНОГО ЦЕНТРА КОМПАНИИ AUTODESK ПРИ ВГУ.
Язык SmallTalk «Чистый» объектно- ориентированный язык.
Анатомия класса. Схожесть с др. языками   С# похож на язык Java в том, что он требует, чтобы вся программная логика была заключена в определения типов.
Сравнение различных методов хранения XML в реляционных базах данных и в разных системах. Нгуен Тхань Хуен- 545 группа Руководитель : Б.А. Новиков Рецензент:
1 Ребенок в Сети. Ребенок играет?
Снегурочка «Здравствуйте, ребята! Пишет вам Снегурочка. Мне бы хотелось рассказать, как вы можете стать волшебни- ками. Это совсем нетрудно, просто нужно.
"The European Molecular Biology Open Software Suite"
Пользовательские действия (custom actions) в JSP. JSTL.
Кураева Екатерина Анатольевна, заместитель директора по УВР, учитель математики сш № 29.
Наследование и полиморфизм. «Быть» или «Иметь» а так же «Точно» или «Как получится»
Маршрут, цепь, цикл Маршрутом называют последовательность вершин и ребер, в которой любые два соседних элемента инцидентны (т.е. соединены). Например:
Коллекции. Пространство имен System.Collections Наиболее простой вариант набора элементов — это массив System. Array. Он уже обладает весьма полезными.
События. События Важная роль делегатов заключается в том, что на них основана модель событий С#. Применение событий вовсе не ограничено приложениями с.
Управляемые провайдеры ADO.NET Подключение к базам данных.
Геоинформационные системы Чернышов Алексей Акимович.
Хобби-мастерская рисунки на асфальте Подготовили: Коваленко Денис и Кульбарисова Саша.
TMG Tel: 8 (495) Fax: 8 (477) Technology Management Group ООО «TMG» PayKeeper.
Учитель Антонова О.Я. Учитель Антонова О.Я. Зерноградская поликлиника.
XML Схемы XML документов. XML Schema созданая Microsoft позволяет избавиться от DTD блоков. Основа – использование пространств имен и очень точная типизация.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
«Отгадай символы Рождества»
1 R E F R I G E R A T I O N A N D A I R C O N D I T I O N I N G Как обновить программное обеспечение в AK-SC 255.
Объектные интерфейсы (.NET) «Школа Инноваций InterSystems 2007»
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions.
Алгебра логики это раздел математики, изучающий высказывания, рассматриваемые со стороны их логических значений (истинности или ложности) и логических.
Человеко-машинное взаимодействие Лекция 6 Мерзлякова Екатерина Юрьевна к.т.н. доцент ПМиК.
Переход от XML документов к RDF документам. Цель языка RDF Целью языка RDF (Resource Description Framework) является предоставление стандартного способа.
Saint Petersburg, 2011 Java Lecture Generics. Quiz ArrayList lst = new ArrayList(); Collection c = lst; lst.add("one"); lst.add(“two"); lst.add(“three");
51) [Serializable] public class UserPrefs { public string WindowColor; public int FontSize; } 52) Листинг static void Main(string[] args) { UserPrefs.
What do you think of popular thing?
FAMILIES AND FRIENDS: ARE WE HAPPY TOGETHER?. HOLIDAYS ARE A TIME FOR ADVENTURES AND DISCOVERIES.
‘For and Against’ Essays Useful tips. Plan Introduction - Paragraph 1 (state topic – summary of the topic without giving your opinion) Main Body – Paragraph.
Jokes Jokes Jokes Teacher: Where's your text book? Student: At home. Teacher: What's it doing there? Student: Having a.
Advanced .NET Programming II 6th Lecture
Serialization.
Управление SQL Server c помощью PowerShell
Сетевое взаимодействие
Сортировка, поиск и фильтрация данных в базе данных и выборках
Presentation transcript:

Ввод-вывод в C# Сериализация

Сохранение объектов в .NET В терминах .NET сериализация (serialization) — это термин, описывающий процесс преобразования объекта в линейную последовательность байтов. Обратный процесс, когда из потока байтов, содержащего всю необходимую информацию, объект восстанавливается в исходном виде, называется десериализацией (deserialization).

Сохранение объектов в .NET Вот некоторые основные области, где сериализация дает преимущества: Доступность - компонент можно сохранить в файле и обращаться к нему в любое время. Время жизни - сохранение объекта с ero состоянием продлевает ему жизнь. Обычно, коrда вы закрываете приложение, все связанные с ним объекты aвтоматически уничтожаются. Использование в сетевых приложениях - сложная форма объекта была преобразована в формат, подходящий для передачи через сеть. Надежность – сохраненный объект можно воссоздать "как он есть".

Сериализация в формат XML Сериализация объекта в формат XML имеет определенные преимущества - в первую очередь вы трансформируете специфичную для системы информацию о состоянии в текст, который можно леrко переслать по сети и через брандмауэры. Однако в полученных ХМL данных не сохраняются типы разнообразных используемых полей, вместо этоrо свойства, поля и возвращаемые значения сериализуются в XML формат. Эта особенность полезна, если нужно передавать значения, а не детальную информацию о самом объекте. Класс XmlSerializer из пространства имен System. Xml. Serialization обеспечивает функциональные возможности сериализации и десериализации объектов в ХМL формате.

Сериализация в формат XML Для сериализации класса есть два простых правила: Класс должен поддерживать используемый по умолчанию открытый конструктор без параметров. Это требование связано с тем, что при воссоздании объекта через процесс десериализации сначала экземпляр объекта создается конструктором по умолчанию, а затем из входящеrо потока данных ycтaнaвливаются открытые свойства. Если конструктор по умолчанию отсутствует, .NET Framework не будет знать, как создать объект. Сохраняются только открытые свойства, поддерживающие операции get и set, и открытые члены данных. Это объясняется тем, что процесс сериализации не может обращаться к закрытым и доступным только на чтение элементам данных.

Сериализация в формат XML Для сериализации следует подключить пространство имен System.Xml.Serialization Предположим, у нас есть класс Customer. Customer cust1 = new Customer(); … // создаем поток для записи StreamWriter writer = new StreamWriter("Customer.xml"); // создаем сериализатор XmlSerializer serializer = new XmlSerializer(typeof(Customer)); // и сериализуем объект serializer.Serialize(writer, cust1); writer.Close(); . . .

Десериализация из формата XML . . . // создаем поток для записи FileStream reader= new FileStream("Customer.xml", FileMode.Open, FileAccess.Read); // создаем десериализатор XmlSerializer deserializer = new XmlSerializer(typeof(Customer)); // и десериализуем объект Customer cust2 = (Customer)deserializer.Deserialize(reader);.

Сериализация с помощью объектов форматирования Сериализация с помощью объектов форматирования Чтобы можно было провести сериализацию объекта, каждый класс, который будет участвовать в сериализации, должен обладать атрибутом [Serializable]. // Класс Customer может быть сериализован [Serializable] public class Customer { public int ID; public String FIO; public DateTime Date; public decimal Credit; // Однако нам нет необходимости сохранять это число [NonSerialized] public decimal CurrentPayment; }

Сохранение объектов в .NET

Графы для отношений объектов Car Radio 3 2 1 JamesBondCar [Саг 3, ref 2], [Radio 2], [JamesBondCar 1, ref 3, ref 2]

Графы для отношений объектов Набор взаимосвязанных объектов, сериализованных в поток, называется графом объектов (object graph). Графы позволяют фиксировать отношения объектов друг к другу, и они не соответствуют классическим моделям отношений классов в объектно-ориентированном программировании. Внутри графа каждому из объектов присваивается уникальный номер, который используется только для служебных целей самого графа и которому совершенно не обязательно должно что-то соответствовать в реальном мире. Далее записывается информация о соответствии имени класса этому номеру, информация о всех отношениях этого класса с другими классами и отношениях других классов между собой.

Выбираем объект Formatter После того как мы пометили класс как доступный для сериализации, наша следующая задача — выбрать формат, в котором будет сохранен объектный граф. Пространство имен System.Runtime.Serialization.Formatters включает в себя еще два пространства имен - *.Binary и *.Soap, каждому из которых соответствует один из двух объектов Formatter, которые можно использовать по умолчанию. Класс ВinаryFormatter сериализует объектный граф в компактном потоке двоичного формата, в то время как класс SoapFormatter представляет граф как сообщение протокола SOAP (Simple Object Access Protocol — простого протокола доступа к объектам) в формате XML.

Выбираем объект Formatter Класс BinaryFormatter определен в библиотеке mscorlib.dll, поэтому единственное, что нам потребуется для сериализации при помощи объекта Formatter, — определить использование этого пространства имен: // Для сериализации объектов в двоичном формате using System.Runtime.Serialization.Formatters.Binary; Класс SoapFormatter определен в отдельной сборке, поэтому для сохранения объекта в формате SOAP вам вначале потребуется добавить ссылку на сборку System.Runtime.Serializaton.Formatters.Soap.dll,а затем использовать аналогичную команду: // Для сериализации объектов в формате SOAP using System.Runtime.Serialization.Formatters.Soap;

Сериализация в двоичном формате public static void Main() { // Создаем объект JamesBondCar и выполняем с ним всякие // действия JamesBondCar myAuto = new JamesBondCar(“Fred“, 50, false, true); myAuto.TurnOnRadio(true); myAuto.GoUnderWater(); // Создаем поток для записи в файл FileStream myStream = File.Create("CarData.dat"); // Помещаем объектный граф в поток в двоичном формате BinaryFormatter myBinaryFormat = new BlnaryFormatter(); myBinaryFormat.Serialize(myStream, myAuto); myStream.Close(); . . . }

Сериализация в формате SOAP using System.Runtime.Serialization.Formatters.Soap; . . . // Сохраним тот же самый объект в формате SOAP FileStream myStream = File.Create(“CarData.xml"); SoapFormatter myXMLFormat = new SoapFormatter(); myXMLFormat.Serialize(myStream, myAuto); myStream.Close(); // Восстанавливаем объект из файла SOAP myStream = File.OpenRead(“CarData.xml"); JamesBondCar carFromXML = (JamesBondCar)myXMLFormat.Deserialize(myStream); Console.WriteLine(carFromXML.PetName + " is alive!");

Задание Напишите программу, которая сериализует и десериализует произвольный объект в файл. Используйте обычный формат XML и формат SOAP. Просмотрите полученные XML-файлы в любом текстовом редакторе или браузере.