Kas yra Serializavimas?

Kompiuterių programavime serializavimas yra procesas, kai paimama vietinėje atmintyje saugoma duomenų struktūra ir ji paverčiama baitų srautu, kuris gali būti perduodamas tinkle arba saugomas diske, kad būtų galima surinkti ir panaudoti kitai programai. Serializavimas taip pat gali būti naudojamas norint išsaugoti objekto būseną, kad vėliau būtų galima jį iš naujo įkelti ta pačia programa. Sudėtingesnis šios funkcijos panaudojimas yra iškviesti nuotolinį procedūrų iškvietimą (RPC) , efektyviai vykdant procedūrą kitame kompiuteryje per tinklą.Šis mechanizmas taip pat leidžia paskirstyti duomenų objektus per didelę tinklo sistemą.

Beveik kiekviena šiuolaikinė kompiuterių kalba palaiko serializavimą arba biblioteką, kad būtų galima pridėti šią funkciją. Kai objektas yra serijinis, visi objekto laukai yra išlyginami. Šis procesas taip pat žinomas kaip defliacija arba rūšiavimas.Duomenys paverčiami vienmate baitų eilute, kurią galima įrašyti į bet kurį išvesties srautą.Išvesties srauto tipas nesvarbus ir gali būti failas arba tinklo lizdas.

Kai duomenys yra suskirstyti ir išsiųsti į galutinę vietą, prasideda deserializacijos procesas. Programa, nuskaitanti baitų srautą, atkuria visą informaciją ir įdeda ją į naują pradinio objekto egzempliorių, sukurdama tiksli kopija Svarbu suprasti, kad suskirstomi tik tie duomenys, kurie buvo laikomi objekte; objektas ir jo metodai bei kiti diegimo duomenys nėra.Tai reiškia, kad duomenis deserializuojanti programa turi turėti galimybę sukurti klasės, kuri iš pradžių buvo serijinė, egzempliorių.

Duomenų struktūros serializavimas gali būti naudojamas įvairiems tikslams. Objekto informacija gali būti saugoma fizinėje laikmenoje, todėl tiksli kiekvieno objekto būsena gali būti atkurta iki taško, kuriame buvo sustabdytas programos vykdymas. Ji gali būti naudojama siųsti pranešimus į kitą kompiuterį, dėl kurio bus paleista nuotolinė procedūra. Serializavimas netgi gali būti naudojamas norint efektyviai palyginti būsenos pokyčius realiojo laiko programose.

Prieš naudojant objektų serializavimą, svarbu suprasti kai kuriuos jo keliamus apribojimus. Svarbiausia yra tai, kad konvertuojant objektą į baitų srautą laukai, paskelbti kaip privatūs, bus atskleisti. . Srauto perdavimo metu šie duomenys gali būti užfiksuoti ir iškoduoti, sukuriant saugumo spragą. Dauguma kalbų leidžia naudoti duomenų serializavimo formatus iš išorės, todėl galima naudoti patentuotą kodavimą padėti sumažinti šią riziką.

Kitas veiksnys, kurį reikia turėti omenyje, yra tai, kad serializavimas paprastai veiks tik su objektais, kurie yra visiškai tokie patys kaip ir serijinis objektas. Jei prie objekto pridedami nauji laukai arba metodai , tada objekto parašas pasikeis. Tai reikš, kad saugomas objektas padarys išimtį ir duomenys taps neatkuriami tol, kol pradinio nepakeisto objekto egzempliorius nebandys jo atkurti.