![]() |
IMS 웹서비스 - 첨부 프로파일 |
발행일 | 2009년 00월 00일 |
최신 버전 | IMS 웹서비스 – 첨부 프로파일 버전 1.0 |
이전 버전 |
Copyright © IMS Global Learning Consortium 2007. All Rights Reserved.
이 표준을 배포하거나 제품 또는 서비스 제공을 위해서 활용하고자 한다면, IMS Korea 표준화 포럼 사무국(한국교육학술정보원)에 승인 요청을 하고 이메일을 통해 승인을 받아야 한다. IMS 정식회원 및 기부회원, 개발자 네트워크는 상기의 저작권 공지사항과 이 문장을 사본에 포함시키는 조건 하에 이 표준을 배포 및 활용할 수 있다. 그러나 저작권 공지사항 또는 IMS 명칭이 표기된 부분을 삭제하는 등, 이 표준을 훼손하는 행위는 금지된다. 단, IMS가 승인한 프로젝트그룹의 감독 하에 IMS 표준을 수정하는 경우는 예외적으로 허용된다. 상기 부여된 제한된 승인 내용은 영속적이며, IMS 또는 후임기관 그 누구라도 라이센스를 취소할 수 없다. 이 표준은 어떠한 보증도 하지 않으며, 특히 불침해에 대한 그 어떤 보증도 하지 않는다. 이 표준의 사용에 대한 책임은 온전히 사용자에 의하며, 그 어떤 컨소시엄이나 제공 주체도 이 표준을 사용함으로써 제3자가 직간접적으로 입을 수 있는 피해에 대해 책임지지 않는다.Copyright © 2007 by IMS Global Learning Consortium, Inc. All Rights Reserved.
원안작성 협력기관 : 한국교육학술정보원(IMS Korea 표준화 포럼) | |||
성 명 | 근 무 처 | 직 위 | |
(위 원 장) | 황대준 |
성균관대학교 |
교수 |
(실무위원) | 김성윤 |
(주)포씨소프트 |
이사 |
김 현 |
(주)씨티유니온 |
차장 | |
유욱종 |
(주)다울소프트 |
부장 | |
조성현 |
테크빌닷컴(주) |
부사장 | |
조용상 |
한국교육학술정보원 |
팀장 | |
차남주 |
(주)디유넷 |
부사장 | |
최성기 |
SK C&C |
과장 | |
(자문위원) | 권희춘 |
수원여대 |
교수 |
김종현 |
계원디자인예술대학 |
교수 | |
김현진 |
한국교원대학교 |
교수 | |
손진곤 |
한국방송통신대학교 |
교수 | |
정광식 |
한국방송통신대학교 |
교수 | |
한태인 |
(주)메디오피아 |
부사장 | |
(간 사) | 신성욱 |
한국교육학술정보원 |
연구원 |
표 4.1 워크플로우 설명에 사용되는 주요 용어
용어 | 정의 |
종단 (endpoint) | 참조될 수 있는 개체, 프로세서 또는 자원, 그리고 웹서비스 메시지가 기원한 곳이거나 목표로 하는 곳 |
초기자(initiator) | SOAP 메시지와 첨부를 응답자에게 보냄으로써 웹서비스를 소비하는 어플리케이션 |
응답자(respondent) | 웹서비스를 노출하고 초기자로부터 SOAP 메시지와 첨부를 수신하여 처리하는 어플리케이션 |
메시지(message) | SOAP 엔벨로프 내에 캡슐화된 IMS 메시지 |
소스(source) | 메시지를 응답자에게 전송하는 종단 |
목적지(destination) | 초기자로부터 메시지를 수신하는 종단 |
첨부(attachement) | 이 프로파일에서 제공하는 지침을 기반으로 메시지에 첨부되는 비XML 자원 |
그림 4.1 애플리케이션에 대한 웹서비스 지원의 스키마적 표현
다음은 IMS 메시지와 첨부를 교환하는 일반적인 워크플로우를 단계별로 나타낸 것이다. 이 워크플로우는 일반적인 작업의 흐름을 보여준다. 이 워크플로우는 적합한 작업을 보여주며, 세부적인 단계들을 보여주지는 않는다.
식별자 |
내용 |
기본 첨부(Basic Attachment) | |
RATP0001 | IMS에 적합한 웹서비스는 비XML 데이터를 SOAP 메시지로 첨부하기 위해 MTOM을 사용해야 한다. 첨부를 가진 SOAP (SWA)는 웹서비스 모델과 상호 호환되지 않으므로 IMS 웹서비스는 첨부를 가진 SOAP를 사용하지 말아야 한다. 예를 들어, SWA는 WS-보안과 호환되지 않으므로 첨부의 보안을 유지하거나 여러 조직을 아우르는 신뢰경계(trust boundaries)를 확립하기가 어렵다. 이러한 근본적인 문제로 인해, W3C는 비XML 자원을 SOAP 메시지로 첨부하기 위한 방법으로 SWA를 버리고 MTOM을 유일하게 채택하도록 권고하기로 결정하였다. |
RATP0002 | MTOM 첨부를 수신하는 IMS에 적합한 웹서비스는 메시지의 XML 부분을 버퍼링해야 할 필요가 있다. 메시지의 비XML 부분이 XML부분에서 참조된 것과 다른 순서로 되어 있을 경우, 추가적인 버퍼링이 필요할 수 있다. |
RATP0003 | SOAP 1.1을 지원하는 IMS에 적합한 웹서비스는 자원표현(Resource Representation) SOAP 헤더 블록 매커니즘을 사용하지 않는다. RRSHB는 SOAP 1.2버전에서 사용하기 위해 만들어졌다. IMS 베이스 프로파일 은 SOAP 1.1버전의 사용을 명시한다. |
XOP (XML-binary Optimized Packaging) |
|
RATP2001 | XOP 네임스페이스 속성(xmlns:xop=http://www.w3.org/2004/08/xop/include)은 SOAP 엔벨로프 요소에서 사용해야 한다. 접두어 ‘xop’의 사용은 필수사항이 아니다. 이는 XOP <Include> 요소를 사용해 첨부를 식별할 수 있도록 보증한다. |
RATP2002 | 첨부를 식별하기 위한 각 데이터 요소는 첨부의 MIME 유형을 식별하기 위해 반드시 ‘contentType’ 속성을 이용해야 한다.
이는 XOP/MIME 처리로 첨부 콘텐츠를 디코딩 할 수 있도록 한다. 이에 대한 예는 다음과 같다.
<ns1:data xmlmime:contentType="image/jpeg"> ... </ns1> |
RATP2003 | 첨부를 식별하기 위한 각 데이터 요소는 반드시 채워진 ‘href’ 속성을 가진 빈 XOP <Include> 요소를 이용해 첨부된 MIME 부분에 포함된 첨부를 식별한다. ‘href’ 값은 반드시 'cid:URI' 스키마 각각에 대하여 유효한 URI이어야 한다.
<Include> 요소는 MIME 인코딩에 포함된 첨부 문서에 고유한 식별자를 지정하기 위해 사용되며, 그 예는 다음과 같다.
<ns1:data xmlmime:contentType="image/jpeg"> <xop:Include href=cid:thismessage:/resource1.jpg/> </ns1> |
MIME 인코딩(MIME Encoding) | |
RATP4001 | MIME 네임스페이스 속성(xmlns:xmlmime="http://www.w3.org/2004/06/xmlmime)은 반드시 SOAP 엔벨로프 요소에서 사용해야 한다. 접두어 ‘xmlmime’의 사용은 필수사항은 아니다. 이는 첨부의 MIME 유형을 정의할 수 있도록 한다. |
RATP4002 | 첨부가 있을 때 MIME 경계 인코딩의 'Content-type' 필드는 다음과 같이 설정되어야 한다. Content-Type: application/xop+xml;charset=UTF-8;type="application/soap+xml" 이는 SOAP 메시지에 XOP 첨부가 있음을 식별하기 위해서 디코더(decoder)에 의해 사용된다. |
RATP4003 | 각 첨부에 대한 MIME 경계 'Content-ID' 정보는 반드시 관련 XOP <Include> 요소에 지정된 식별자라야 한다(RAPT2003 참조). 이는 첨부가 고유하게 식별될 수 있도록 하며, 예는 다음과 같다. Content-ID: <thismessage:/resource1.jpeg> |
RATP4004 | 각 첨부에 대한 MIME 경계 'Content-Type' 정보는 반드시 데이터 요소에 지정된 MIME-유형이어야 한다. 이는 첨부된 자료의 MIME 유형을 식별하기 위해 사용되며, 예는 다음과 같다. Content-Type: image/jpeg |
RATP4005 | 각 첨부에 대한 MIME 경계 ‘'Content-Transfer-Encoding’ 정보는 반드시 ‘이진’ 집합이어야 한다. 이는 ‘MIME-part’에서 첨부의 인코딩을 식별하기 위함이며, 예는 다음과 같다. Content-Transfer-Encoding: binary |
보안 인코딩(Security Encodings) | |
RATP6004 | IMS에 적합한 웹서비스는 보안을 위한 다이제스트(digests)를 연산하기 위해 반드시 비XML 첨부에 대해서는 베이스64 형식을 사용해야 한다. MTOM은 비XML 데이터를 ‘raw octet’으로 직렬화한다. 옥텟은 베이스64와 같지 않으며 다이제스트 연산 전에 반드시 베이스64 표현으로 변환되어야 한다. |
RATP0005 | IMS에 적합한 웹서비스는 암호화를 위해 반드시 비XML첨부의 베이스64 양식을 사용해야 한다. MTOM은 비XML 데이터를 ‘raw octet’으로 직렬화한다. 옥텟은 베이스64와 같지 않으며 암호화되기 전에 반드시 베이스64 표현으로 변환되어야 한다. 암호화에 의해 생산된 사이퍼 데이터(cipher data)는 그 후에 전송을 위해 옥텟으로 직렬화된다. |
RATP0006 | IMS에 적합한 웹서비스는 생산품질 MTOM (production-quality MTOM) 구현이 가능해질 때까지 IMS 첨부에 대한 단순 베이스64 인코딩을 사용해야 한다. 베이스64로 인코딩된 데이터는 일반적으로 구조화된 XML보다 더 효율적이다. 베이스64 인코딩은 벤더(vendor)들이 MTOM에 대한 전적인 지원을 하기 전까지는 비XML 데이터를 전달하는 최선의 방법이다. 베이스64 인코딩은 차세대 웹 서비스(Advanced Web Services)에 아주 적합하며, XML 인코딩을 위한 매우 효율적인 매커니즘을 제공한다. 여러 개발 플랫폼(.NET 등)은 바이트 배열을 베이스64로 인코딩된 요소로 비교적 쉽게 직렬화한다. 이는 비XML 데이터를 바이트 배열 파라미터로 웹서비스에 전송할 수 있도록 한다. |
속성 |
원래값 |
서비스 그룹 모델 속성(ServiceGroupModel Attributes) | |
Service Group Package Name | ExampleGroup |
WSDLv1.1:NameSpaceRoot | http://www.example/services/ |
WSDLv1.1:TargetNameSpaceLeaf | wsdlfilev1p0 |
WSDLv1.1:TargetNameSpacePrefix | tns |
WSDLv1.1:AbstractFileNameSpaceLeaf | 미사용 |
WSDLv1.1:AbstractFileNameSpacePrefix | 미사용 |
WSDLv1.1:XSDLinkNameSpaceLeaf | 미사용 |
WSDLv1.1:XSDLinkNameSpacePrefix | 미사용 |
WSDLv1.1:MessageHdrNameSpaceLeaf | 미사용 |
WSDLv1.1:MessageHdrNameSpacePrefix | 미사용 |
<wsdl11:definitions name = "ExampleGroupSyncServices" targetNamespace = "http://www.example/services/wsdl/sync/wsdlfilev1p0" xmlns:tns = "http://ww.example/services/wsdl/sync/wsdlfilev1p0" xmlns:soap11 ="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl11 ="http://schemas.xmlsoap.org/wsdl/" xmlns:xs = "http://www.w3.org/2001/XMLSchema" xmlns:xsi = "http://www.w3.org/2000/10/XMLSchema-instance"> | |
서비스모델 속성(ServiceModel Attributes) | |
Service Package Name | EgServiceName |
SOAPv1.1:AddressLocationRoot | http://www.example.soap/serviceuri/ |
SOAPv1.1:OperationActionRoot | http://www.example/soap/service/ |
<wsdl11:service name = "EgServiceNameSyncService"> <wsdl11:port name = "CoreOperationsNameSyncSoapPort" binding = "..."> <soap11:address location="http://www.example.soap/serviceuri/EgServiceNameSyncServiceSoap/"/> </wsdl11:port> </wsdl11:service> | |
인터페이스 속성(Interface Attributes) | |
Interface Name | CoreOperationsName createObject (myData:AttachmentJpeg) |
<wsdl11:binding name="CoreOperationsNameSyncSoapBinding" type="tns: CoreOperationsNameSyncPortType"> <soap11:binding transport="http://schema.xmlsoap.org/soap/http" style="document"/> <wsdl11:operation name="createObject"> <soap11:operation soapAction="http://www.example/soap/service/createObject" style="document"/> ... </wsdl11:operation> </wsdl11:binding> <wsdl11:service name = "EgServiceNameSyncService"> <wsdl11:port name = "CoreOperationsNameSyncSoapPort" binding = "tns:CoreOperationsNameSyncSoapBinding"> <soap11:address location="http://www.example.soap/serviceuri/EgServiceNameSyncServiceSoap/"/> </wsdl11:port> </wsdl11:service> |
|
데이터모델 속성(DataModel Attributes) | |
NameSpaceRoot | NameSpaceRoot |
NameSpaceLeaf | NameSpaceLeaf |
NameSpacePrefix | NameSpacePrefix |
SchemaVersion | SchemaVersion |
QualifiedElements | QualifiedElements |
QualifiedAttributes | QualifiedAttributes |
<wsdl11:types> <xs:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example/services/wsdl/sync/wsdlfilev1p0" xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi=http://www.w3.org/2000/10/XMLSchema-instance xmlns:xmlmime="http://www.w3.org/2004/06/xmlmime" version="IMS 1.0" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace='http://www.w3.org/2004/06/xmlmime' /> <xs:element name='myData' > <xs:complexType> <xs:simpleContent> <xs:extension base='xs:base64Binary' > <xs:attribute ref="xmlmime:contentType" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:schema> </wsdl11:types> |
그림 7.1 첨부 프로파일과 기타 IMS 웹서비스 프로파일들과의 관계
첨부 프로파일은 베이스 프로파일이 이미 사용되고 있다고 가정한다. 이 부분만이 유일하게 다른 IMS 웹서비스 프로파일과의 연관성을 보여준다. 보안 프로파일이 사용되고 있을 때 첨부와 관련된 정보가 어떻게 인코딩 되는지에 대한 함의가 주어진다. 이러한 함의는 5장의 프로파일 규칙에서 정의된다.첨부(attachment) | 이 프로파일에서 제공되는 지침에 따라 메시지에 첨부되는 비XML 자원. |
목적지(destination) | 초기자로부터 메시지를 수신하는 종단. |
종단(endpoint) | 참조될 수 있는 개체, 프로세서 또는 자원, 그리고 웹서비스 메시지가 기원하거나 목표로 하는 곳. |
초기자(initiator) | SOAP 메시지와 첨부를 응답자에게 보냄으로써 웹서비스를 소비하는 애플리케이션 |
메시지(message) | 관계된 IMS 표준과 WSDL 바인딩 규칙에서 정의된 SOAP 엔벨로프 내에 캡슐화된 IMS 메시지 |
MTOM (Message Transmission Optimization Mechanism) | MTOM은 SOAP 메시지가 비XML 객체를 포함할 수 있도록 하는 W3C 메시지 첨부 접근법 중 하나이다. MTOM은 첨부를 가진 SOAP를 발전시킨 것이며, 이 프로파일에서는 MTOM을 원래의 SWA 표준을 대체하기 위한 것으로 권장한다. 핵심 표준 외에도, MTOM은 또한 XOP와 RRSHB 표준을 기반으로 한다. |
RRSHB (Resource Representation SOAP Header Block) | RRSHB 표준은 SOAP 메시지의 자원표현을 전달하는 SOAP 헤더 블록의 의미론과 직렬화를 설명한다. RRSHB는 애플리케이션으로 하여금 SOAP 메시지에서 웹 자원의 표현을 전달하도록 설계되었다. 이 헤더의 애플리케이션에는 접근 제한이나 오버헤드를 받아들일 수 없는 등의 이유로 수신자가 다른 방법을 통해 표현을 얻기가 힘든 경우를 포함한다. RRSHB는 같은 자원에 여러 참조가 필요하지만 자원의 복제는 바람직하지 않은 경우에도 유용하다. |
응답자(respondent) | 웹서비스를 노출하고 초기자로부터 SOAP 메시지와 첨부를 수신하여 처리하는 애플리케이션. |
첨부를가진 SOAP (SWA) | 첨부를 가진 SOAP(SWA)는 여러 메시지 페이로드(message payloads)를 지원하기 위해 MIME 바인딩을 제공하는 동시에 RPC가 XML에서 마샬링되고 언마샬링되는 규칙은 무시하면서 SOAP 1.1버전을 확장한다. |
소스(source) | 메시지를 응답자에게 전송하는 종단. |
XOP (XML-binary Optimized Packaging) | XOP 표준은 특정한 유형의 콘텐츠를 가지는 XML 인포셋을 더 효율적으로 직렬화하는 방법을 정의한다. XOP 패키지는 직렬화된 XML 인포셋을 확장 가능한 패키징 포맷(MIME Multipart/Relate 등의 포맷이며, RFC 2387을 참조할 것) 내에 삽입함으로써 생성된다. 그 후, 베이스64 인코딩 이진 데이터인 선택된 부분의 콘텐츠가 추출되어 재인코딩된다. 즉, 데이터가 베이스64로부터 디코딩되어 패키지 내로 삽입된다. 선택된 부분의 위치는 URI를 사용해 패키징된 데이터를 링크하는 특수 요소를 가진 XML에 마크되어 있다. |
표준개발 참여자(경칭생략, 무순)
성 명 |
근 무 처 |
직 위 |
조용상 |
한국교육학술정보원 |
팀장 |
김종현 |
계원디자인예술대학 |
교수 |
김현진 |
한국교원대학교 |
교수 |
정광식 |
한국방송통신대학교 |
교수 |
황대준 |
성균관대학교 |
교수 |
고영승 |
(주)디유넷 |
대리 |
이정우 |
(주)포씨소프트 |
차장 |
장근원 |
(주)크레듀 |
과장 |
정호원 |
(주)씨티유니온 |
차장 |
지승환 |
테크빌닷컴(주) |
차장 |
최성기 |
SK C&C |
과장 |
권영진 |
한국교육학술정보원 |
연구원 |
최미애 |
한국교육학술정보원 |
연구원 |