Vad är serialisering?
I datorprogrammering är serialisering processen att ta en datastruktur lagrad i lokalt minne och förvandla den till en ström av byte som kan överföras över ett nätverk eller lagras på en disk som ska monteras om och användas av ett annat program. Serialisering kan också användas för att spara ett objekts tillstånd så att det kan laddas om senare av samma program. En mer komplex användning av denna funktion är att åberopa ett fjärrprocedursamtal (RPC) , effektivt att köra en procedur på en annan dator genom ett nätverk. Denna mekanism möjliggör också distribution av dataobjekt över ett stort nätverkssystem.
Nästan alla moderna datorspråk har antingen inbyggt stöd för serialisering eller ett bibliotek som är tillgängligt för att lägga till den här funktionen. När ett objekt serielliseras plattas alla fälten i objektet. Denna process kallas också deflating eller marshalling. Data förvandlas till en endimensionell rad byte som kan skrivas till vilken utgångsström som helst. Typen av utgångsströmmen spelar ingen roll och kan vara en fil eller ett nätverksuttag.
När uppgifterna har serialiserats och skickats till sin slutliga plats börjar deserialiseringsprocessen. Programmet som läser byte-strömmen återställer all information och placerar den i en ny instans av det ursprungliga objektet och skapar en exakt kopia. Det är viktigt att förstå att bara de data som objektet innehöll är marskalkade; Objektet och dess metoder och andra implementeringsdata är inte. Detta innebär att programmet som deserialiserar uppgifterna måste kunna skapa en instans av klassen som ursprungligen serialiserades.
Serialisering av datastrukturen kan användas för en mängd olika syften. Objektinformation kan lagras på fysiska medier så att det exakta tillståndet för varje objekt kan återställas till den punkt som det var när programmets körning stoppades. Det kan användas för att skicka meddelanden till en annan dator som får en fjärrprocedur att köras. Serialisering kan till och med användas för att effektivt jämföra tillståndsförändringar i realtidsprogram.
Innan objektserivering används är det viktigt att förstå några av de begränsningar det sätter. Det viktigaste är att genom processen att konvertera ett objekt till en byte-ström kommer fält som förklaras som privata att exponeras Under sändningen av strömmen kan dessa data fångas och avkodas, vilket visar ett säkerhetshål. De flesta språk möjliggör externisering av dataserialiseringsformaten så att proprietär kodning är möjlig att hjälpa till att mildra denna risk.
En annan faktor att tänka på är att serialisering i allmänhet bara fungerar med objekt som är exakt samma som det serialiserade objektet. Om nya fält eller metoder läggs till ett objekt , sedan kommer objektets signatur att förändras. Detta kommer att innebära att det lagrade objektet kommer att orsaka ett undantag och data kommer att återvinnas tills en instans av det ursprungliga omodifierade objektet försöker återställa det.