С # для windows

Параграф 1. Про сериализации об'єктів

Серіалізация - процес перетворення деякого об'єкта (класу) в послідовність байтів з метою збереження в пам'яті (базі даних, файлі), відправки об'єкта віддаленого додатком за допомогою веб-служби, передача об'єкта з одного домену в інший, передача об'єкта через брандмауер у вигляді XML-рядки і зберігання інформації про безпеку або конкретного користувача, що використовується кілька різних програм. Серіалізация - процес двонаправлений і має на меті не тільки зберегти і передати в зручному вигляді даних, а й можливість відтворити його при необхідності у вигляді вихідного об'єкта. Зворотний процес називається десеріалізацію.

Простір імен System.Runtime.Serialization містить класи, необхідні для сериализации і десеріалізациі об'єктів.

Для того, що б об'єкт міг бути серіалізовані, він повинен бути поміченим як Серіалізуемое об'єкт:

Додатково в об'єкті частина інформації може вимагати або не вимагати збереження і подальшого відновлення, в цьому випадку застосовується мітки-атрибути [SerializableAttribute] і [NonSerializedAttribute].

Cеріалізуемая інформація містить не тільки дані, але і відомості про тип об'єкта (версію, мову і регіональні параметри, а також ім'я збірки).

Основну інформацію щодо виконання сериализации проводить спеціальний об'єкт - Formatter.

Як ми вже відзначали, розрізняють двійкову і XML-сериализацию. При XML-сериализации інформація серіалізуются в XML-потік. XML-сериализация може також використовуватися для сериализации об'єктів в потоки XML, які відповідають специфікації SOAP (Simple Object Access Protocol - простий протокол доступу до об'єктів). SOAP - це протокол, заснований на XML і створений спеціально для передачі викликів процедур з використанням XML.

Параграф 2. Приклад створення класу для двійковій сериализации

Отже, створимо порожнє поки рішення (наприклад, з ім'ям myProject) додатки і додамо до нього клас, який буде виконувати функції словника. У вікні "Solutation Explorer" (Меню Viev | Solutation Explorer) виконаємо правий клік мишкою на файлі проекту і додамо нову опцію (Рис.1.).

С # для windows

Рис.1 Створення програми та додавання класу для сериализации

С # для windows

Рис.2 Створення програми та добавденіе класу для сериализации

У код класу, який ми хочемо зробити серіалізуемим додамо позначений як Серіалізуемое об'єкт - [Serializable]:

В клас dictionary додамо методи, які роблять клас словником, наприклад Hashtable, яка надає колекцію пар ключ / значення, які впорядковані за хеш-коду ключа і яка власне буде зберігати словник. При додаванні елемента в колекцію Hashtable він поміщається в певний сегмент в залежності від хеш-коду ключа. Надалі пошук ключа здійснюється тільки в певному сегменті з використанням хеш-коду ключа. Таким чином, в значній мірі зменшується кількість операцій порівняння ключів, яке потрібно для знаходження елемента. Отже, першим додамо:

Далі знадобляться такі методи, як число значень, перевірки наявності слова в словнику, метод перекладу слова, додавання і видалення записів в словник:

Параграф 3. Робота по сериализации і десеріалізациі класу

Першим в основному додатку додаємо необхідні простору імен, а саме:

І відповідно оголошуємо нащадка створеного класу, і робимо з нього робочий клас - workDict = new workDict () ;.

Далі можна користуватися методами додавання і видалення даних в словник, описаних вище.

Залишилося зберегти словник в серіалізовані вигляді і завантажити знову словник в пам'ять.

Запис можна виконати так (sCurDir - поточна директорія старту програми - там ми будемо розміщувати і словник):

Для завантаження серіалізовані файлу словника можна скористатися наступною функцією:

Ось і всі тонкощі роботи з двійковій сериализации і десіреалізаціі, наведені на кокретного прикладі роботи зі словником.

Схожі статті