Gewusst wie: Segmentieren serialisierter Daten

Beim Senden großer Datasätze in Webdienstnachrichten treten die zwei Probleme auf:

  1. Ein großes Workingset (Arbeitsspeicher) aufgrund der Pufferung durch das Serialisierungsmodul

  2. Unregelmäßige Bandbreitennutzung aufgrund von 33 % Inflation nach der Base64-Codierung

Zur Lösung dieser Probleme implementieren Sie die IXmlSerializable-Schnittstelle, um die Serialisierung und Deserialisierung zu steuern. Implementieren Sie insbesondere die WriteXml-Methode und die ReadXml-Methode, um die Daten zu segmentieren.

So implementieren Sie serverseitige Segmentierung:

  1. Die Webmethode muss die ASP.NET-Pufferung auf dem Servercomputer deaktivieren und einen Typ zurückgeben, der IXmlSerializable implementiert.

  2. Der Typ, der IXmlSerializable implementiert, segmentiert die Daten in der WriteXml-Methode.

So implementieren Sie clientseitige Verarbeitung

  1. Ändern Sie die Webmethode auf dem Clientproxy so, dass der Typ zurückgegeben wird, der IXmlSerializable implementiert. Sie können SchemaImporterExtension verwenden, um diesen Vorgang automatisch auszuführen, aber dies wird hier nicht beschrieben.

  2. Implementieren Sie die ReadXml-Methode, um den segmentierten Datenstream zu lesen und die Bytes auf den Datenträger zu schreiben. Diese Implementierung löst auch Statusereignisse aus, die von einem grafischen Steuerelement, z. B. einer Statusleiste, verwendet werden können.

Beispiel

Das folgende Codebeispiel veranschaulicht die Webmethode auf dem Client, mit der die ASP.NET-Pufferung deaktiviert wird. Es zeigt zudem die clientseitige Implementierung der IXmlSerializable-Schnittstelle, die die Daten in der WriteXml-Methode segmentiert.

Kompilieren des Codes

Siehe auch

Konzepte

Benutzerdefinierte Serialisierung

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.