2011-07-27 5 views
2

WCF를 통한 이진 데이터 전송뿐만 아니라 WCF에 대한 지식이 제한되어 있으므로이 질문은 다소 기초적인 것일 수 있습니다.WCF를 통해 이진 데이터 보내기 : 이진 대 MTOM 인코딩

BinaryMessageEncodingBindingElementMtomMessageEncodingBindingElement으로 데이터를 보내는 것의 차이점을 알고 싶습니다. Large Data and Streaming에있는 MSDN에서이 페이지를 읽은 후에 어떤 접근법을 사용해야하는지 아직 확실하지 않습니다.

작은 질문 : 첨부 파일이있는 메시지와 MTOM 메시지가 같은 것입니까?

+2

대부분 상호 운용성에 관한 내용입니다. 상호 운용 가능한 서비스를 원하십니까? Mtom을 사용하십시오. WCF 클라이언트에서만 서비스를 호출 하시겠습니까? 바이너리 메시지 인코딩을 사용하십시오. –

답변

8

MTOM은 다중 부분 MIME 인코딩 메시지를 사용하여 크기가 크고 순수한 바이너리로 base64 인코딩하기에는 너무 비싸지는 메시지 부분을 보내는 표준입니다. SOAP 메시지 자체는 메시지의 초기 부분으로 보내지고 WCF와 같은 웹 서비스 소프트웨어 스택은 메시지의 단일 표현을 생성하기 위해 다시 결합 할 수있는 이진 부품에 대한 참조를 포함합니다.

바이너리 인코딩은 전적으로 WCF의 독점적이며 실제로는 큰 메시지와 관련이 없습니다. 그것은 전선을 통해 훨씬 더 작고 텍스트 기반 형식보다 더 빨리 파싱하는 XML Infoset의 이진 표현을 제공합니다. 대량의 바이너리 데이터 덩어리를 보내는 경우, 전송되는 다른 바이트와 정확하게 일치합니다.

스트리밍은 모든 메시지 형식과 함께 사용할 수 있습니다. 이는 데이터가 네트워크를 통해 작성되는 경우와 네트워크 전송에 제시되기 전에 메모로 완전히 버퍼링되는 경우에 관한 것입니다. 작은 메시지는 전송하기 전에 버퍼링하는 것이 바람직하며 큰 메시지, 특히 큰 바이너리 청크 또는 스트림이 포함 된 메시지는 스트리밍이 필요하거나 메모리 리소스를 소모합니다.

+0

자세한 답을 보내 주셔서 감사합니다! MTOM은 SMTP 메시지의 첨부 파일과 유사한 첨부 파일이있는 SOAP 메시지입니까? –

+0

맞습니다. –

+0

@Drew Marsh,하지만 어떻게 내부에 바이너리 데이터를 포함시킬 수 있습니까 (withougt는 64를 기본으로 디코드). 그러면 http로 전송할 수 있습니까? –