Freigeben über


Serialisierung

Serialisierung ist der Prozess des Schreibens von Werten in C-Datenstrukturen (Strukturen, Arrays und Grundtypenwerten) als XML-Element. Die Deserialisierung ist der umgekehrte Prozess.

Serialisierung ist der Prozess des Schreibens von Werten in C-Datenstrukturen (Strukturen, Arrays und Grundtypwerten) als XML-Element. Die Deserialisierung ist der umgekehrte Prozess.

Beide Prozesse basieren auf einer Beschreibung der Zuordnung zwischen den C-Datenstrukturen und dem XML.

Diagramm, das zeigt, wie Serialisierung und Deserialisierung auf eine Beschreibung der Zuordnung zwischen den C-Datenstrukturen und dem XML basieren.

Zum Serialisieren eines Werts ruft die Anwendung WsWriteElement, WsWriteAttribute oder WsWriteType-auf.

Zum Deserialisieren eines Werts ruft die Anwendung WsReadElement-, WsReadAttribute- oder WsReadType-auf.

Sicherheit

XML Reader wird im Deserialisierungsprozess verwendet. Lesen Sie den Abschnitt "Sicherheit" im XML-Reader für XML-bezogene Sicherheitsinformationen.

Der Deserialisierer wird weiterhin Daten deserialisieren, bis das Lesen des Elements abgeschlossen ist, das deserialisiert wird. Der Deserialisierungsprozess schlägt fehl, wenn ein XML-Dokument auftritt, das nicht der Beschreibung der daten entspricht, die deserialisiert werden. An diesem Punkt wird der verwendete XML-Reader ungültig, und es wird ein Fehler zurückgegeben.

Standardmäßig ist die Deserialisierung streng. Einige Bedingungen, die dazu führen, dass die Deserialisierung fehlschlägt, sind jedoch nicht beschränkt auf:

  • Erwartete Elemente fehlen
  • Unerwartete Elementfelder werden zwischen den erforderlichen Elementen angezeigt
  • Zusätzlicher Elementinhalt nach erforderlichen Feldern, es sei denn, der WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT
  • Unerwartete Attribute, es sei denn, WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES Flag ist angegeben
  • Unerwarteter Datentypwert außerhalb des angegebenen Bereichs
  • Die Anzahl der wiederholten Elemente liegt außerhalb des angegebenen Bereichs.

Das Serialisieren großer Datenmengen kann zu einer übermäßigen Speicherzuweisung führen und zu Denial-of-Service-Angriffen führen. Der Benutzer, der daten deserialisiert, muss ein Heap-Objekt angeben, um die Daten zuzuordnen, und der Benutzer kann die Heap-Zuordnungsgrenze verwenden, um Speicherzuweisungsangriffe zu verhindern.

Bereichsunterstützung für Datentypen, einschließlich der maximalen Länge für Zeichenfolge, max. Elementanzahl im Array usw. ermöglicht es dem Benutzer, die maximale Größe für verschiedene Datentypen zu steuern. Der Benutzer kann den Bereich in der Datenbeschreibung oder im Schema angeben, um die maximale Größe verschiedener Daten einzuschränken.

Ein Zeichenfolgenwert, der eine eingebettete Null enthält, wird in den Drahtformaten unterstützt (Text, Binärdatei, MTOM). Beim Deserialisieren einer Zeichenfolge mit einer eingebetteten Null sollte der Benutzer eine gezählte Zeichenfolge (WS_STRING) verwenden, damit die Null die Berechnung der Länge der Zeichenfolge nicht verwechselt. Wenn ein Zeichenfolgenwert, der eine eingebettete Null enthält, in ein Feld deserialisiert wird, das eine Zeichenfolge mit null beendeter Zeichenfolge erwartet, wird ein Fehler zurückgegeben, und die Deserialisierung schlägt fehl. Wenn wsutil zum Generieren von Datenbeschreibungen verwendet wird, sollte die Option "/string:WS_STRING" verwendet werden, wenn eine Zeichenfolge mit eingebetteter Null erwartet wird.

Die folgenden Rückrufe werden mit serialisierung verwendet:

Die folgenden Enumerationen werden mit serialisierung verwendet:

Die folgenden Funktionen werden mit der Serialisierung verwendet:

Die folgenden Strukturen werden mit serialisierung verwendet: