Hva er serialisering?
I dataprogrammering er serialisering prosessen med å ta en datastruktur som er lagret i lokalt minne og gjøre den om til en strøm av byte som kan overføres over et nettverk eller lagres på en disk som skal settes sammen og brukes av et annet program. Serialisering kan også brukes til å lagre tilstanden til et objekt, slik at det senere kan lastes inn igjen av det samme programmet. En mer kompleks bruk av denne funksjonen er å påkalle en ekstern prosedyresamtale (RPC) , effektivt å kjøre en prosedyre på en annen datamaskin gjennom et nettverk. Denne mekanismen åpner også for distribusjon av dataobjekter over et stort nettverkssystem.
Nesten alle moderne dataspråk har enten innfødt støtte for serialisering eller et bibliotek som er tilgjengelig for å legge til denne funksjonaliteten. Når et objekt blir serialisert, blir alle feltene til objektet flatet ut. Denne prosessen er også kjent som deflating. eller marshalling. Dataene blir gjort om til en endimensjonal byte-rad som kan skrives til hvilken som helst utgangsstrøm. Typen av utstrømmen betyr ikke noe og kan være en fil eller et nettverksuttak.
Når dataene er blitt serialisert og sendt til det endelige stedet, begynner prosessen med deserialisering. Programmet som leser bytestrømmen gjenoppretter all informasjonen og plasserer den i en ny forekomst av det opprinnelige objektet, og lager en eksakt kopi. Det er viktig å forstå at bare dataene som gjenstanden hadde, er marskalket; objektet og dets metoder og andre implementeringsdata er ikke. Dette betyr at programmet som deserialiserer dataene må kunne opprette en forekomst av klassen som opprinnelig ble serialisert.
Dataristrukturering kan brukes til en rekke formål. Objektinformasjon kan lagres på fysiske medier slik at den nøyaktige tilstanden til hvert objekt kan gjenopprettes til det punktet det var da programgjennomføringen stanset. Den kan brukes til å sende meldinger til en annen datamaskin som vil føre til at en ekstern prosedyre kjøres. Serialisering kan til og med brukes til å sammenligne tilstandsendringer i sanntidsapplikasjoner.
Før du bruker objektserialisering, er det viktig å forstå noen av begrensningene den pålegger. Det viktigste er at gjennom prosessen med å konvertere et objekt til en byte-strøm, vil felt som er erklært som private bli utsatt Under sending av strømmen kan disse dataene fanges opp og dekodes, og presenterer et sikkerhetshull. De fleste språk tillater eksternalisering av dataserialiseringsformatene slik at proprietær koding er mulig å bidra til å dempe denne risikoen.
En annen faktor å huske på er at serialisering generelt vil fungere bare med objekter som er nøyaktig det samme som det serialiserte objektet. Hvis nye felt eller metoder legges til et objekt , så vil signaturen til objektet endre seg. Dette vil bety at det lagrede objektet vil føre til et unntak og dataene vil bli gjenopprettelige inntil en forekomst av det opprinnelige umodifiserte objektet prøver å gjenopprette det.