¿Cuánta sobrecarga adicional se genera al enviar un archivo a través de un servicio web como una matriz de bytes?

StackOverflow https://stackoverflow.com/questions/11820

  •  08-06-2019
  •  | 
  •  

Pregunta

Este pregunta y respuesta muestra cómo enviar un archivo como una matriz de bytes a través de un servicio web XML.¿Cuánta sobrecarga se genera al utilizar este método para la transferencia de archivos?Supongo que los datos se parecen a esto:

<?xml version="1.0" encoding="UTF-8" ?>
<bytes>
    <byte>16</byte>
    <byte>28</byte>
    <byte>127</byte>
    ...
</bytes>

Si este formato es correcto, primero se deben convertir los bytes a caracteres UTF-8.Cada uno de estos caracteres asigna 8 bytes.¿Los bytes se almacenan en caracteres de base 10, hexadecimales o binarios?¿Cuánto más grande parece el archivo cuando se envía debido a los datos XML y la codificación de caracteres?¿La compresión está integrada en los servicios web?

¿Fue útil?

Solución

Normalmente se envía una matriz de bytes como base64 cadena codificada, no como bytes individuales en etiquetas.

http://en.wikipedia.org/wiki/Base64

El base64 La versión codificada es sobre 137% del tamaño del contenido original.

Otros consejos

Utilizo este método para algunos servicios web corporativos internos y no he notado ninguna desaceleración importante (pero eso no significa que no esté ahí).

Probablemente podría utilizar cualquiera de las numerosas herramientas de análisis de tráfico de red para medir el tamaño de los datos y tomar una decisión basada en eso.

No estoy seguro de todos los detalles (comprimir, codificar, etc.) pero normalmente solo uso alambreshark para analizar el tráfico de la red (mientras prueba varios métodos), lo que luego le permite ver exactamente cómo se envía.

Por ejemplo, si está comprimido, el bloque de datos del paquete no debería poder leerse como texto sin formato... sin embargo, si no está comprimido, solo verá texto xml antiguo y sin formato... como lo vería con el tráfico HTTP, o incluso FTP. en algunos casos.

Para hacernos eco de lo que dijo Kevin, en los servicios web .net, si tiene una matriz de bytes, se envía como una cadena codificada en base64 de forma predeterminada.También puede especificar la codificación de la matriz de bytes de antemano.

Obviamente, una vez que llega al servidor (o cliente), debe decodificar manualmente la cadena nuevamente en una matriz de bytes, ya que desafortunadamente esto no se hace automáticamente.

El principal impacto en el rendimiento no será la transferencia del archivo codificado, sino el procesamiento que el servidor tiene que hacer para codificar el archivo antes de la transferencia (a menos que los archivos no cambien con frecuencia y el archivo codificado no cambie con frecuencia). la versión se puede almacenar en caché de alguna manera).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top