Vad är serialisering?

Inom 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 för att återmonteras och användas av ett annat program. Serialisering kan också användas för att spara tillståndet för ett objekt så att det kan laddas om senare av samma program. En mer komplex användning av denna funktion är att anropa ett fjärrproceduranrop (RPC) , som effektivt kör 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 tillgängligt för att lägga till den här funktionen. När ett objekt serialiseras tillplattas alla fält i objektet. Denna process kallas också för att tömma luft eller rangering. Datan omvandlas till en endimensionell rad av byte som kan skrivas till vilken utdataström som helst. Typen av utdataström spelar ingen roll och kan vara en fil eller ett nätverksuttag.

När data har serialiserats och skickats till sin slutliga plats börjar processen med deserialisering. Programmet som läser byteströmmen återställer all information och placerar den i en ny instans av det ursprungliga objektet, vilket skapar en exakt kopia Det är viktigt att förstå att endast de data som objektet innehöll är sorterade; objektet och dess metoder och andra implementeringsdata är det inte. Det betyder att programmet som avserialiserar data måste kunna skapa en instans av klassen som ursprungligen serialiserades.

Datastrukturserialisering 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 det var vid när programkörningen stoppades. Den kan användas för att skicka meddelanden till en annan dator som gör att en fjärrprocedur körs. Serialisering kan till och med användas för att effektivt jämföra tillståndsförändringar i realtidsapplikationer.

Innan du använder objektserialisering är det viktigt att förstå några av de begränsningar den medför. Den viktigaste är att genom processen att konvertera ett objekt till en byteström, kommer fält som deklareras som privata att exponeras. . Under överföringen av strömmen kan dessa data fångas in och avkodas, vilket utgör ett säkerhetshål. De flesta språk tillåter externisering av dataserialiseringsformaten så att proprietär kodning är möjlig att hjälpa till att minska denna risk.

En annan faktor att tänka på är att serialisering i allmänhet endast kommer att fungera med objekt som är exakt samma som det serialiserade objektet.Om nya fält eller metoder läggs till ett objekt , då kommer signaturen för objektet att ändras. Detta kommer att innebära att det lagrade objektet kommer att orsaka ett undantag och att data inte kan återställas tills en instans av det ursprungliga omodifierade objektet försöker återställa det.