XOP(XML-binary Optimized Packaging)

XOP(XML-binary Optimized Packaging) 스펙은 2005년 1월 25일 W3C(World Wide Web)에서 표준화되었습니다. SOAP MTOM(Message Transmission Optimization Mechanism)은 HTTP를 통해 SOAP 및 MIME의 컨텍스트에서 XOP를 사용합니다.

XML은 데이터 전송에 널리 사용됩니다. XML은 일반 텍스트, 육안으로 읽을 수 있으며 구성될 수 있기 때문에 잘 구성된 문서 교환에 가장 많이 사용되는 포맷입니다. 예를 들어, 웹 서비스의 SOAP 메시징은 XML을 기반으로 합니다(또는 SOAP 1.2를 포함한 XML Infoset를 기반으로 함). 사람들은 PDF, GIF, JPEG 및 유사한 포맷과 같은 레거시 포맷을 활용하길 원하지만 여전히 XML 모델을 사용하고 있습니다. XML을 사전에 존재하는 데이터 포맷과 통합하려고 하는 요구는 XML 커뮤니티에 대한 오래되고 지속적인 이슈가 되었습니다. 사용자는 XML 1.0 구문을 쉽게 지키지 않는 기존 데이터 포맷을 포기하지 않고 XML의 구조화된 확장 가능 마크업 규칙을 이용하고 싶어 합니다.

웹 서비스의 SOAP 메시징은 보다 광범위하게 사용되기 때문에, 다음 단계는 메시지와 함께 이미지와 워크플로우 데이터와 같이 비-텍스트 기반 데이터를 전송하는 것입니다. 예를 들어, 두 애플리케이션 사이에서 .jpeg 포맷으로 스캔된 문서를 보내려고 할 수 있습니다. 다양한 애플리케이션 사이에 이 데이터를 이해할 수 있는지 여부가 문제가 됩니다.

XML 및 웹 서비스의 많은 가치는 일반 XML 도구를 사용하여 컨텐츠를 작업하는 기능에 있습니다. XML을 설명하고 조작하기 위한 많은 XML 도구 및 표준(구문 분석기, XPath, XQuery, XSLT, XML 암호화 및 디지털 서명과 XML 스키마와 같이)이 이미지와 같이 비-텍스트 데이터를 작업하도록 계획된 것은 아닙니다. 이들 XML 도구는 비-XML 컨텐츠와 작업하지 않습니다. 이들 도구는 텍스트를 필요로 합니다. 어떻게 비-텍스트 데이터(2진 데이터)를 XML로 임베디드하거나 첨부할 수 있는지가 문제입니다. 즉, 2진 파일을 SOAP 메시지로 첨부하는 방법이 필요합니다.

2진 데이터를 직접 XML 세계로 적용할 수 있는 유일한 방법은 인코딩입니다. 보통, Base 64를 사용하여 텍스트로 인코딩하여 XML 문서에 2진 데이터를 임베드할 수 있습니다. Base 64는 당분간 존재하는 직렬화로, 당장 쉽게 구현될 수 있으며 플랫폼에서 상호 운용성이 있습니다. xsi:base64binary 데이터 유형은 XML 스키마에서 이 직렬화를 지원합니다. Base 64는 사용자 2진 데이터를 XML 문서로 밀어 넣을 수 있는 텍스트 표시로 인코딩합니다. Base 64는 2진 데이터를 사용하고 한 번에 3개의 옥텟을 인코딩하여 일련의 ASCII 문자로 변환합니다. 각 옥텟은 ASCII 표준으로 4개의 인쇄 가능한 문자로 표시하는 8개의 비트로 구성되기 때문에 64 ASCII 문자를 사용하여 2진을 표시합니다. 모든 플랫폼은 이 변환을 사용하여 디코딩 및 인코딩할 수 있습니다. 6비트 ASCII는 널리 지원되며 특수 문자를 같이 처리하지 않아도 됩니다. 그러나 큰 메시지의 경우 성능에 영향이 있습니다.

빠른 조작이 필요한 애플리케이션의 경우, Base 64는 솔루션이 아닐 수 있습니다. 이러한 컨텐츠로 색인하고, 조회하고, 변환하고, 암호화하고, 서명하거나 설명할 경우 다른 메커니즘을 사용해야 합니다.

SwA(SOAP with Attachments)로 알려진 첫 번째 첨부 스펙은 개발되었습니다. SwA의 기본 아이디어는 2진 메시지 부분(첨부)이 MIME(Multipurpose Internet Mail Extensions) 첨부로 여겨진다는 것입니다. MIME은 비-ASCII 메일 메시지 첨부 파일의 포맷을 지정하기 위해 널리 구현된 스펙입니다. SwA는 SOAP 본문이 단순히 URI를 사용하여 MIME 메시지 부분(첨부 파일)에 대한 참조를 포함할 수 있음을 지정합니다. 2진 부분은 참조로 첨부됩니다.

SwA의 몇몇 장점에는 다음이 포함됩니다.
  • SwA는 상호 운용성 또는 사용성에서 실패합니다. SOAP 인프라는 SOAP 엔벨로프에서 작성되었으며, 첨부 파일에 대해 잘 동작하지 않았습니다. SwA를 사용한 첨부는 두 데이터 모델이 하나의 메시지에서 사용됨을 의미합니다. 이 두 모델은 기존 XML 기술로 작동되지 않습니다.
  • SwA는 SOAP의 구성 가능한 문자로 동작하지 않습니다. 기본적으로, WS-Security와 같은 표준은 첨부와 작업하도록 작성되지 않았습니다. WS-Security는 디지털로 서명하거나 암호화되어야 하는 모든 데이터에서 작동해야 하며 첨부의 모든 데이터도 의미합니다. 하지만 액세스할 수 없는 경우 동작하지 않으며 서명은 사실상 유효하지 않습니다.

사용자는 기존 비-XML 포맷을 있는 그대로 두어 XML 도구와 인프라에서 옥텟의 불투명한 시퀀스로 처리하려고 합니다. 이러한 방법은 .jpeg 및 .wav와 같이 널리 사용되는 포맷이 XML과 평화롭게 공존할 수 있게 합니다. XOP는 base64-인코딩된 데이터 사용을 조금은 보다 현실적이 되도록 합니다. 현재 XOP만이 base64-인코딩된 데이터를 최적화할 수 있습니다.

XOP 사용은 XML-유형 base64Binary의 인스턴스가, 사용 가능한 경우 MIME 첨부를 사용하여 전송됨을 의미합니다. XOP가 사용 중인 경우 구현은 자동으로 인코딩합니다. 첨부가 base64-인코딩된 데이터로 처리되기 때문에 XOP는 XML 메시지의 데이터 모델을 유지보수합니다. XML 스택이 XOP 인코딩을 이해하는 경우 사용자 애플리케이션은 조금도 변경되지 않아도 됩니다. 예를 들어, .jpeg 사진에 액세스하려고 하는 경우 컨텐츠의 문자 값을 base64-인코딩된 문자열로 가져올 수 있습니다.

XOP는 편안하여 이미 다른 여러 데이터에 대해 사용되는 데이터 교환에서 MIME 메시지에 대해 생각할 방법을 제공합니다. XOP 포맷은 base64 인코딩에 의지하지 않고 멀티파트 MIME을 사용하여 원시 2진 데이터를 XML 1.0 문서로 포함될 수 있게 합니다.

동위 스펙, SOAP MTOM(Message Transmission Optimization Method)은 이 포맷을 SOAP에 바인드하는 방법을 지정합니다. XOP 및 MTOM 표준은 SOAP 1.2 성능을 개선해야 합니다. XOP 및 MTOM은 같이 텍스트 기반 XML과 2진 데이터를 혼합하기 위해 선호되는 방법을 제공합니다. 같이 결합된 MTOM 및 XOP를 사용하여 정보 세트를 여전히 유지하면서 2진으로 연결을 통해 전송해야 되는 메시지의 부분을 선택할 수 있습니다. 이 표준으로 SOAP 엔벨로프 외부의 2진 데이터의 첨부를 메시지 부분으로 사용할 수 있습니다. 하지만 SwA와 달리, 2진 데이터는 하나의 정보 세트를 의미하는 SOAP 엔벨로프 내에 있을 때 많이 처리됩니다.

