Quanta sobrecarga extra é gerada ao enviar um arquivo por um serviço da Web como uma matriz de bytes?

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

  •  08-06-2019
  •  | 
  •  

Pergunta

Esse pergunta e resposta mostra como enviar um arquivo como uma matriz de bytes por meio de um serviço Web XML.Quanta sobrecarga é gerada usando este método para transferência de arquivos?Presumo que os dados sejam mais ou menos assim:

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

Se este formato estiver correto, os bytes deverão primeiro ser convertidos em caracteres UTF-8.Cada um desses caracteres aloca 8 bytes.Os bytes são armazenados em caracteres de base 10, hexadecimais ou binários?Quanto maior o arquivo aparece quando é enviado devido aos dados XML e à codificação de caracteres?A compactação está incorporada aos serviços da web?

Foi útil?

Solução

Normalmente, uma matriz de bytes é enviado como uma cadeia base64 codificados, não como bytes individuais em etiquetas.

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

A versão base64 codificado é de cerca de 137% do tamanho do conteúdo original.

Outras dicas

Eu uso este método para alguns webservices corporativos internos, e eu não ter notado qualquer grandes slow-downs (mas isso não significa que ele não está lá).

Você provavelmente poderia usar qualquer uma das inúmeras ferramentas de análise de tráfego de rede para medir o tamanho dos dados, e fazer um julgamento baseado fora isso.

Eu não tenho certeza sobre todos os detalhes (compressão, que codificam, etc), mas eu costumo usar apenas WireShark para analisar o tráfego de rede (ao tentar vários métodos), que, em seguida, permite que você veja exatamente como ele é enviado.

Por exemplo, se ele é comprimido do bloco de dados do pacote não deve ser legível como texto simples ... no entanto se é descompactado, você só vai ver texto simples xml velho ... como você veria com tráfego HTTP, ou mesmo FTP em determinados casos.

Para echo o que Kevin disse, em serviços web .net se você tiver uma matriz de bytes é enviado como uma string base64 codificado por padrão. Você também pode especificar a codificação da matriz de bytes de antemão.

Obviamente, uma vez que chega ao servidor (ou cliente) que você precisa para decodificar manualmente a volta string em um array de bytes como isso não for feito automagicamente para você, infelizmente.

O principal impacto no desempenho não vai ser a partir da transferência do arquivo codificado, ele vai ser no processamento que o servidor tem que fazer para codificar o arquivo de pré-transferência (a menos que os arquivos não mudam frequentemente ea versão codificada pode ser armazenada em cache de alguma forma).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top