Quanto sovraccarico aggiuntivo viene generato quando si invia un file tramite un servizio Web come array di byte?

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

  •  08-06-2019
  •  | 
  •  

Domanda

Questo domanda e risposta mostra come inviare un file come array di byte tramite un servizio Web XML.Quanto sovraccarico viene generato utilizzando questo metodo per il trasferimento di file?Presumo che i dati siano simili a questi:

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

Se questo formato è corretto, i byte devono prima essere convertiti in caratteri UTF-8.Ciascuno di questi caratteri alloca 8 byte.I byte sono memorizzati in caratteri base 10, esadecimali o binari?Quanto più grande appare il file mentre viene inviato a causa dei dati XML e della codifica dei caratteri?La compressione è integrata nei servizi Web?

È stato utile?

Soluzione

In genere un array di byte viene inviato come a base64 stringa codificata, non come singoli byte nei tag.

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

IL base64 la versione codificata riguarda 137% della dimensione del contenuto originale.

Altri suggerimenti

Utilizzo questo metodo per alcuni servizi web aziendali interni e non ho notato grossi rallentamenti (ma ciò non significa che non ci siano).

Probabilmente potresti utilizzare uno qualsiasi dei numerosi strumenti di analisi del traffico di rete per misurare la dimensione dei dati e formulare un giudizio basato su ciò.

Non sono sicuro di tutti i dettagli (compressione, codifica, ecc.) ma di solito utilizzo semplicemente WireShark per analizzare il traffico di rete (provando vari metodi) che poi ti permette di vedere esattamente come viene inviato.

Ad esempio, se è compresso, il blocco dati del pacchetto non dovrebbe essere leggibile come testo normale...tuttavia, se non è compresso, vedrai solo il vecchio testo xml...come vedresti con il traffico HTTP o anche FTP in certi casi.

Per riecheggiare ciò che ha detto Kevin, nei servizi Web .net se si dispone di un array di byte, viene inviato come stringa codificata base64 per impostazione predefinita.È inoltre possibile specificare in anticipo la codifica dell'array di byte.

Ovviamente, una volta arrivata al server (o al client) è necessario decodificare manualmente la stringa in un array di byte poiché sfortunatamente questo non viene fatto automaticamente per te.

Il principale calo di prestazioni non sarà causato dal trasferimento del file codificato, ma dall'elaborazione che il server deve eseguire per codificare il file prima del trasferimento (a meno che i file non cambino spesso e il file codificato la versione può essere memorizzata nella cache in qualche modo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top