Kaj je serijalizacija?

V računalniškem programiranju je serizacija proces, pri katerem podatkovno strukturo, shranjeno v lokalnem pomnilniku, vzamemo in jo pretvorimo v tok bajtov, ki jih je mogoče prenašati po omrežju ali shraniti na disk, da ga ponovno sestavi in ​​uporabi drug program. Serializacijo lahko uporabite tudi za shranjevanje stanja predmeta, tako da ga lahko pozneje znova naloži isti program. Bolj zapletena uporaba te funkcije je priklic klica oddaljene procedure (RPC) , ki učinkovito izvaja postopek na drugem računalniku prek omrežja.Ta mehanizem omogoča tudi distribucijo podatkovnih objektov po velikem omrežnem sistemu.

Skoraj vsak sodobni računalniški jezik ima domačo podporo za serializacijo ali knjižnico, ki je na voljo za dodajanje te funkcionalnosti. Ko je predmet serializiran, so vsa polja predmeta sploščena. Ta postopek je znan tudi kot deflacija Podatki se pretvorijo v enodimenzionalno vrstico bajtov, ki jih je mogoče zapisati v kateri koli izhodni tok. Vrsta izhodnega toka ni pomembna in je lahko datoteka ali omrežna vtičnica.

Ko so podatki serializirani in poslani na končno lokacijo, se začne postopek deserializacije.Program, ki prebere tok bajtov, obnovi vse informacije in jih postavi v nov primerek prvotnega predmeta ter ustvari natančna kopija. Pomembno je razumeti, da so razvrščeni samo podatki, ki jih je imel predmet; objekt in njegove metode ter drugi izvedbeni podatki niso To pomeni, da mora biti program, ki deserializira podatke, sposoben ustvariti primerek razreda, ki je bil prvotno serializiran.

Serializacija podatkovne strukture se lahko uporablja za različne namene. Podatke o objektu je mogoče shraniti na fizični medij, tako da je mogoče natančno stanje vsakega objekta obnoviti na točko, na kateri je bilo, ko se je izvajanje programa ustavilo. pošiljanje sporočil drugemu računalniku, ki bo povzročilo zagon oddaljenega postopka.Serializacijo je mogoče uporabiti celo za učinkovito primerjavo sprememb stanja v aplikacijah v realnem času.

Pred uporabo serializacije objektov je pomembno razumeti nekatere omejitve, ki jih nalaga. Najpomembnejše je, da bodo s postopkom pretvorbe objekta v tok bajtov izpostavljena polja, ki so deklarirana kot zasebna. . Med prenosom toka je mogoče te podatke zajeti in dekodirati, kar predstavlja varnostno luknjo. Večina jezikov omogoča eksternalizacijo formatov serijskih podatkov, tako da je možno lastniško kodiranje pomaga ublažiti to tveganje.

Drugi dejavnik, ki ga je treba upoštevati, je, da bo serializacija na splošno delovala samo s predmeti, ki so popolnoma enaki serializiranemu objektu. Če se objektu dodajo nova polja ali metode , potem se bo podpis predmeta spremenil.To bo pomenilo, da bo shranjeni objekt povzročil izjemo in da bodo podatki postali nepopravljivi, dokler jih primerek prvotnega nespremenjenega objekta ne poskuša obnoviti.