Серіалізація
Серіалізація (у програмуванні) — процес перетворення будь-якої структури даних у послідовність бітів. Зворотною до операції серіалізації є операція десеріалізації — відновлення початкового стану структури даних із бітової послідовності.
Серіалізація використовується для передавання об'єктів мережею й для збереження їх у файлах. Наприклад, потрібно створити розподілений застосунок, різні частини якого мають обмінюватися даними зі складною структурою. У такому випадку для типів даних, які передбачається передавати, пишеться код, який здійснює серіалізацію і десеріалізацію. Об'єкт заповнюється необхідними даними, потім викликається код серіалізації, в результаті виходить, наприклад, XML-документ. Результат серіалізації передається приймальній стороні, наприклад, електронною поштою або через HTTP. Додаток-одержувач створює об'єкт того ж типу і викликає код десеріалізації, у результаті отримуючи об'єкт із тими ж даними, які були в об'єкті програми-відправника. За такою схемою працює, наприклад, серіалізація об'єктів через SOAP в Microsoft.NET.
Застосування
Серіалізація надає декілька корисних можливостей:
- метод реалізації зберігання об'єктів, який зручніший, ніж запис їх властивостей в текстовий файл на диск і повторна збірка об'єктів читанням файлів;
- метод здійснення віддалених викликів процедур, як, наприклад, у SOAP;
- метод розповсюдження об'єктів, особливо в технологіях компонентно-орієнтованого програмування, таких як COM і CORBA;
- метод виявлення змін у даних, що змінюються з часом.
Для найефективнішого використання даних можливостей необхідно підтримувати незалежність від архітектури. Наприклад, необхідно мати можливість надійно відтворювати серіалізований потік даних, незалежно від порядку байтів, що використовується в цій архітектурі. Це означає, що найбільш проста і швидка процедура прямого копіювання ділянки пам'яті, в якому розміщується структура даних, не може працювати надійно для всіх архітектур. Серіалізація структур даних в архітектурно-незалежний формат означає, що не повинно виникати проблем через різний порядок проходження байтів, механізмів розподілу пам'яті або відмінностей представлення структур даних в мовах програмування.
Будь-якій зі схем серіалізації властиво те, що кодування даних послідовно за визначенням, і вибірка будь-якої частини серіалізованої структури даних вимагає, щоб весь об'єкт був зчитаний від початку до кінця і був відновлений. У багатьох програмах така лінійність корисна, тому що дозволяє використовувати прості інтерфейси введення/виведення загального призначення для збереження і передачі стану об'єкта. У додатках, де важлива висока продуктивність, можливо буде доречніше використовувати складнішу, нелінійну організацію зберігання даних.
Серіалізація наукових даних
Для наукових наборів даних, що мають великий обсяг, таких як дані, одержувані від супутників, або чисельні моделі клімату, погоди і океанів, були розроблені спеціальні бінарні стандарти серіалізації, наприклад HDF, netCDF і старіший GRIB.
Підтримка у мовах програмування
Деякі об'єктно орієнтовані мови надають безпосередню підтримку серіалізації об'єктів, через синтаксичний цукор або стандартний інтерфейс. Серед них Ruby, Smalltalk, Python, PHP,Objective-C, Java, і сімейство мов .NET. Також доступні бібліотеки, що додають серіалізацію в мови, які не мають вбудованої підтримки.
Джерела інформації
Див. також
- Комп'ютерна термінологія
- XML
- Distributed Component Object Model
- Маршалінг (програмування)
- SOAP