Cómo: Fragmentar datos serializados
Dos problemas que se producen al enviar los conjuntos de datos grandes en mensajes del Servicio Web son:
Un espacio de trabajo grande (memoria) debido al almacenamiento en búfer por el motor de la serialización.
Consumo de ancho de banda inmoderado debido a 33 por ciento inflación después de la codificación de Base64.
Para resolver estos problemas, implemente la interfaz IXmlSerializable para controlar la serialización y deserialización. Específicamente, implemente WriteXml y los métodos ReadXml al fragmento los datos.
Para implementar la fragmentación del lado del servidor
En el equipo del servidor, el método Web se debe apagar del almacenado en búfer de ASP.NET y devolver un tipo que implementa IXmlSerializable.
El tipo que implementa IXmlSerializable fragmenta los datos en el método WriteXml.
Para implementar el procesamiento del lado cliente
Modifique el método Web en el proxy de cliente para devolver el tipo que implementa IXmlSerializable. Puede utilizar un SchemaImporterExtension para realizar esta acción automáticamente, pero no se muestra aquí.
Implemente el método ReadXml para leer la secuencia de datos fragmentada y escribir los bytes en el disco. Esta implementación también aumenta los eventos de progreso que pueden ser utilizados por un control gráfico, como una barra de progreso.
Ejemplo
El ejemplo de código siguiente muestra el método Web en el cliente que desactiva el almacenado en búfer de ASP.NET. También muestra la implementación del lado cliente de la interfaz IXmlSerializable que fragmenta los datos en el método WriteXml.
Compilación del código
- El código utiliza los siguientes nombres de espacios: System, System.Runtime.Serialization, System.Web.Services, System.Web.Services.Protocols, System.Xml, System.Xml.Serialization, y System.Xml.Schema.
Consulte también
Conceptos
Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.