Delen via


Serialisatie (Visual Basic)

Serialisatie is het proces van het converteren van een object naar een stroom bytes om het object op te slaan of naar het geheugen, een database of een bestand te verzenden. Het belangrijkste doel is om de status van een object op te slaan om het zo nodig opnieuw te kunnen maken. Het omgekeerde proces wordt deserialisatie genoemd.

Hoe serialisatie werkt

In deze afbeelding ziet u het algehele serialisatieproces.

Serialization graphic

Het object wordt geserialiseerd naar een stroom, die niet alleen de gegevens bevat, maar informatie over het type object, zoals de versie, cultuur en assemblynaam. Vanuit die stream kan deze worden opgeslagen in een database, een bestand of geheugen.

Gebruikt voor serialisatie

Met serialisatie kan de ontwikkelaar de status van een object opslaan en indien nodig opnieuw maken, waardoor objecten worden opgeslagen en gegevens worden uitgewisseld. Via serialisatie kan een ontwikkelaar acties uitvoeren, zoals het verzenden van het object naar een externe toepassing via een webservice, het doorgeven van een object van het ene domein naar het andere, het doorgeven van een object via een firewall als een XML-tekenreeks of het onderhouden van beveiligings- of gebruikersspecifieke informatie in toepassingen.

Een object serializeerbaar maken

Als u een object wilt serialiseren, moet het object worden geserialiseerd, een stroom die het geserialiseerde object en een Formatter. System.Runtime.Serialization bevat de klassen die nodig zijn voor het serialiseren en deserialiseren van objecten.

Pas het SerializableAttribute kenmerk toe op een type om aan te geven dat exemplaren van dit type kunnen worden geserialiseerd. Er wordt een SerializationException uitzondering gegenereerd als u probeert te serialiseren, maar het type heeft het kenmerk niet SerializableAttribute .

Als u niet wilt dat een veld in uw klasse serialiseerbaar is, past u het NonSerializedAttribute kenmerk toe. Als een veld van een serialiseerbare type een aanwijzer, een greep of een andere gegevensstructuur bevat die specifiek is voor een bepaalde omgeving, en het veld niet zinvol kan worden gereconstitueerd in een andere omgeving, wilt u het misschien niet onverserialiseerd maken.

Als een geserialiseerde klasse verwijzingen bevat naar objecten van andere klassen die zijn gemarkeerd SerializableAttribute, worden deze objecten ook geserialiseerd.

Binaire en XML-serialisatie

Binaire of XML-serialisatie kan worden gebruikt. Bij binaire serialisatie worden alle leden, zelfs leden die alleen-lezen zijn, geserialiseerd en worden de prestaties verbeterd. XML-serialisatie biedt leesbare code en meer flexibiliteit voor het delen en gebruiken van objecten voor interoperabiliteitsdoeleinden.

Binaire serialisatie

Binaire serialisatie maakt gebruik van binaire codering om compacte serialisatie te produceren voor gebruik zoals opslag- of socketnetwerkstromen.

XML-serialisatie

XML-serialisatie serialiseert de openbare velden en eigenschappen van een object, of de parameters en retourwaarden van methoden, in een XML-stroom die voldoet aan een specifiek XSD-document (XML Schema Definition Language). XML-serialisatie resulteert in sterk getypte klassen met openbare eigenschappen en velden die worden geconverteerd naar XML. System.Xml.Serialization bevat de klassen die nodig zijn voor het serialiseren en deserialiseren van XML.

U kunt kenmerken toepassen op klassen en klasseleden om te bepalen hoe de XmlSerializer serialiseren of deserialisatie van een exemplaar van de klasse.

Eenvoudige en aangepaste serialisatie

Serialisatie kan op twee manieren worden uitgevoerd, basis en aangepast. Eenvoudige serialisatie maakt gebruik van de .NET Framework om het object automatisch te serialiseren.

Basisserialisatie

De enige vereiste in basisserialisatie is dat het object het SerializableAttribute kenmerk heeft toegepast. De NonSerializedAttribute kan worden gebruikt om te voorkomen dat specifieke velden worden geserialiseerd.

Wanneer u basisserialisatie gebruikt, kan het versiebeheer van objecten problemen veroorzaken. In dat geval kan aangepaste serialisatie het beste zijn. Eenvoudige serialisatie is de eenvoudigste manier om serialisatie uit te voeren, maar biedt niet veel controle over het proces.

Aangepaste serialisatie

Bij aangepaste serialisatie kunt u precies opgeven welke objecten worden geserialiseerd en hoe deze worden uitgevoerd. De klasse moet worden gemarkeerd SerializableAttribute en de ISerializable interface implementeren.

Als u wilt dat uw object ook op een aangepaste manier wordt gedeserialiseerd, moet u een aangepaste constructor gebruiken.

Serialisatie van ontwerper

Serialisatie van ontwerper is een speciale vorm van serialisatie waarbij het type objectpersistentie wordt gebruikt dat meestal is gekoppeld aan ontwikkelhulpprogramma's. Designer serialisatie is het proces van het converteren van een objectgrafiek naar een bronbestand dat later kan worden gebruikt om de objectgrafiek te herstellen. Een bronbestand kan code, markeringen of zelfs SQL tabelgegevens bevatten.

Verwante onderwerpen en voorbeelden

Overzicht: een object behouden in Visual Studio (Visual Basic)
Demonstreert hoe serialisatie kan worden gebruikt om de gegevens van een object tussen exemplaren te behouden, zodat u waarden kunt opslaan en ophalen wanneer het object de volgende keer wordt geïnstantieerd.

Procedure: Objectgegevens lezen uit een XML-bestand (Visual Basic)
Laat zien hoe u objectgegevens leest die eerder zijn geschreven naar een XML-bestand met behulp van de XmlSerializer klasse.

Procedure: Objectgegevens schrijven naar een XML-bestand (Visual Basic)
Laat zien hoe u het object van een klasse naar een XML-bestand schrijft met behulp van de XmlSerializer klasse.