메시지 전송 최적화 메커니즘

SOAP MTOM(Message Transmission Optimization Mechanism)은 W3C(World Wide Web Consortium)에서 개발된 표준입니다. MTOM은 메시지의 부분을 선택적으로 다시 인코딩하여 SOAP 메시지의 연결 유형 또는 전송을 최적화하기 위한 메커니즘을 설명하지만 XML 정보 세트(Infoset)를 SOAP 애플리케이션에 표시합니다.

웹 서비스 요청과 함께 이미지나 파일과 같은 2진 첨부 파일을 전송하는 여러 이유가 있습니다. 다음과 같은 방식으로 수행할 수 있습니다.
  • SOAP 페이로드에서 base64 인라인으로 인코딩. 그러나 인코딩 인라인은 SOAP 메시지의 크기를 확장하려는 경향이 있습니다. base64 인코딩은 2진 데이터의 크기를 배가시킬 수 있습니다.
  • WS-I(Web Services Interoperability Organization) 첨부 파일 프로파일에 따라 SwA(SOAP with Attachments)를 사용하여 메시지 인코딩. WebSphere® Application Server는 현재 이 메소드를 지원합니다.
  • XOP(XML-binary Optimized Packaging)를 사용하여 2진 메시지 전송의 최적화 제공. 최적화는 2진 데이터나 컨텐츠에 대해서만 사용 가능합니다. MTOM은 HTTP를 통해 SOAP와 MIME의 컨텍스트에서 XOP를 사용합니다.

XOP는 SOAP 및 MIME 패키징에만 적용 가능할 뿐만 아니라 XML 정보 세트와 패키징 메커니즘에도 적용 가능한 2진 컨텐츠를 포함한 XML 정보 세트에 대한 직렬화 메커니즘을 정의합니다. 루트 부분으로 XML 문서가 있는 MIME 멀티파트/관련 패키지와 유사해 보이는 XML의 대체 직렬화입니다. 해당 루트 부분은 base64-인코딩 데이터가 base64 인코딩이 아닌 MIME 부분 중 하나에 대한 참조로 대체되는 점을 제외하고, 문서의 XML 직렬화와 매우 유사합니다. 이 참조로 인코딩과 연관된 처리에서 벌크 및 오버헤드를 피할 수 있습니다. 2진 데이터를 직접 XML 세계로 적용할 수 있는 유일한 방법은 인코딩입니다.

MTOM 맵핑 생성이 불가능한 경우 XOP는 사용 안함으로 설정됩니다. XOP가 사용 불가능한 경우 2진 데이터는 MIME 첨부를 사용하여 전송되지 않습니다. 대신, 2진 데이터는 일반적인 경우처럼 base64 인코딩됩니다.

MTOM 스펙은 세 개의 다른 부분으로 정의됩니다.
  • 최적화된 전송을 위한 추상 기능 또는 SOAP 메시지에 대한 연결 형식. 전송자, 수신자 및 중개에서 SOAP 프로세서의 동작뿐 아니라 최적화 기술의 설명이 일반적이고 MIME, HTTP 등과 같은 기술에 대한 참조를 포함하지 않는다는 점에서 이 기능은 추상입니다. 최적화 기술은 SOAP 프로세서에 대한 SOAP 엔벨로프 정보 세트 보기를 확인하는 데 중점을 두며 xs:base64Binary 데이터 유형의 정규화 렉시칼 표시로 액세스 가능한 SOAP 엔벨로프 정보 세트의 특정 컨텐츠를 선택적으로 인코딩합니다.

    이 추상 기능을 구현하려면 최적화된 연결 유형 및 특정 전송 시 최적화된 연결 유형이 플로우되는 방식의 두 측면의 구체적인 스펙이 필요합니다.

  • MTOM 스펙의 두 번째 부분은 직렬화 측면을 다루며 규범적으로 MIME 멀티파트/관련 XOP 패키징에 따라 다릅니다. 직렬화 측면에서 MTOM이 XOP와 관련됩니다.
  • 구체적 SOAP HTTP 바인딩 레벨 기능으로 MTOM은 직렬화를 확장합니다. 이 부분은 HTTP 바인딩이 SOAP MTOM 메시지를 보유 중인 XOP 패키지를 전송하는 데 사용될 수 있는 방법을 설명합니다. 이 부분은 XML 1.0 전용 사용과 같이 XOP 패키지로 SOAP MTOM 메시지의 가능한 직렬화에 대한 일부 제한조건도 둡니다.

JAX-WS(Java™ API for XML Web Services)는 MTOM을 사용하여 2진 데이터 첨부를 전송하기 위한 지원을 추가합니다. JAX-WS는 JAX-WS 2.0, JAXB 2.0 및 SAAJ 1.3을 포함하는 웹 서비스에 대해 새로 다시 설계된 API 스택의 중심부입니다. API 스택은 통합된 스택이라고 합니다. JAX-WS는 웹 서비스와 웹 애플리케이션에서 JAX-RPC의 위치를 차지하도록 디자인됩니다.

첨부 방법

값 또는 참조별 첨부는 XML-포맷 메시지의 불투명한 데이터 처리를 위해 널리 채택된 기술입니다.
  • 은 불투명한 데이터 컨텐츠가 base64 또는 16진 텍스트 인코딩 방법을 사용하여 요소나 속성으로 임베디드되는 경우로, 각각 데이터 유형 xs:base64Binary 및 xs:hexBinary로 XML 스키마에서 성문화됩니다.
  • 참조는 불투명한 데이터 컨텐츠가 URI를 사용하여 요소나 속성으로 외부적으로 참조되는 경우로, 데이터 유형 xs:anyURI로 XML 스키마에서 성문화됩니다.
