Estoy escribiendo un programa para formatear 100s de datos de cadena de MB (cerca de un concierto) en xml == y estoy obligado a devolverlo como respuesta a una solicitud de HTTP (GET).cadena muy grande en la memoria
estoy usando un StringWriter/XmlWriter para construir un XML de los registros de un bucle devolviendo el
using (StringWriter writer = new StringWriter())
using (writer = XmlWriter.Create(writer, settings)) //where settings are the xml props
writer.ToString()
durante las pruebas vi unas cuantas --out de la memoria exceptions-- y bastante ni idea de cómo para encontrar una solución? ¿Tienen alguna sugerencia para una entrega optimizada de la respuesta?
¿hay una forma eficiente de memoria de codificar los datos? o tal vez fragmentar los datos - No puedo pensar en cómo devolverlo sin la construcción de todo el asunto en un objeto de cadena enorme
gracias
- algunas aclaraciones - esto es un ASP .net webservices app sobre un enlace de gigabit ethernet como lo señaló josh. No estoy muy familiarizado con eso, por lo que todavía es una curva de aprendizaje.
estoy usando XMLWriter para crear el XML y crear una cadena de ella usando cuerdas
algunas estadísticas - tamaño xml = respuesta de alrededor de 385 megas (mi tamaño de los datos crecerán muy rápidamente a mucho más que esto)
cadena tamaño del objeto según los cálculos de un perfilador de memoria = alcanzó un máximo de 605MB
y gracias a todos los que respondieron ...
1 GB de XML como una respuesta HTTP? De Verdad? –
Esto suena como una mala idea. –
Estoy tentado de decir "tira algo de hardware" (bromeando). 500 MB (o 350 MB o 1 GB) por cliente no es escalable. Tal vez podrías arrojar más luz sobre XML que estás generando. Esto http://msdn.microsoft.com/en-us/library/aa528818.aspx podría ayudar. – PRR