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