이 두 기술 중 하나의 사용에는 장점과 단점이 있습니다. MTOM은 이 내재된 첨부 문제를 해결하는 데 중점을 두는 스펙입니다.

다른 표준은 W3C(World Wide Web Consortium)에서 정의되며 SwA(SOAP with Attachments)라고 합니다. SwA는 첨부 파일이 있는 SOAP 메시지를 패키지하는 방법으로 개발되었습니다. 일부 공급업체는 SwA를 지원하지 않기 때문에, SwA는 보다 강력한 MTOM 및 XOP 메커니즘으로 대체될 수 있습니다. SwA 및 MTOM은 개념적으로 유사하며 모두는 MIME 문서에서 MIME 첨부로 2진 데이터를 인코드합니다. MIME 첨부는 대형 2진 페이로드 전송의 성능을 개선합니다.

SwA 및 MTOM 사이의 추가 차이점은 다음을 포함합니다.
  • MTOM은 XOP라는 표준을 사용하며, SOAP 페이로드 내 존재하는 XOP 참조를 정의합니다. 이 참조는 2진 데이터를 포함하는 MIME 첨부 파일을 가리킵니다.
  • MTOM으로, XOP 참조는 논리적으로 2진 데이터를 XML 정보 세트(Infoset)에 포함시킵니다. SwA를 사용하여, href는 실제 XML 문서 외부에 있는 것뿐만 아니라 논리적으로 정보 세트 내에 포함된 데이터를 가리킵니다.
  • MTOM으로, SOAP XML 문서의 일부처럼 2진 첨부 파일은 논리적으로 부호화될 수 있습니다.
  • IBM® 외에, Microsoft .NET는 MTOM을 지원하며, SwA로 찾은 상호 운용성 문제점 일부를 제거합니다. 보조 제출자가 제안된 수정사항을 논의하는 경우 기본 목표로 상호 운용성이 처리됩니다.
MTOM 첨부 방법은 SOAP 인프라를 활용하지만 SwA(SOAP with Attachment) 솔루션에서 제공된 전송 효율성을 얻을 수도 있습니다.

SOAP 1.2 및 SOAP 1.1

SOAP 1.1은 XML 스펙을 기반으로 합니다. 마찬가지로, SOAP 1.1 구현은 몇 년 동안 계속 존재할 것입니다. SOAP 1.1을 여전히 실행 중인 사용자의 경우, 이제 첨부 지원을 위해 MTOM을 사용하는 상호 작용 가능한 방법이 있습니다. SAP, Oracle, Microsoft 및 IBM은 MTOM 1.0용 SOAP 1.1 바인딩 스펙을 W3C로 제출하며, MTOM이 SOAP 1.1 페이로드와 같이 사용할 수 있는 방법을 정의합니다. 스펙은 SOAP 1.1과 이 기술을 사용하기 위해 필요한 SOAP MTOM 및 XOP 스펙에 대해 필요한 수정사항을 자세히 설명합니다. 세부사항은 스펙을 참조하십시오.

MTOM은 SOAP 버전 1.2 기능이며, 정보 세트를 기반으로 합니다. XML 정보 세트 문서를 참조하여 학습하십시오.

MTOM 없이, 스키마(base64 또는 16진)에서 설명되고 XML 문서에 포함된 어떠한 유형으로든 데이터가 인코딩됩니다. 다음 예는 <xsd:base64Binary> 요소로 SOAP 메시지를 표시합니다.

... other transport headers ... 
Content-Type: text/xml; charset=UTF-8

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header/>
  <soapenv:Body>
    <sendImage xmlns="http://org/apache/axis2/jaxws/sample/mtom">
      <input>
        <imageData>R0lGODl  ... more base64 encoded data ...  KTJk8giAAA7</imageData>
      </input>
    </sendImage>
  </soapenv:Body>
</soapenv:Envelope>

MTOM이 사용되면, 첨부를 표시하는 2진 데이터는 SOAP 메시지에 대한 MIME 첨부로 포함됩니다. 다음 예는 첨부 데이터가 있는 MTOM-사용 SOAP 메시지를 표시합니다.

... other transport headers ... 
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_0FE43E4D025F0BF3DC11582467646812; 
type="application/xop+xml"; start="<0.urn:uuid:0FE43E4D025F0BF3DC11582467646813@apache.org>"; 
start-info="text/xml"; charset=UTF-8

--MIMEBoundaryurn_uuid_0FE43E4D025F0BF3DC11582467646812
content-type: application/xop+xml; charset=UTF-8; type="text/xml";
content-transfer-encoding: binary
content-id: 
   <0.urn:uuid:0FE43E4D025F0BF3DC11582467646813@apache.org>

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header/>
  <soapenv:Body>
    <sendImage xmlns="http://org/apache/axis2/jaxws/sample/mtom">
      <input>
        <imageData>
          <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" 
               href="cid:1.urn:uuid:0FE43E4D025F0BF3DC11582467646811@apache.org"/>
        </imageData>
      </input>
    </sendImage>
   </soapenv:Body>
</soapenv:Envelope>
--MIMEBoundaryurn_uuid_0FE43E4D025F0BF3DC11582467646812
content-type: text/plain
content-transfer-encoding: binary
content-id: 
         <1.urn:uuid:0FE43E4D025F0BF3DC11582467646811@apache.org>

... binary data goes here ...
--MIMEBoundaryurn_uuid_0FE43E4D025F0BF3DC11582467646812--

주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_soapmtom
파일 이름:cwbs_soapmtom.html