Serialisatie
Serialisatie is het schrijven van waarden in C-gegevensstructuren (structs, matrices en primitieve waarden) als xml-element. Deserialisatie is het omgekeerde proces.
Serialisatie is het schrijven van waarden in C-gegevensstructuren (structuren, matrices en primitieve waarden) als xml-element. Deserialisatie is het omgekeerde proces.
Beide processen zijn afhankelijk van een beschrijving van de toewijzing tussen de C-gegevensstructuren en de XML.
Als u een waarde wilt serialiseren, roept de toepassing WsWriteElementaan, WsWriteAttribute of WsWriteType.
Als u een waarde wilt deserialiseren, roept de toepassing WsReadElementaan, WsReadAttribute of WsReadType.
Veiligheid
XML Reader wordt gebruikt in het deserialisatieproces. Raadpleeg de beveiligingssectie in XML Reader voor xml-gerelateerde beveiligingsinformatie.
Deserializer blijft gegevens deserialiseren totdat het lezen van het element is gedeserialiseerd. Het deserialisatieproces mislukt wanneer er een XML-document optreedt dat niet voldoet aan de beschrijving van de gegevens die worden gedeserialiseerd. Op dat moment wordt de GEBRUIKTE XML-lezer ongeldig en wordt er een fout geretourneerd.
Standaard is deserialisatie strikt. Sommige voorwaarden waardoor deserialisatie mislukt, zijn onder meer, maar niet beperkt tot:
- Verwachte elementen ontbreken
- Onverwachte elementvelden worden weergegeven tussen vereiste elementen
- Extra elementinhoud na vereiste velden, tenzij de WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT
- Onverwachte kenmerken, tenzij WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES vlag is opgegeven
- Onverwachte gegevenstypewaarde die buiten het opgegeven bereik valt
- Het aantal herhalende elementen valt buiten het opgegeven bereik
Het serialiseren van grote hoeveelheden gegevens kan overmatige geheugentoewijzing veroorzaken en kan denial of service-aanvallen veroorzaken. De gebruiker die gegevens deserialiseert, moet een Heap-object opgeven om de gegevens toe te wijzen en de gebruiker kan de heap-toewijzingslimiet gebruiken om geheugentoewijzingsaanvallen te voorkomen.
Bereikondersteuning voor gegevenstypen, waaronder maximale lengte voor tekenreeks, maximumaantal elementen in matrix, enzovoort, stelt de gebruiker in staat om de maximale grootte voor verschillende gegevenstypen te beheren. De gebruiker kan een bereik opgeven in de gegevensbeschrijving of het schema om de maximale grootte van verschillende gegevens te beperken.
Een tekenreekswaarde met een ingesloten nul wordt ondersteund in de draadindelingen (tekst, binair, MTOM). Wanneer een tekenreeks met een ingesloten nul wordt gedeserialiseerd, moet de gebruiker een getelde tekenreeks (WS_STRING) gebruiken, zodat de berekening van de lengte van de tekenreeks niet wordt verward door de nul. Als een tekenreekswaarde met een ingesloten nul wordt gedeserialiseerd in een veld dat een tekenreeks met nul beëindigt, wordt een fout geretourneerd en mislukt deserialisatie. Als wsutil wordt gebruikt voor het genereren van gegevensbeschrijvingen, /string:WS_STRING optie moet worden gebruikt als tekenreeks met ingesloten nul wordt verwacht.
De volgende callbacks worden gebruikt met serialisatie:
De volgende opsommingen worden gebruikt met serialisatie:
De volgende functies worden gebruikt met serialisatie:
De volgende structuren worden gebruikt met serialisatie:
- WS_ATTRIBUTE_DESCRIPTION
- WS_BOOL_DESCRIPTION
- WS_BYTES_DESCRIPTION
- WS_BYTE_ARRAY_DESCRIPTION
- WS_CHAR_ARRAY_DESCRIPTION
- WS_CUSTOM_TYPE_DESCRIPTION
- WS_DATETIME_DESCRIPTION
- WS_DECIMAL_DESCRIPTION
- WS_DEFAULT_VALUE
- WS_DOUBLE_DESCRIPTION
- WS_DURATION_DESCRIPTION
- WS_ELEMENT_DESCRIPTION
- WS_ENDPOINT_ADDRESS_DESCRIPTION
- WS_ENUM_DESCRIPTION
- WS_ENUM_VALUE
- WS_FAULT_DESCRIPTION
- WS_FIELD_DESCRIPTION
- WS_FLOAT_DESCRIPTION
- WS_GUID_DESCRIPTION
- WS_INT16_DESCRIPTION
- WS_INT32_DESCRIPTION
- WS_INT64_DESCRIPTION
- WS_INT8_DESCRIPTION
- WS_ITEM_RANGE
- WS_STRING_DESCRIPTION
- WS_STRUCT_DESCRIPTION
- WS_TIMESPAN_DESCRIPTION
- WS_UINT16_DESCRIPTION
- WS_UINT32_DESCRIPTION
- WS_UINT64_DESCRIPTION
- WS_UINT8_DESCRIPTION
- WS_UNION_DESCRIPTION
- WS_UNION_FIELD_DESCRIPTION
- WS_UNIQUE_ID_DESCRIPTION
- WS_UTF8_ARRAY_DESCRIPTION
- WS_VOID_DESCRIPTION
- WS_WSZ_DESCRIPTION
- WS_XML_QNAME_DESCRIPTION
- WS_XML_STRING_DESCRIPTION