Što je serijalizacija?

U računalnom programiranju, serijalizacija je proces uzimanja strukture podataka pohranjene u lokalnoj memoriji i pretvaranja u tok bajtova koji se mogu prenijeti preko mreže ili pohraniti na disk da bi ih ponovno sastavio i koristio drugi program. Serijalizacija se također može koristiti za spremanje stanja objekta kako bi ga isti program kasnije mogao ponovno učitati. Složenija upotreba ove funkcije je pozivanje udaljenog poziva procedure (RPC) , koji učinkovito izvodi proceduru na drugom računalu kroz mrežu Ovaj mehanizam također omogućuje distribuciju podatkovnih objekata preko velikog umreženog sustava.

Gotovo svaki moderni računalni jezik ima izvornu podršku za serijalizaciju ili dostupnu knjižnicu za dodavanje ove funkcionalnosti. Kada se objekt serijalizira, sva polja objekta su izravnana. Ovaj proces je također poznat kao deflacija ili maršaliranje. Podaci se pretvaraju u jednodimenzionalni red bajtova koji se mogu zapisati u bilo koji izlazni tok. Vrsta izlaznog toka nije važna i može biti datoteka ili mrežna utičnica.

Nakon što su podaci serijalizirani i poslani na svoje konačno mjesto, počinje proces deserializacije. Program koji čita tok bajtova vraća sve informacije i postavlja ih u novu instancu izvornog objekta, stvarajući točna kopija. Važno je razumjeti da se razvrstavaju samo podaci koje je objekt držao; objekt i njegove metode i drugi implementacijski podaci nisu To znači da program koji deserializira podatke mora biti u stanju stvoriti instancu klase koja je izvorno serijalizirana.

Serijalizacija strukture podataka može se koristiti u razne svrhe. Informacije o objektu mogu se pohraniti na fizički medij tako da se točno stanje svakog objekta može vratiti na točku na kojoj je bilo kada je izvršenje programa zaustavljeno. Može se koristiti za slati poruke drugom računalu koje će uzrokovati pokretanje udaljene procedure.Serijalizacija se čak može koristiti za učinkovitu usporedbu promjena stanja u aplikacijama u stvarnom vremenu.

Prije upotrebe serijalizacije objekata, važno je razumjeti neka ograničenja koja nameće. Najvažnije je da će, kroz proces pretvaranja objekta u tok bajtova, polja koja su deklarirana kao privatna biti izložena . Tijekom prijenosa streama, ti se podaci mogu uhvatiti i dekodirati, što predstavlja sigurnosnu rupu. Većina jezika dopušta eksternalizaciju formata serijalizacije podataka tako da je moguće vlasnički kodiranje pomoći u ublažavanju ovog rizika.

Drugi čimbenik koji treba imati na umu je da će serijalizacija općenito raditi samo s objektima koji su potpuno isti kao serijalizirani objekt. Ako se objektu dodaju nova polja ili metode , tada će se promijeniti potpis objekta.To će značiti da će pohranjeni objekt uzrokovati iznimku i podaci će postati nepopravljivi sve dok instanca izvornog nepromijenjenog objekta ne pokuša da ga vrati.