문제

딩을 지정합은 W3C 의 메시지가 전송 최적화 메커니즘,방법의 효율적 전송 바이너리에서 데이터를 웹 서비스를 사용하고 있습니다.

어떻게 그것은 일반적인 작동?

도움이 되었습니까?

해결책

당신이 넣으면 Wireshark (또는 활성화 System.net 로깅) MTOM이 아닌 활성화 서비스에서 Base64로 인코딩 된 이진 데이터가있는 SOAP 요청이 표시됩니다. Base64로 보내면 이진 데이터의 크기가 높아지지만 상호 운용성이 높아집니다.

MTOM을 사용하면 SOAP 메시지는 Base64 인코딩이 자리 표시 자로 대체되는 MIME 메시지로 전송됩니다. 이진 데이터는 구분 제 (각 이진 데이터에 대해 발생) 사이에 배치 한 다음 SOAP 요청의 끝에 배치됩니다. 이진 데이터는 인코딩되지 않은 전송됩니다. IIRC, MTOM은 또한 MIME 메시지로 보내는 것이 비누 호출의 크기를 증가 시킬지 여부를 결정하고 저축을 제공하지 않으면 일반 비누 메시지로 보냅니다.

이것 와이어를 통해 전송 된 메시지의 예를 제공합니다.

다른 팁

그것은 모든 사실과 함께 시작되는 비누가 XML.과를 보낼 때 아무것도 다른 텍스트 보다,예를 들어,이미지-그것으로 변환할 수있는 데이터는 XML 프로세서를 이해할 수 있습니다.

없이딩을 설정합,당신의 이미지로 변환됩니다 base64binary 의 과 위치의 당신의 비누 봉투이다.이는 변환 프로세스는 데이터 지방입니다.

<tns:data>매우 looooooooooooooooooooooong base64binary 의 문자열</tns:data>

여기에 간단한 그림:

enter image description here

와딩을 지정합니,이미지 전송 외부 봉로 MIME 첨부 파일 -에 짧고,그에 따라 보내는 그것의 원본 데이터 유형:jpg,png,gif.물론 그것은 여전히으로 전송되는 데이터는 바이너리,그러나 이 시간이 없는 XML 관련 전환을 피하고,전산 오버헤드가 발생합니다.XOP 온 그림으로 그것이 하나를 제공하는 위치의 구체화된 이미지입니다.

<soap:Envelope>
    <soap:Body>
        <tns:data>
            <xop:include href="SomeUniqueID-ThatLeadsToTheImage"/>
        </tns:data>
    </soap:Body>
</soap:Envelope>

콘텐츠 id:"SomeUniqueID"
Content-Type:이미지/png

이미지 데이터는 여기에 바이너리

다른 답변이 언급하지 않은 몇 가지 요소가 있습니다. MTOM이 왜 기본값으로 사용되지 않는지 생각할 수도 있습니다. "더 빠르게" 문자 메시지 인코딩보다 (Base64). MTOM이 항상 빠르지 않기 때문입니다. MTOM은 오버 헤드와 함께 제공되므로 큰 메시지 전송에만 사용해야합니다. 작은 크기의 메시지의 경우 MTOM의 성능은 문자 메시지 인코딩 (Base64)보다 나쁩니다.

MTOM이 큰 메시지에 사용되면 데이터 전송에 원시 바이너리를 사용하므로 Base64보다 빠릅니다. 그것을 이해하려면 Base64가 어떻게 작동하는지 이해해야합니다.

Base64 사용 6 비트 (log2 (64)) 대표합니다 1 캐릭터 이는 Base64가 사용한다는 것을 의미합니다 4 자 24 비트를 나타 내기 위해 (3 바이트). 따라서 메시지 크기가있는 경우 n 바이트, Base64가 사용합니다 4*(N/3) 바이트 귀하의 데이터를 나타내는 것은 의미가 있습니다 1/3까지 느리게 MTOM보다.

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