Технология сериализации объектов на платформе .NET
Термин сериализация описывает процесс сохранения (и, возможно, передачи) состояния объекта в потоке (т.е. файловом потоке и потоке в памяти). Последовательность сохраняемых данных содержит всю необходимую информацию, необходимую для реконструкции (или десериализации) состояния объекта с целью последующего использования. Применяя эту технологию, очень просто сохранять большие объемы данных (в различных форматах) с минимальными усилиями. Для осуществления (де)сериализации.NET предлагает 3 разных варианта (не считая самостоятельной реализации механизма сериализации): · Сериализация в двоичный формат (BinnaryFormatter) · Сериализация в формат SOAP (SoapFormatter) · Сериализация в формат xml (XmlSerializer) Тип BinaryFormatter сериализует состояние объекта в поток, используя компактный двоичный формат. Этот тип определен в пространстве имен System.Runtime.Serialization.Formatters.Binary, которое входит в сборку mscorlib.dll. В этом случае сериализируются все поля, вне зависимости от их области видимости. Исключение составляют поля помеченные аттрибутом [NonSerialized]. Помимо сохранения данных полей, BinaryFormatter также сохраняет полное квалифицированное имя каждого типа, полное имя сборки, где он определен, сюда входит информация об имени, версии, маркере общедоступного ключа (public key). Здесь заключается основной минус BinaryFormatter - данные, сохраненные с его помощью, могут быть воссозданы только в инфраструктуре CLI. Причем каждый, кто будет восстанавливать данные, должен иметь сборку с сериализуемым типом. Сериализация происходит с помощью двух ключевых методов Serialize() и Deserialize(). Первый сохраняет граф объектов в виде последовательности байт в указанный поток. Второй наоборот - преобразует сохраненную последовательность байт в граф объектов. Тип SoapFormatter сохраняет состояние объекта в виде сообщения SOAP (стандартный XML-формат для передачи и приема сообщений от веб-служб). Этот тип определен в пространстве имен System.Runtime.Serialization.Formatters.Soap, находящемся в отдельной сборке. Также как и BinaryFormatter сериализирует все поля, вне зависимости от их области видимости, кроме полей помеченных аттрибутом [NonSerialized]. В отличие от BinaryFormatter, платформа и операционная система не влияют на успешное восстановление данных, сериализированных с помощью SoapFormatter. Как и в случае с BinaryFormatter (де)сериализация происходит с помощью ключевых методов Serialize() и Deserialize(). И, наконец, для сохранения дерева объектов в документе XML имеется тип XmlSerializer. Чтобы использовать этот тип, нужно указать директиву using для пространства имен System.Xml. Serialization и установить ссылку на сборку System.Xml.dll. Данный тип сериализации не сохраняет приватные данные. Хотя это можно сделать, инкапсулировав такое поле в общедоступном свойстве. Также XmlSerializer не сохраняет точную информацию о типе (квалифицированное имя, имя сборки и т.д.), что делает его идеальным кандидатом, когда необходимо сохранить объект для дальнейшего использования в другом языке программирования, а также на любой платформе, в любой операционной системе. Сериализация с помощью XmlSerializer немного отличается от сериализации с помощью BinaryFormatter и SoapFormatter. XmlSerializer требует указания информации о типе, который нужно сериализовать.
Реализация информационно-справочной системы «Отдел кадров» Информационно-справочная система «Отдел кадров» включает в себя следующий функционал: § Добавление § Изменение § Удаление § Просмотр данных § Загрузка данных из файла § Сохранение данных в файл Таблица данных имеет следующие поля: § Табельный номер § Фамилия § Имя § Отчество § Должность § Номер кабинета § Внутренний телефон В приложении представлен программный код, реализующий систему с заявленным функционалом. Заключение В результате практики я изучила технологию сериализации объектов на платформе.NET, а также реализовала информационно-справочную систему с использованием этой технологии. Реализуя систему, изучила основы еще одного объектно-ориентированного языка программирования С#. Кроме того, научилась реализовывать Windows-приложения, использовать средства конструктора баз данных Windows Forms.
|