그들은 첨부 파일이 외부 SOAP 메시지라고 말할 때, 정확히 무엇을 의미합니까? 나는 아마도 첨부 파일이 다른 TCP 패키지로 보내 졌다고 생각하지만 내가 틀렸다고 생각하니?
첫 번째 옵션과 달리 첨부 파일은 실제 SOAP 메시지 페이로드가 아니며 대신 SOAP 문서 내에서 참조됩니다. MTOM과 SWA의 차이는 참조 된 파일의 위치입니다. MTOM의 경우 응답에 포함되지만 SWA에서는 예를 들어 웹에서 리소스에 대한 링크를 얻을 수 있습니다.
MTOM
Content-type: multipart/related;
type="application/xop+xml";
start-info="text/xml"
--uuid:c73c9ce8-6e02-40ce-9f68-064e18843428
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: binary
<?xml version="1.0" ?>
<S:Envelope xmlns:S="...">
<S:Body>
<ns2:downloadImageResponse xmlns:ns2="...">
<return>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include"
href="cid:[email protected]">
</xop:Include>
</return>
</ns2:downloadImageResponse>
</S:Body>
</S:Envelope>
--uuid:c73c9ce8-6e02-40ce-9f68-064e18843428
Content-Id: <[email protected]>
Content-Type: image/png
Content-Transfer-Encoding: binary
SWA (단지 참조)
Content-Type: application/xml;charset=utf-8;
<?xml version="1.0" ?>
<S:Envelope xmlns:S="...">
<S:Body>
<ns2:downloadImageResponse xmlns:ns2="...">
<return>
https://server.com/downloadImagehere.png
</return>
</ns2:downloadImageResponse>
</S:Body>
</S:Envelope>
인라인 (유형 XOP + XML 하나 개 답변 모두)이 3 최소 예가 아래와
Content-Type: application/xml;charset=utf-8; <?xml version="1.0" ?> <S:Envelope xmlns:S="..."> <S:Body> <ns2:downloadImageResponse xmlns:ns2="..."> <return> YTM0NZomIz...potentiallyLargeBase64encodedFileGoesInHere...I2OTsmIzM0NTueYQ== </return> </ns2:downloadImageResponse> </S:Body> </S:Envelope>
위의 옵션 중 Spring Framework의 Spring-WS 프레임 워크에서 가장 잘 작동하는 것이 무엇입니까?
이들은 모두 지원되며 사용할 케이스는 사용 케이스에 따라 조금씩 다릅니다. 필자의 연구에 따르면 MTOM이 사실상의 표준으로 보인다. 나에게 따르면 큰 또는 여러 파일 첨부 파일이있는 경우 특히 유용합니다. 논리적 구성 요소에 메시지를 분할하기 때문에 이진 데이터를 효율적으로 처리 할 수있는 더 많은 옵션을 파서에 제공 할 수 있습니다.
그러나 작은 데이터의 경우 표준 SOAP 프로토콜의 일부이며 메시지에 직접 포함 된 인코딩 된 바이트 배열을 직접 사용하므로 리소스를 포함하기 위해 이동해야합니다. 이식성/호환성이 중요한 경우 선택할 수있는 방법이 될 수 있습니다.
분명히 독자가 직접 참조를 처리해야합니다. 원하는 참조가 될 수도 있고 그렇지 않을 수도 있습니다.
위의 옵션 중 어느 것이 전송 중에 2 진 콘텐츠를 인코딩하는지 명확하지 않습니다. 여기에 설명 된 바이너리 MIME은 무엇입니까? http://www.crosschecknet.com/intro_to_mtom.php? 전송 중에 바이너리 데이터가 여전히 텍스트로 변환 되었습니까?
MTOM과 인라인은 모두 파일을 Base64 인코딩 된 문자열로 인코딩합니다. 외부 링크의 경우 관련이 없습니다.
SWA를 사용할 때 데이터 형식은 무엇입니까?
Base64encoded 바이트 배열
캔트 당신에게 완전한 대답을하지만,이 링크는 도움이 될 것입니다 : HTTP : //wso2.org/library/1148합니다. 색깔있는 도표를 부분적으로 아래로보십시오. 비누 텍스트가 하나의 파트로 나타나며 "Id"로 이진 파트를 참조하는 MIME 다중 파트 메시지입니다. 바이너리의 base64 인코딩은 필요하지 않습니다. 이 방법은 상당히 널리 퍼져 있으며 HTTP 표준이기 때문에 soap조차도 없다. – davidfrancis
... Cont ... 또는 웹 서비스마다 다르므로 프레임 워크가 지원하지 않으면 놀랄 것이다. GL HTH – davidfrancis
mtom은 mime multi 부분 메시지로 기본 64 enc 데이터를 투명하게 변환하는 것처럼 보이므로 테마를 변형 한 것입니다! – davidfrancis