Quelle surcharge supplémentaire est générée lors de l’envoi d’un fichier via un service Web sous forme de tableau d’octets ?

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

  •  08-06-2019
  •  | 
  •  

Question

Ce question et réponse montre comment envoyer un fichier sous forme de tableau d'octets via un service Web XML.Quelle surcharge est générée par l’utilisation de cette méthode pour le transfert de fichiers ?Je suppose que les données ressemblent à ceci :

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

Si ce format est correct, les octets doivent d'abord être convertis en caractères UTF-8.Chacun de ces caractères alloue 8 octets.Les octets sont-ils stockés en caractères base 10, hexadécimaux ou binaires ?Quelle est la taille du fichier lors de son envoi en raison des données XML et du codage des caractères ?La compression est-elle intégrée aux services Web ?

Était-ce utile?

La solution

Généralement, un tableau d'octets est envoyé sous forme de base64 chaîne codée, pas sous forme d'octets individuels dans les balises.

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

Le base64 la version codée concerne 137% de la taille du contenu original.

Autres conseils

J'utilise cette méthode pour certains webservices internes de l'entreprise, et je n'ai pas remarqué de ralentissements majeurs (mais cela ne veut pas dire qu'elle n'est pas là).

Vous pouvez probablement utiliser l'un des nombreux outils d'analyse du trafic réseau pour mesurer la taille des données et porter un jugement sur cette base.

Je ne suis pas sûr de tous les détails (compression, encodage, etc.) mais j'utilise généralement simplement Requin filaire pour analyser le trafic réseau (tout en essayant différentes méthodes) ce qui vous permet ensuite de voir exactement comment il est envoyé.

Par exemple, s'il est compressé, le bloc de données du paquet ne devrait pas être lisible sous forme de texte brut... cependant, s'il n'est pas compressé, vous verrez simplement du vieux texte XML brut... comme vous le verriez avec le trafic HTTP, ou même FTP. dans certains cas.

Pour faire écho à ce que Kevin a dit, dans les services Web .net, si vous disposez d'un tableau d'octets, il est envoyé par défaut sous forme de chaîne codée en base64.Vous pouvez également spécifier au préalable l’encodage du tableau d’octets.

Évidemment, une fois qu'elle arrive au serveur (ou au client), vous devez décoder manuellement la chaîne dans un tableau d'octets car cela ne se fait malheureusement pas automatiquement pour vous.

Le principal impact sur les performances ne viendra pas du transfert du fichier encodé, mais du traitement que le serveur doit effectuer pour encoder le fichier avant le transfert (à moins que les fichiers ne changent pas souvent et que le fichier encodé ne soit pas modifié). la version peut être mise en cache d'une manière ou d'une autre).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top