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

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

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

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

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

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

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

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

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

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

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

Підтримка у мовах програмування[ред.ред. код]

Деякі об'єктно орієнтовані мови надають безпосередню підтримку серіалізації об'єктів, через синтаксичний цукор або стандартний інтерфейс. Серед них RubySmalltalkPythonPHP,Objective-CJava, і сімейство мов .NET. Також доступні бібліотеки, що додають серіалізацію в мови, як не мають вбудованої підтримки.

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

Див. також[ред.ред. код]