Mejorar la serialización de DataSet y rendimiento de Remoting

Seleccione idioma Seleccione idioma
Id. de artículo: 829740 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Este artículo describe la optimización del rendimiento para las clases de .NET Framework System.Data.DataSet mayores y proporciona una clase de contenedor de serialización de ejemplo que está optimizada para serializar y deserializar mayores clases DataSet de forma más eficaz.

Más información

Cuando se pasa un objeto System.Data.DataSet entre procesos, .NET Framework Remoting se utiliza para serializar, transporte y para deserializar la clase DataSet . Si pasa un conjunto de datos de clase desde un servicio Web .NET, internamente la clase de Microsoft .NET Framework System.Xml.Serialization.XMLSerializer se utiliza para serializar los datos de DataSet al cliente. Si pasa un DataSet volver de un objeto administrado que se aloja en COM +, se utiliza la clase BinaryFormatter por .NET Framework Remoting. Independientemente del mecanismo de interacción remota utilizada por .NET Framework, la clase DataSet convierte siempre los datos internos a XML al serializar los datos.

La clase DataSet que se incluye con Microsoft .NET Framework 1.0 y .NET Framework 1.1 funciona eficazmente para serializar pequeñas cantidades de datos (cientos de filas) en el DataSet a través de .NET Framework Remoting. El mecanismo de serialización es ineficaz con un mayor conjunto de datos (miles de filas) y conlleva grandes asignaciones de memoria (corta duración) transitorio. Estas asignaciones de memoria reducen la escalabilidad de la aplicación.

Nota Una asignación de memoria transitoria es una asignación de memoria de corta duración que se produce durante el procesamiento de algunas secciones del código. Por lo tanto, durante la serialización, durante la interacción remota durante la deserialización de una clase DataSet , varios objetos administrados se asigna y desasignados internamente por .NET Framework Remoting para procesar la solicitud de interacción remota. Asignar y desasignar objetos administrados a grandes y mayores coloca presión adicional en el sistema de administración de memoria de .NET y reduce la escalabilidad general. Por ejemplo, puede ejecutar una aplicación que tiene muchos invocaciones de método en curso que generan asignaciones de memoria transitorios gran fuera de la memoria antes de completar todas las llamadas de método.

Puede mejorar considerablemente el rendimiento de serialización y la interacción remota para grandes conjuntos de datos mediante un clases de contenedor de serialización o de tipo de suplente correctamente diseñado. Para obtener más información acerca del uso un mecanismo de suplente un mecanismo de contenedor (o ambos) con la clase DataSet de .NET Framework, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/msdnmag/issues/02/12/cuttingedge
Sin embargo, este artículo no proporciona un ejemplo completo de cómo implementar un tipo de suplente DataSet o una clase de contenedor de serialización.

Este artículo contiene una clase de contenedor de serialización de ejemplo que está optimizada para serializar y deserializar grandes conjuntos de datos de forma más eficaz. La clase reduce significativamente las asignaciones de memoria transitorios frente a remotos un típico DataSet . Grandes reducciones en las asignaciones de memoria transitorios también mejoran el tiempo de extremo a extremo de remoting y mejorar la escalabilidad cuando se utiliza un DataSet de mayor.

El ejemplo proporciona una clase de contenedor de serialización que se denomina DataSetSurrogate . La clase DataSetSurrogate se utiliza como una clase contenedora para ningún DataSet que se desea remoto. El componente de servidor pasa el conjunto de datos que desee al constructor DataSetSurrogate y, a continuación, pasa la clase DataSetSurrogate al cliente. En el cliente, se utiliza el método DataSetSurrogate.ConvertToDataSet para extraer el DataSet de la clase DataSetSurrogate .

La clase DataSetSurrogate está marcado como Serializable y todos los campos de la clase DataSetSurrogate también son clases serializables. Por lo tanto, cuando el objeto DataSetSurrogate , la infraestructura de remoting remoto automáticamente serializa y deserializa el objeto DataSetSurrogate y todos sus campos. La ventaja de serialización de clave de la clase DataSetSurrogate a través de la clase DataSet es que la clase DataSetSurrogate serializa los datos en un formato binario. Serializar mediante un formato binario es mucho más eficaz tanto en memoria y CPU que el formato de serialización XML del DataSet existente.

Nota Para maximizar la ventaja de rendimiento de esta clase de contenedor de serialización, el de .NET Framework System.Runtime.Serialization.Formatters.Binary.BinaryFormatter clase cuando el uso remoto. Interacción remota mediante la clase de .NET Framework System.Runtime.Serialization.Formatters.SOAP.SoapFormatter no es tan eficaz cuando se utiliza la clase DataSetSurrogate .

El archivo siguiente está disponible para descargarlo del Centro de descarga de Microsoft:
Contraer esta imagenAmpliar esta imagen
Download
Download the SurrogateSample.exe package now.Para obtener información adicional acerca de cómo descargar los archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
119591Cómo obtener Archivos de soporte técnico de Microsoft desde los servicios en línea
Microsoft exploró este archivo en busca de virus. con el software de detección de virus más reciente disponible en la fecha de publicación. Asimismo, el archivo se almacenó en servidores seguros que ayudan a impedir la realización de cambios no autorizados.

Tener acceso a los archivos de ejemplo

Guarde el archivo SurrogateSample.exe a la unidad C del equipo. Desde allí puede extraer la estructura de carpetas. Hay un archivo de Léame en cada carpeta que contiene instrucciones adicionales.

Propiedades

Id. de artículo: 829740 - Última revisión: miércoles, 04 de agosto de 2004 - Versión: 1.4
La información de este artículo se refiere a:
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Palabras clave: 
kbmt kbdownload kbinfo KB829740 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 829740

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com