SOAP(Simple Object Access Protocol)은 분산 제어 방식의 분배 환경에서 정보
교환을 위한 간단한 프로토콜입니다.
SOAP 메시지는 송신측에서 수신측으로의 정보 전송입니다.
SOAP 메시지는 요청/응답 패턴 수행을 위해 결합할 수 있습니다.
SOAP은 전송과는 상관이 없지만 대부분 기존 인터넷 인프라에서 실행할 수 있도록 HTTP를 통해 공통적으로
전송됩니다. SOAP은 메시지 라우팅을 위해 메시지 경로를 정의하여 바인딩 및 발견된 웹 서비스 사용을
가능하게 합니다. SOAP은 웹 서비스에 대해 UDDI를 조회하는 데 사용됩니다.
JAX-WS(Java™ API for XML Web Services) 표준에서는 SOAP 1.1과 SOAP 1.2 모두를 지원하는
기능을 소개합니다. WebSphere® Application
Server V7.0 이상 또는 WebSphere Application
Server Liberty 프로파일이 설치된 경우 워크벤치는 SOAP 1.1
및 SOAP 1.2를 지원합니다.
SOAP 1.1
SOAP 1.1은 프로토콜에 구애받지 않는 전송으로서 다양한 프로토콜 조합으로
사용할 수 있습니다. WebSphere Application Server와 함께 사용하도록 개발되고 구현된
웹 서비스에서 SOAP는 HTTP, HTTP 확장자 프레임워크, JMS(Java Message Service)와 조합하여
사용됩니다. SOAP은 운영 체제와 상관이 없으며 프로그래밍 언어나 컴포넌트 기술에도
구애받지 않습니다. 클라이언트가 XML 메시지를 발행할 수 있는 경우 클라이언트 구현에 사용되는
기술은 문제가 되지 않습니다. 이와 유사하게 서비스가 SOAP 메시지를 처리할 수 있는 경우 모든 언어에서
구현 가능합니다. 또한 서버와 클라이언트측은 적절한 모든 플랫폼에 있을 수 있습니다.
SOAP은 모든 메시지의
세 가지 파트를 정의하는 XML 기반 프로토콜입니다.
- 엔벨로프(envelope). 엔벨로프(envelope)는
메시지 내용 및 처리 방법을 설명하는 프레임워크를 정의합니다. SOAP 메시지는 0 이상의 헤더와
정확하게 1개의 본문을 포함하는 엔벨로프(envelope)입니다. 엔벨로프(envelope)는 제어 정보,
메시지 주소, 메시지 자체를 위한 컨테이너를 제공하는 XML 문서의 최상위 레벨 요소입니다. 헤더는
quality-of-service 속성과 같은 모든 제어 정보를 전송합니다. 본문에는 메시지 ID 및 해당 매개변수가
포함됩니다. 헤더와 본문 모두 엔벨로프(envelope)의 하위 요소입니다.
- 인코딩 규칙. 인코딩 규칙 세트는 애플리케이션 정의 데이터 유형의 인스턴스를
표시합니다. 인코딩 규칙은 애플리케이션 정의 데이터 유형의 인스턴스를 교환하는 데 사용할 수 있는 직렬화 메커니즘을
정의합니다. SOAP은 XSD를 기반으로 하는 프로그래밍 언어와는 상관없는 데이터 유형 설계와
이 모델에 따라 정의된 전체 데이터 유형의 인코딩 규칙을 정의합니다.
SOAP 인코딩은 WS-I를 준수하지 않기 때문에 인코딩이 아닌 리터럴 사용이 상호 운용 가능한 웹 서비스에
제안되고 WS-I 준수에 필요합니다.
- 통신 스타일. 통신은 원격 프로시저 호출(RPC)이나 메시지 지향(문서) 형식을
따릅니다.
SOAP은 두 개의 다른 통신 스타일을 지원합니다.
- 원격 프로시저 호출(RPC): RPC는 결과를 리턴하는 오퍼레이션 호출입니다. RPC는
일반적으로 WS-I를 준수하지 않는 SOAP 인코딩과 같이 사용됩니다.
- 문서 스타일: 문서 스타일은 문서 지향 또는 메시지 지향 스타일이라고도
합니다. 이 스타일에서는 추상의 낮은 계층을 제공하고 더 많은 프로그래밍 작업이 필요합니다.
분산 컴퓨팅 환경에서
인코딩 유형은 애플리케이션에 정의된 데이터 값인 특정 프로토콜 형식으로 변환되고 특정 프로토콜 형식에서 변환되는 방법을
정의합니다. 변환 프로세스는 직렬화 및 직렬화 해제라고도 합니다. SOAP 1.1 스펙은 SOAP 인코딩 유형을 정의합니다.
- SOAP 인코딩: SOAP 인코딩 유형으로 SOAP 데이터 모델에서 데이터 유형 값을
직렬화/역직렬화할 수 있습니다. 이 인코딩 유형은 SOAP 1.1 표준에 정의되며 WS-I를 준수하지는 않습니다.
WSDL은
리터럴 XML 인코딩 유형을 정의합니다.
- 리터럴 XML: 리터럴은 문서를 현재 상태로 읽거나 인코딩하지 않아야 하는
사실을 기반으로 합니다. 문서는 XMI로 직렬화되며 메시지 XML은 WSDL의 스키마를 준수하게 됩니다. 리터럴 인코딩을 사용할 때
각 메시지 파트는 구체적 스키마 정의를 참조합니다. 리터럴 인코딩은 WS-I를 준수합니다.
SOAP 1.2
SOAP 1.2 스펙은 W3C(World Wide Web Consortium) 권장사항이며 워크벤치에 포함된
도구는 SOAP 1.2에서 제공된 표준을 준수합니다. SOAP 1.2 스펙은 다음과 같은 세 가지 파트뿐만 아니라 일부 어설션 및
테스트 콜렉션으로도 제공됩니다.
SOAP 1.2는 WS-I(Web Services-Interoperability) 프로파일이 없는 경우 상호 운용성 문제를 발생시키기도 하는 대다수의
모호성을 제거해주는 SOAP 프로세스 모델링에 더 고유한 정의를 제공합니다. SOAP 1.2는 다른 벤더간의 SOAP 1.2 구현에 연관된 상호 운용성 문제를
줄여줍니다.
SOAP 1.2의 좀 더 명확한 변경사항 중에는 다음이 포함됩니다.
- 현재 HTTP 프로토콜 이외의 다른 전송 프로토콜을 공식적으로 정의하는 기능 및 벤더는 SOAP 1.2에
정의된 바인딩 프레임워크를 준수합니다. HTTP는 유비쿼터스이지만 TCP/IP, MQ 등과 같은 다른 전송처럼
신뢰성이 있지는 않습니다.
- SOAP 1.2는 XML 정보 세트(XML Infoset)를 기반으로 합니다.
정보 세트에서는 XSD 스키마를 사용하여 XML 문서를 설명하는 방법을 제공하지만 XML 1.0 직렬화를 사용하여
문서를 직렬화할 필요는 없습니다. SOAP 1.1은 XML 1.0 직렬화를 기반으로 합니다. 정보 세트를 사용하면
2진 프로토콜 형식과 같은 다른 직렬화 형식 사용이 쉬워집니다. 2진 프로토콜 형식을 사용하여 메시지를
일부 verbose 태그 정보가 필요하지 않는 매우 압축된 형식으로 축소할 수 있습니다.
SOAP에 대한 추가 정보
SOAP 1.1와 1.2간의 차이점에 대한 자세한 평가 자료에 대해서는
SOAP
차이점 개요를 참조하십시오.