4

この質問と回答は、XML Web サービスを介してファイルをバイト配列として送信する方法を示しています。この方法をファイル転送に使用すると、どのくらいのオーバーヘッドが発生しますか? データは次のようになっていると思います。

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

この形式が正しい場合は、まずバイトを UTF-8 文字に変換する必要があります。これらの各文字には 8 バイトが割り当てられます。バイトは 10 進法、16 進法、または 2 進文字で保管されていますか? XML データと文字エンコーディングのために、ファイルが送信されるとどのくらい大きくなりますか? 圧縮は Web サービスに組み込まれていますか?

4

5 に答える 5

11

通常、バイト配列はbase64、タグ内の個々のバイトとしてではなく、エンコードされた文字列として送信されます。

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

base64エンコードされたバージョンは、元のコンテンツの約137%のサイズです。

于 2008-08-15T00:39:05.987 に答える
0

主なパフォーマンス ヒットは、エンコードされたファイルの転送によるものではなく、転送前にファイルをエンコードするためにサーバーが実行しなければならない処理にあります (ファイルが頻繁に変更されず、エンコードされたファイルが変更されない限り)。バージョンは何らかの方法でキャッシュできます)。

于 2008-08-23T19:24:17.067 に答える
0

私はこの方法をいくつかの企業内 Web サービスに使用していますが、大きな速度低下は見られませんでした (しかし、それが存在しないというわけではありません)。

おそらく、多数のネットワーク トラフィック分析ツールのいずれかを使用してデータのサイズを測定し、それに基づいて判断を下すことができます。

于 2008-08-15T00:36:54.073 に答える
0

すべての詳細(圧縮、エンコードなど)についてはわかりませんが、通常はWireSharkを使用してネットワーク トラフィックを分析し(さまざまな方法を試しながら)、送信方法を正確に確認できます。

たとえば、圧縮されている場合、パケットのデータ ブロックはプレーン テキストとして読み取り可能であってはなりません...ただし、圧縮されていない場合は、プレーンな古い xml テキストが表示されます...HTTP トラフィックや FTP でさえ見られるように場合によっては。

于 2008-08-15T00:40:14.033 に答える
0

Kevin が言ったことを反映するために、.net Web サービスでは、バイト配列がある場合、デフォルトで base64 でエンコードされた文字列として送信されます。バイト配列のエンコーディングを事前に指定することもできます。

明らかに、サーバー (またはクライアント) に到達したら、文字列を手動でデコードしてバイト配列に戻す必要があります。残念ながら、これは自動的に行われないためです。

于 2008-08-15T00:48:55.420 に答える