П. Г. Демидова, 2012 2 Лабораторная работа 1 Сериализация Цель работы: изучение процесса сериализации объектов, посредством которого можно сохранять и получать состояние объекта в любом типе (и из любого типа), производном от System.IO.Stream. <...> Понятие сериализации объектов Сериализация представляет собой процесс преобразования объекта в поток байтов с целью сохранения его в памяти, в базе данных или в файле. <...> Сэкономить значительное время можно, снабдив класс UserPrefs атрибутом Serializable. <...> BinaryFormatter binFmt = new BinaryFormatter(); // Сохранение объекта в файле. using(Stream fStream = new FileStream("user.dat", FileMode.Create, FileAccess.Write, FileShare.None)) { binFmt.Serialize(fStream, user1); } Итак, для сериализации требуется объект, который будет сериализован, поток, который будет содержать сериализованный объект, и объект Formatter. <...> NET, требуется пометить каждый связанный класс (или структуру) атрибутом [Serializable]. <...> Заметим, что атрибут [Serializable] не может наследоваться от родительского класса. <...> Выбор форматера сериализации Для сохранения состояния объектов используется один из трех форматов, которым соответствуют объекты-форматеры, а именно двоичный формат, SOAP или XML. <...> Кроме того, когда используется тип BinaryFormatter, он сохраняет не только данные полей объектов, но также полное квалифицированное имя каждого типа и полное имя определяющей его сборки (имя, версия, маркер общедоступного ключа и культура). <...> Эти дополнительные элементы данных делают BinaryFormatter идеальным выбором, когда необходимо передавать объекты по значе6 нию (т. е. полные копии) между границами машин для использования в . <...> NET-приложениях. Тип SoapFormatter сохраняет состояние объекта в виде сообщения SOAP (стандартный XML-формат для передачи и приема сообщений от веб-служб). <...> Сериализация объектов с использованием BinaryFormatter Для сохранения состояния объекта в двоичном формате нужно: использовать пространство имен System.Runtime.Serialization.Formatters.Binary; создать файл для хранения данных; создать экземпляр BinaryFormatter и передать ему в метод Serialize файл и сохраняемый <...>
Языки_программирования._Ч._2_лабораторный_практикум.pdf
Министерство образования и науки Российской Федерации
Ярославский государственный университет им. П. Г. Демидова
Кафедра компьютерной безопасности
и математических методов обработки информации
О. П. Якимова
И. М. Якимов
В. Л. Дольников
Языки программирования
Часть 2
Лабораторный практикум
Рекомендовано
Научно-методическим советом университета для студентов,
обучающихся по специальности Компьютерная безопасность
Ярославль 2012
Стр.1
УДК 004.43(076.5)
ББК З973.2-018.1я73
Я 41
Рекомендовано
Редакционно-издательским советом университета
в качестве учебного издания. План 2012 года
Рецензент
кафедра компьютерной безопасности
и математических методов обработки информации
Я 41
Якимова, О. П. Языки программирования. Ч. 2: лабораторный
практикум / О. П. Якимова, И. М. Якимов,
В. Л. Дольников; Яросл. гос. ун-т им. П. Г. Демидова. –
Ярославль : ЯрГУ, 2012. – 56 с.
Лабораторный практикум предназначен для студентов,
обучающихся по специальности 090301.65 Компьютерная
безопасность (дисциплина «Языки программирования»,
цикл С3), очной формы обучения.
УДК 004.43(076.5)
ББК З973.2-018.1я73
Ярославский государственный
университет им. П. Г. Демидова,
2012
2
Стр.2
Оглавление
Лабораторная работа 1. Сериализация ........................................................... 3
Необходимые теоретические сведения ..................................................... 3
1. Понятие сериализации объектов ........................................................... 3
2. Настройка объектов для сериализации ................................................. 4
3. Выбор форматера сериализации ............................................................ 6
4. Поддержка версий объектов ................................................................ 11
5. Настройка сериализации с использованием атрибутов .................... 12
6. Задание для лабораторной работы 1 ................................................... 13
Лабораторная работа 2. Многопоточные приложения .............................. 13
Необходимые теоретические сведения ................................................... 13
1. Задачи многопоточности ...................................................................... 13
2. Методы создания потоков .................................................................... 15
2.1. Делегаты .................................................................................... 15
2.3. Класс ThreadPool....................................................................... 24
2.4. Класс Task .................................................................................. 26
2.5. PLINQ ......................................................................................... 31
3. Синхронизация потоков ....................................................................... 33
3.1. Оператор lock ........................................................................... 34
3.2. Класс ReaderWriterLock ............................................................ 36
3.3. Класс Mutex ................................................................................ 38
3.4. Класс WaitHandle ...................................................................... 40
3.5. Блокировка потоков ................................................................. 44
4. Взаимодействие с пользовательским интерфейсом .......................... 46
4.1. WinForms .................................................................................... 46
4.2. WPF ............................................................................................ 51
5. Задание для лабораторной работы 2 ................................................... 53
Список литературы ......................................................................................... 54
55
Стр.55