Skip to main content

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 å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 åberopa ett fjärrprocedursamtal (RPC), effektivt genom att köra en procedur på en annan dator via ett nätverk. Denna mekanism möjliggör också distribution av dataobjekt över ett stort nätverkssystem.

Nästan varje modernt datorspråk har antingen infödda stöd för serialisering eller enBibliotek tillgängligt för att lägga till denna funktionalitet. När ett objekt är serialiseras, är alla fälten för objektet platt. Denna process kallas också deflating eller marshalling. Uppgifterna förvandlas tillEn endimensionell rad med byte som kan skrivas till valfri utgångsström.Typen av utgångsströ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 deserialiseringsprocessen. Programmet som läserByte -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 endast de data som objektet innehöll är marskalkad;Objektet och dess metoder och andra implementeringsdata är inte. Detta betyder att programmet som deserialiserar uppgifterna måste kunna skapa en instans av klassen som ursprungligen var serialiserad.

Serialisering av datastruktur kan användasfö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 när programutförandet stoppas. Det kan användas för att skicka meddelanden till en annan dator somkommer att leda till 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 som den sätter.Viktigt är att genom processen att konvertera ett objekt till en byte -ström kommer fält som förklaras som privata att exponeras. Under överföringen av strömmen kan dessa data fångas och avkodas och presentera ensäkerhetshål. De flesta språkÅlder möjliggör externisering av dataserialiseringsformat så att proprietär kodning är möjlig för att hjälpa till att mildra denna risk.

En annan faktor att tänka på är att serialisering i allmänhet kommer att arbeta endast med objekt som föremål somär exakt samma som det serialiserade objektet. Om nya fält eller metoder läggs till i ett objekt, kommer objektets signatur att ändras. Detta kommer att innebära att det lagrade objektet kommerorsaka ett undantag och uppgifterna kommer att bli oåterkallelig tills en instans av det ursprungliga omodifierade objektet försöker återställa det.