Serializare

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 30 ianuarie 2021; verificările necesită 6 modificări .

Serializarea (în programare) este procesul de traducere a unei structuri de date într-o secvență de biți. Inversul operației de serializare este operația de deserializare (structurare) - crearea unei structuri de date dintr-o secvență de biți.

Serializarea este folosită pentru a transfera obiecte prin rețea și pentru a le salva în . De exemplu, trebuie să creați o aplicație distribuită , din care diferite părți trebuie să facă schimb de date cu o structură complexă. În acest caz, pentru tipurile de date care se presupune a fi transferate, se scrie cod care realizează serializarea și deserializarea. Obiectul este completat cu datele necesare , apoi se apelează codul de serializare, rezultatul este, de exemplu, un document XML . Rezultatul serializării este transmis părții care primește, de exemplu, prin e-mail sau HTTP. Aplicația care primește creează un obiect de același tip și apelează codul de deserializare, rezultând un obiect cu aceleași date care se afla în obiectul aplicației expeditoare. De exemplu, serializarea obiectelor prin SOAP în Microsoft .NET funcționează conform acestei scheme .

Aplicație

Inerent oricăreia dintre schemele de serializare este faptul că codificarea datelor este secvenţială prin definiţie, iar regăsirea oricărei părţi a unei structuri de date serializate necesită ca întregul obiect să fie citit cap la cap şi recreat. În multe aplicații, această liniaritate este utilă deoarece permite ca interfețe I/O simple, de uz general, să fie utilizate pentru a stoca și transfera starea unui obiect. În aplicațiile în care performanța ridicată este importantă, poate avea sens să se utilizeze o organizare de stocare mai complexă, neliniară.

Serializarea oferă mai multe caracteristici utile:

Pentru a utiliza cât mai bine aceste caracteristici, independența arhitecturii trebuie menținută. De exemplu, este necesar să se poată recrea în mod fiabil un flux de date serializate, indiferent de caracterul endian utilizat într-o arhitectură dată. Aceasta înseamnă că cea mai simplă și rapidă procedură de copiere directă a locației de memorie în care se află structura de date nu poate funcționa în mod fiabil pentru toate arhitecturile. Serializarea structurilor de date într-un format independent de arhitectură înseamnă că nu ar trebui să apară probleme din cauza ordinii diferite a octetilor, mecanismelor de alocare a memoriei sau diferențelor în modul în care structurile de date sunt reprezentate în limbajele de programare.

Dezavantaje

Serializarea rupe opacitatea unui tip de date abstracte, expunând eventual detalii private de implementare. Implementările banale care serializează toți membrii datelor pot rupe încapsularea.

Pentru a deruta concurenții în ceea ce privește crearea de produse similare, dezvoltatorii de software proprietar păstrează adesea secrete detaliile formatelor de serializare ale programelor lor. Unii ofusca în mod deliberat sau chiar criptează datele serializate. Cu toate acestea, interoperabilitatea necesită ca aplicațiile să poată înțelege reciproc formatele de serializare ale altora. Prin urmare, arhitecturile de invocare a metodelor de la distanță, cum ar fi CORBA, își specifică formatele de serializare în detaliu.

Serializarea datelor științifice

Pentru seturi de date științifice mari, cum ar fi date satelitare sau modele numerice ale climei, vremii și oceanelor, au fost dezvoltate standarde speciale de serializare binară, cum ar fi HDF , netCDF și GRIB mai vechi .

Vezi și

Link -uri