Wie viel zusätzlicher Overhead entsteht, wenn eine Datei als Byte-Array über einen Webdienst gesendet wird?

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

  •  08-06-2019
  •  | 
  •  

Frage

Das Frage und Antwort zeigt, wie eine Datei als Byte-Array über einen XML-Webdienst gesendet wird.Wie viel Overhead entsteht durch die Verwendung dieser Methode zur Dateiübertragung?Ich gehe davon aus, dass die Daten in etwa so aussehen:

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

Wenn dieses Format korrekt ist, müssen die Bytes zunächst in UTF-8-Zeichen konvertiert werden.Jedes dieser Zeichen belegt 8 Bytes.Werden die Bytes in Basis-10-, Hex- oder Binärzeichen gespeichert?Wie viel größer erscheint die Datei beim Senden aufgrund der XML-Daten und der Zeichenkodierung?Ist die Komprimierung in Webdienste integriert?

War es hilfreich?

Lösung

Normalerweise wird ein Byte-Array als gesendet base64 codierte Zeichenfolge, nicht als einzelne Bytes in Tags.

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

Der base64 Die verschlüsselte Version ist ungefähr 137% von der Größe des ursprünglichen Inhalts.

Andere Tipps

Ich verwende diese Methode für einige unternehmensinterne Webservices und habe keine größeren Verlangsamungen festgestellt (das heißt aber nicht, dass sie nicht vorhanden ist).

Sie könnten wahrscheinlich eines der zahlreichen Tools zur Analyse des Netzwerkverkehrs verwenden, um die Größe der Daten zu messen und auf dieser Grundlage ein Urteil zu fällen.

Ich bin mir über alle Details (Komprimierung, Kodierung usw.) nicht sicher, aber ich verwende normalerweise einfach WireShark um den Netzwerkverkehr zu analysieren (und dabei verschiedene Methoden auszuprobieren), sodass Sie dann genau sehen können, wie er gesendet wird.

Wenn es beispielsweise komprimiert ist, sollte der Datenblock des Pakets nicht als einfacher Text lesbar sein. Wenn es jedoch unkomprimiert ist, sehen Sie nur einfachen alten XML-Text ... wie Sie es bei HTTP-Verkehr oder sogar FTP sehen würden in bestimmten Fällen.

Um zu wiederholen, was Kevin gesagt hat: Wenn Sie in .net-Webdiensten über ein Byte-Array verfügen, wird dieses standardmäßig als Base64-codierte Zeichenfolge gesendet.Sie können die Kodierung des Byte-Arrays auch vorher festlegen.

Sobald sie den Server (oder Client) erreicht, müssen Sie die Zeichenfolge natürlich manuell wieder in ein Byte-Array dekodieren, da dies leider nicht automatisch für Sie erfolgt.

Der größte Leistungseinbruch wird nicht durch die Übertragung der kodierten Datei verursacht, sondern durch die Verarbeitung, die der Server durchführen muss, um die Datei vor der Übertragung zu kodieren (es sei denn, die Dateien ändern sich nicht oft und die kodierte Datei ändert sich nicht häufig). Version kann irgendwie zwischengespeichert werden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top