Серіалізація

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Серіалізація (в програмуванні) — процес перетворення будь-якої структури даних в послідовність бітів. Зворотною до операції серіалізації є операція десеріалізації - відновлення початкового стану структури даних з бітової послідовності.

Серіалізація використовується для передачі об'єктів по мережі і для збереження їх у файли. Наприклад, потрібно створити розподілений додаток, різні частини якого мають обмінюватися даними зі складною структурою. У такому випадку для типів даних, які передбачається передавати, пишеться код, який здійснює серіалізацію і десеріалізацію. Об'єкт заповнюється потрібними даними, потім викликається код серіалізації, в результаті виходить, наприклад, XML-документ. Результат серіалізації передається приймаючій стороні, наприклад, по електронній пошті або HTTP. Додаток-одержувач створює об'єкт того ж типу і викликає код десеріалізації, в результаті отримуючи об'єкт з тими ж даними, що були в об'єкті програми-відправника. За такою схемою працює, наприклад, серіалізація об'єктів через SOAP в Microsoft.NET.

Застосування[ред.ред. код]

Серіалізація надає декілька корисних можливостей:

  • метод реалізації зберігання об'єктів, який зручніший, ніж запис їх властивостей в текстовий файл на диск і повторна збірка об'єктів читанням файлів;
  • метод здійснення віддалених викликів процедур, як, наприклад, у SOAP;
  • метод розповсюдження об'єктів, особливо в технологіях компонентно-орієнтованого програмування, таких як COM і CORBA;
  • метод виявлення змін у даних, що змінюються з часом.

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

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

Серіалізація наукових даних[ред.ред. код]

Для наукових наборів даних, що мають великий обсяг, таких як дані, одержувані від супутників, або чисельні моделі клімату, погоди і океанів, були розроблені спеціальні бінарні стандарти серіалізації, наприклад HDF, netCDF і старіший GRIB.

Джерела інформації[ред.ред. код]

Дивіться також[ред.ред. код]