웹 서비스를 통해 파일을 바이트 배열로 보낼 때 추가 오버헤드가 얼마나 발생합니까?

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

  •  08-06-2019
  •  | 
  •  

문제

이것 질문과 답변 XML 웹 서비스를 통해 파일을 바이트 배열로 보내는 방법을 보여줍니다.파일 전송에 이 방법을 사용하면 얼마나 많은 오버헤드가 발생합니까?나는 데이터가 다음과 같다고 가정합니다.

<?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 데이터 및 문자 인코딩으로 인해 전송되는 파일의 크기는 얼마나 됩니까?웹 서비스에 압축이 내장되어 있나요?

도움이 되었습니까?

해결책

일반적으로 바이트 배열은 다음과 같이 전송됩니다. base64 태그의 개별 바이트가 아닌 인코딩된 문자열입니다.

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

그만큼 base64 인코딩된 버전은 대략 137% 원본 콘텐츠의 크기입니다.

다른 팁

나는 일부 내부 회사 웹 서비스에 이 방법을 사용하고 있는데 큰 속도 저하를 발견하지 못했습니다(그러나 이것이 존재하지 않는다는 의미는 아닙니다).

수많은 네트워크 트래픽 분석 도구 중 하나를 사용하여 데이터 크기를 측정하고 이를 기반으로 판단을 내릴 수 있습니다.

모든 세부 사항(압축, 인코딩 등)에 대해 잘 모르겠지만 일반적으로 다음을 사용합니다. 와이어샤크 네트워크 트래픽을 분석하여(다양한 방법을 시도하면서) 트래픽이 어떻게 전송되는지 정확하게 확인할 수 있습니다.

예를 들어, 압축된 경우 패킷의 데이터 블록을 일반 텍스트로 읽을 수 없어야 합니다. 그러나 압축되지 않은 경우 HTTP 트래픽 또는 FTP에서 볼 수 있는 것처럼 일반 오래된 XML 텍스트만 표시됩니다. 어떤 경우에는.

Kevin이 말한 내용을 반영하기 위해 .net 웹 서비스에서 바이트 배열이 있는 경우 기본적으로 base64로 인코딩된 문자열로 전송됩니다.바이트 배열의 인코딩을 미리 지정할 수도 있습니다.

분명히 서버(또는 클라이언트)에 도달하면 문자열을 수동으로 다시 바이트 배열로 디코딩해야 합니다. 불행하게도 이 작업은 자동으로 수행되지 않습니다.

주요 성능 저하는 인코딩된 파일의 전송에서 발생하는 것이 아니라 파일 사전 전송을 인코딩하기 위해 서버가 수행해야 하는 처리에서 발생합니다(파일이 자주 변경되지 않고 인코딩된 파일이 버전은 어떻게든 캐시될 수 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top