4 votes

Combien d'overheads supplémentaires sont générés lors de l'envoi d'un fichier via un service web sous forme de tableau d'octets ?

Ce site question et réponse montre comment envoyer un fichier sous forme de tableau d'octets via un service web XML. Combien de frais généraux sont générés par l'utilisation de cette méthode pour le transfert de fichiers ? Je suppose que les données ressemblent à quelque chose comme 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 base 10, en hexagone ou en caractères binaires ? Dans quelle mesure le fichier semble-t-il plus volumineux 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 ?

11voto

Kevin Dente Points 7732

En général, un tableau d'octets est envoyé sous la forme d'un fichier base64 et non comme des octets individuels dans les balises.

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

Les base64 La version codée est d'environ 137% de la taille du contenu original.

0voto

Mark Glorie Points 2300

J'utilise cette méthode pour certains services web internes à l'entreprise, et je n'ai pas remarqué de ralentissements majeurs (mais cela ne veut pas dire qu'il n'y en a pas).

Vous pourriez probablement utiliser l'un des nombreux outils d'analyse du trafic réseau pour mesurer la taille des données et prendre une décision sur cette base.

0voto

Adam Haile Points 12576

Je ne suis pas sûr de tous les détails (compression, encodage, etc.) mais j'utilise généralement simplement WireShark pour analyser le trafic réseau (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 en texte brut... mais s'il n'est pas compressé, vous ne verrez que du texte xml brut... comme vous le verriez avec le trafic HTTP, ou même FTP dans certains cas.

0voto

lomaxx Points 32540

Pour faire écho à ce que Kevin a dit, dans les services web .net, si vous avez un tableau d'octets, il est envoyé comme une chaîne encodée base64 par défaut. Vous pouvez également spécifier l'encodage du byte array au préalable.

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

0voto

17 of 26 Points 15941

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X