XOP는 SOAP 및 MIME 패키징에만 적용 가능할 뿐만 아니라 XML 정보 세트와 패키징 메커니즘에도 적용 가능한 2진 컨텐츠를 포함한 XML 정보 세트에 대한 직렬화 메커니즘을 정의합니다. 다른 한편으로, XML은 일반 용도의 좋은 패키징 메커니즘은 아닙니다.

XOP 패키지는 확장 가능한 패키징 포맷(MIME과 같은) 내 XML 정보 세트의 직렬화를 배치하여 작성됩니다. XOP는 연결되어 있는 실제 패키징에 대해 MIME을 재사용합니다. 그런 다음, 64-인코딩된 2진 데이터인 컨텐츠의 선택된 부분이 추출되며 다시 인코딩됩니다. 이는 데이터가 base64에서 디코드되어 패키지에 배치됨을 의미합니다. 선택된 이 부분의 위치는 URI를 사용하여 패키지된 데이터로 링크되는 특수 요소로 XML에 표시됩니다.

SOAP 처리 엔진은 메시지가 연결되기 전에 2진 데이터의 임시 Base 64 인코딩을 수행합니다. 이 임시 인코딩으로 SOAP 프로세서는 Base 64 데이터에서 작동할 수 있습니다. 예를 들어, 데이터의 WS-Signature를 사용하여 헤더로 가져와서 배치할 수 있습니다. 다른 끝에서 비싼 디코딩을 할 필요가 없으며 프로세스는 반대로 동작합니다.

MTOM 및 XOP의 구현은 Java™(JAX-WS)에서 사용 가능합니다.

이 예는 XOP 처리(SOAP) 전에 XML 정보 세트를 표시합니다.
<soap:Envelope
      xmlns:soap='http://www.w3.org/2003/05/soap-envelope'
      xmlns:xmlmime='http://www.w3.org/2004/11/xmlmime'>
  <soap:Body>
    <m:data xmlns:m='http://example.org/stuff'>
      <m:photo xmlmime:contentType='image/png'>/aWKKapGGyQ=</m:photo>
      <m:sig xmlmime:contentType='application/pkcs7-signature'>Faa7vROi2VQ=</m:sig>
    </m:data>
  </soap:Body>
</soap:Envelope>
이 예는 XOP 패키지(SOAP)로 직렬화된 XML 정보 세트를 표시합니다.
MIME-Version: 1.0
Content-Type: Multipart/Related;boundary=MIME_boundary;
    type="application/xop+xml";
    start="<mymessage.xml@example.org>";
    startinfo="application/soap+xml; action=\"ProcessData\""
Content-Description: A SOAP message with my pic and sig in it

--MIME_boundary
Content-Type: application/xop+xml; 
    charset=UTF-8; 
    type="application/soap+xml; action=\"ProcessData\""
Content-Transfer-Encoding: 8bit
Content-ID: <mymessage.xml@example.org>

<soap:Envelope
    xmlns:soap='http://www.w3.org/2003/05/soap-envelope'
    xmlns:xmlmime='http://www.w3.org/2004/11/xmlmime'>
  <soap:Body>
    <m:data xmlns:m='http://example.org/stuff'>
      <m:photo 
  xmlmime:contentType='image/png'><xop:Include 
    xmlns:xop='http://www.w3.org/2004/08/xop/include' 
    href='cid:http://example.org/me.png'/></m:photo>
      <m:sig 
  xmlmime:contentType='application/pkcs7-signature'><xop:Include 
    xmlns:xop='http://www.w3.org/2004/08/xop/include' 
    href='cid:http://example.org/my.hsh'/></m:sig>
    </m:data>
  </soap:Body>
</soap:Envelope>

--MIME_boundary
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-ID: <http://example.org/me.png>

// binary octets for png

--MIME_boundary
Content-Type: application/pkcs7-signature
Content-Transfer-Encoding: binary
Content-ID: <http://example.org/my.hsh>

// binary octets for signature

--MIME_boundary--

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



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