Ce este serializarea?

În programarea computerelor, serializarea este procesul de preluare a unei structuri de date stocate în memoria locală și de transformare a acesteia într-un flux de octeți care pot fi transmise printr-o rețea sau stocate pe un disc pentru a fi reasamblate și utilizate de un alt program. Serializarea poate fi, de asemenea, utilizată pentru a salva starea unui obiect, astfel încât să poată fi reîncărcat ulterior de același program.O utilizare mai complexă a acestei funcții este invocarea unui apel de procedură la distanță (RPC) , rulând efectiv o procedură pe un alt computer printr-o rețea. Acest mecanism permite, de asemenea, distribuirea obiectelor de date într-un sistem mare în rețea.

Aproape fiecare limbaj de computer modern are fie suport nativ pentru serializare, fie o bibliotecă disponibilă pentru a adăuga această funcționalitate. Când un obiect este serializat, toate câmpurile obiectului sunt aplatizate. Acest proces este cunoscut și sub numele de deflating sau marshalling.Datele sunt transformate într-un rând unidimensional de octeți care pot fi scrise în orice flux de ieșire.Tipul de flux de ieșire nu contează și ar putea fi un fișier sau o priză de rețea.

Odată ce datele au fost serializate și trimise în locația finală, începe procesul de deserializare.Programul care citește fluxul de octeți restabilește toate informațiile și le plasează într-o nouă instanță a obiectului original, creând un copie exactă Este important să înțelegeți că numai datele pe care obiectul le deținea sunt clasificate; obiectul și metodele sale și alte date de implementare nu sunt. Aceasta înseamnă că programul care deserializează datele trebuie să fie capabil să creeze o instanță a clasei care a fost serializată inițial.

Serializarea structurii de date poate fi utilizată pentru o varietate de scopuri. Informațiile despre obiecte pot fi stocate pe medii fizice, astfel încât starea exactă a fiecărui obiect poate fi restabilită la punctul în care se afla atunci când execuția programului s-a oprit. Poate fi folosită pentru trimite mesaje către un alt computer care va determina rularea unei proceduri de la distanță.Serializarea poate fi folosită chiar și pentru a compara eficient schimbările de stare din aplicațiile în timp real.

Înainte de a utiliza serializarea obiectelor, este important să înțelegeți câteva dintre limitările pe care le impune.Cea mai importantă este că, prin procesul de conversie a unui obiect într-un flux de octeți, câmpurile care sunt declarate private vor fi expuse. . În timpul transmiterii fluxului, aceste date pot fi capturate și decodificate, prezentând o gaură de securitate Majoritatea limbilor permit exteriorizarea formatelor de serializare a datelor, astfel încât codificarea proprie este posibilă ajuta la atenuarea acestui risc.

Un alt factor de avut în vedere este că serializarea va funcționa, în general, numai cu obiecte care sunt exact aceleași cu obiectul serializat. Dacă la un obiect se adaugă noi câmpuri sau metode. , apoi semnătura obiectului se va schimba. Aceasta va însemna că obiectul stocat va provoca o excepție și datele vor deveni irecuperabile până când o instanță a obiectului original nemodificat încearcă să îl restaureze.