Serializare

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În calcul , serializarea este un proces de salvare a unui obiect pe suport de stocare liniar (de exemplu, un fișier sau o zonă de memorie ) sau de transmitere a acestuia printr-o conexiune de rețea . Serializarea poate fi în formă binară sau poate utiliza codificări textuale (cum ar fi formatul XML ) care pot fi citite direct de oameni. Scopul serializării este de a transmite întreaga stare a obiectului, astfel încât să poată fi recreat ulterior în exact aceeași stare prin procesul invers, numit deserializare .

Utilizările serializării

Serializarea are mai multe beneficii și oferă:

Unele dintre aceste caracteristici necesită independența arhitecturii pentru a fi utilizabile. De exemplu, pentru o utilizare optimă a implementării, un computer bazat pe o arhitectură hardware diferită trebuie să poată reconstitui un flux de date serializate, indiferent de ordinea octeților . Aceasta înseamnă că cea mai simplă și mai rapidă metodă de copiere directă a configurației de memorie a structurilor de date poate să nu funcționeze adecvat pentru toate arhitecturile. Serializarea structurilor de date într-un format independent de arhitectură înseamnă a nu avea probleme legate de ordonarea octeților , configurația memoriei sau mai simplu datorită diferitelor moduri de reprezentare a structurilor de date în diferite limbaje de programare .

O caracteristică prezentă în multe scheme de serializare este că, pentru a extrage o parte din structurile de date serializate, întregul obiect trebuie citit și reconstruit, deoarece codificarea datelor este serială.

O altă problemă este reprezentată de indicatori: chiar și pe o singură mașină, acestea sunt entități prea labile pentru a fi salvate, deoarece obiectul către care indică poate fi încărcat, în timpul deserializării, într-o zonă de memorie diferită. Procesul care vă permite să rezolvați această problemă și să reconstruiți corect structura datelor se numește nesigur , în timp ce deserializarea implică procesul invers de scuturare a indicatorului .

Urmări

Cu toate acestea, serializarea subminează încapsularea unui tip de date abstract prin expunerea potențială a detaliilor sale de implementare privată. Pentru a descuraja concurenții să facă produse compatibile cu propriile lor, producătorii de software proprietari păstrează deseori detaliile formatelor de serializare ale programului lor. Unele ascund sau criptează în mod deliberat datele serializate.

În plus, interoperabilitatea necesită ca aplicațiile să poată înțelege serializările oricărei alte aplicații. Astfel, arhitecturile de invocare a metodelor la distanță, cum ar fi CORBA, definesc în detaliu formatele lor de serializare și oferă adesea metode de verificare a consistenței fiecărui flux serializat atunci când îl convertim înapoi la un obiect.

Serializare lizibilă de om

La sfârșitul anilor nouăzeci , s-au stabilit protocoale alternative la cele standard utilizate anterior: limbajul de marcare XML a fost folosit pentru a genera cod lizibil în format text. Această tehnică este utilă în special pentru a face obiectele persistente de înțeles de oameni sau pentru a le transmite către alte sisteme folosind diferite limbaje de programare, deși are dezavantajul de a pierde compacitatea altor tipuri de codare a fluxului de octeți, de obicei preferată din motive de practic. O posibilă soluție viitoare la această problemă ar putea fi așa-numitele scheme de compresie transparente (vezi XML binar ). În zilele noastre, XML este adesea utilizat pentru transferuri sincrone de date structurate între client și server în aplicațiile WEB dezvoltate în AJAX . Alternativ, se folosește JSON , un protocol de serializare mai ușor pe bază de text, care utilizează sintaxa JavaScript, dar este, de asemenea, acceptat de multe alte limbaje de programare.

Suport pentru limbaje de programare

Multe limbaje de programare orientate pe obiecte acceptă serializarea obiectelor (numită uneori și stocarea obiectelor ), atât cu practica zahărului sintactic , cât și prin interfețe standard special concepute în acest scop. Altele includ Ruby , Smalltalk , Python , Objective-C , Java și familia .NET .

Există, de asemenea, biblioteci care vă permit să adăugați suport pentru serializare în limbile care nu o au.

.Cadru net

În limbile .NET , clasele pot fi serializate și deserializate prin adăugarea atributului Serializable la clasă.

 'Exemplu VB
<Serializable ()> Angajat din clasă
// C # Exemplu
[Serializabil]
clasa Angajat

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT