Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 object opnieuw te kunnen maken wanneer dat nodig is. Het omgekeerde proces wordt deserialisatie genoemd.
Hoe serialisatie werkt
In deze afbeelding ziet u het algehele serialisatieproces.
Het object wordt geserialiseerd naar een stroom, die niet alleen de gegevens bevat, maar ook informatie over het objecttype, 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 het indien nodig opnieuw maken, waardoor de opslag van objecten en gegevensuitwisseling wordt geboden. Door middel van 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.
JSON-serialisatie
De System.Text.Json naamruimte bevat klassen voor serialisatie en deserialisatie van JavaScript Object Notation (JSON). JSON is een open standaard die vaak wordt gebruikt voor het delen van gegevens op internet.
JSON-serialisatie serialiseert de openbare eigenschappen van een object in een tekenreeks, bytematrix of stroom die voldoet aan de RFC 8259 JSON-specificatie. Als u de manier wilt bepalen waarop JsonSerializer een exemplaar van de klasse serialiseert of deserialiseerd, kunt u een of meer van de volgende methoden gebruiken:
- JsonSerializerOptions Een object gebruiken
- Kenmerken van de System.Text.Json.Serialization naamruimte toepassen op klassen of eigenschappen
- Het contract aanpassen
- Aangepaste converters implementeren
Binaire en XML-serialisatie
De System.Runtime.Serialization naamruimte bevat klassen voor binaire en XML-serialisatie en deserialisatie.
Bij binaire serialisatie worden alle elementen, zelfs de elementen die alleen-lezen zijn, geserialiseerd en worden de prestaties verbeterd. XML-serialisatie biedt meer leesbare code en meer flexibiliteit van het delen van objecten en het gebruik voor interoperabiliteitsdoeleinden.
Waarschuwing
Binaire serialisatie met BinaryFormatter
kan gevaarlijk zijn. Zie de beveiligingshandleiding binaryFormatter en de binaryFormatter-migratiehandleiding voor meer informatie.
Een object serialiseerbaar maken
Als u een object wilt serialiseren met binaire of XML-serialisatie, hebt u het object dat u wilt serialiseren nodig, een stroom die het geserialiseerde object bevat, 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 SerializableAttribute kenmerk niet.
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 ingang 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 mogelijk niet-eriaal maken.
Als een geserialiseerde klasse verwijzingen bevat naar objecten van andere klassen die zijn gemarkeerd SerializableAttribute, worden deze objecten ook geserialiseerd.
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 een XmlSerializer exemplaar van de klasse wordt geserialiseerd of gedeserialiseerd.
Basis- en aangepaste serialisatie
Binaire en XML-serialisatie kunnen op twee manieren worden uitgevoerd, basis en aangepast. Basisserialisatie maakt gebruik van .NET om het object automatisch te serialiseren.
De enige vereiste in basisserialisatie is dat het object het SerializableAttribute kenmerk heeft toegepast. Het 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 de voorkeur hebben. Eenvoudige serialisatie is de eenvoudigste manier om serialisatie uit te voeren, maar biedt niet veel controle over het proces.
Bij aangepaste serialisatie kunt u precies opgeven welke objecten worden geserialiseerd en hoe deze worden uitgevoerd. De klasse moet worden gemarkeerd met SerializableAttribute en moet de ISerializable interface implementeren. Als u wilt dat uw object ook op een aangepaste manier gedeserialiseerd wordt, moet u een aangepaste constructor gebruiken.
Designer-serialisatie
Ontwerperserialisatie is een speciale vorm van serialisatie waarbij het soort objectpersistentie meestal is gekoppeld aan ontwikkelhulpprogramma's. Designer-serialisatie is het proces van het converteren van een objectgraaf naar een broncodebestand dat later kan worden gebruikt om de objectgraaf te reconstrueren. Een bronbestand kan code-, opmaak- of zelfs SQL-tabelgegevens bevatten.
Verwante artikelen
Procedure: Objectgegevens lezen uit een XML-bestand (Visual Basic)
Laat zien hoe u objectgegevens leest die eerder met behulp van de XmlSerializer klasse naar een XML-bestand zijn geschreven.
Procedure: Objectgegevens schrijven naar een XML-bestand (Visual Basic)
Laat zien hoe u het object schrijft van een klasse naar een XML-bestand met behulp van de XmlSerializer klasse.