SOAP(Simple Object Access Protocol)는 중앙집중화되지 않은 분산 환경에서 정보 교환을 위한 간단한 프로토콜입니다. SOAP 메시지는 송신측에서 수신측으로의 정보 전송입니다. SOAP 메시지를 결합하여 요청/응답 패턴을 수행할 수 있습니다.
SOAP는 전송의 영향을 받지 않지만 기존 인터넷 하부 구조에서 실행하기 위해 대부분 일반적으로 HTTP를 통해 전달됩니다. SOAP는 메시지 라우팅을 위한 메시지 경로를 정의하여 발견된 웹 서비스의 바인딩과 사용을 가능하게 합니다. SOAP는 웹 서비스에 대해 UDDI를 조회하는 데 사용됩니다. Workbench는 SOAP 1.1을 지원합니다.
SOAP는 모든 메시지에 대해 세 가지 파트를 정의하는 XML 기반 프로토콜입니다.
SOAP는 두 가지 통신 스타일을 지원합니다.
RPC(Remote procedure call): 결과를 리턴하는 조작의 호출. 일반적으로 WS-I를 따르지 않는 SOAP 인코딩에 사용됩니다.
문서 스타일: 문서 지향 또는 메시지 지향 스타일이라고도 함. 이 스타일은 하위 계층의 추상을 제공하고 추가 프로그래밍 작업을 필요로 합니다.
분산 컴퓨팅 환경에서 인코딩 유형은 응용프로그램에 정의된 데이터 값을 특정 프로토콜 형식으로 변환하거나 그 반대로 변환하는 방법을 정의합니다. 변환 프로세스를 직렬화 및 직렬화 해제라고도 합니다.
SOAP 스펙은 SOAP 인코딩 유형을 정의합니다.
SOAP 인코딩: SOAP 인코딩 유형을 사용하여 SOAP 데이터 모델로부터 데이터 유형 값을 직렬화/직렬화 해제할 수 있습니다. 이 인코딩 유형은 SOAP 1.1 표준에 정의되어 있고 WS-I를 준수하지 않습니다.
WSDL은 다음 리터럴 XML 인코딩 유형을 정의합니다.
리터럴 XML: 리터럴은 문서를 그대로 읽거나 인코딩하지 않아야 한다는 팩트를 나타냅니다. 문서는 XMI로 직렬화되며, 이는 메시지 XML이 WSDL의 스키마를 따른다는 것을 의미합니다. 리터럴 인코딩을 사용할 경우 각 메시지 파트는 구체적 스키마 정의를 참조합니다. 리터럴 인코딩은 WS-I를 준수합니다.
SOAP 데이터 모델은 공통 프로그래밍 언어 유형에서 사용된 데이터 유형의 언어 독립적 추상을 제공하는 데 사용됩니다. 다음과 같이 구성됩니다.
SOAP 데이터 모델을 구성하는 모든 요소와 ID는 이름 공간 URI에 정의됩니다. SOAP 표준은 데이터 유형을 구성하는 방법의 규칙을 정의합니다. 프로젝트 특정 XML 스키마는 실제 데이터 유형을 정의해야 합니다. SOAP 스펙의 요소는 http://schemas.xmlsoap.org/soap/envelope/ 및 http://schemas.xmlsoap.org/soap/encoding/에 정의됩니다.
현재 다양한 SOAP 프로토콜 구현을 사용할 수 있습니다. 예를 들어, Apache Foundation은 SOAP4J라는 IBM® 프로젝트에서 성장한 Apache SOAP는 물론 Apache Axis 및 IBM WebSphere® 런타임 환경을 제공합니다. 제공된 웹 서비스 도구는 Apache SOAP 2.3, Axis 1.0 및 IBM WebSphere 구현을 지원합니다.
맵핑은 규정된 XML 요소 이름, Java™ 클래스 이름 및 인코딩 유형 간의 연관을 정의합니다. 맵핑은 지정된 인코딩 아래에서 완전한 이름의 입력 XML 요소가 Java 클래스로 변환되거나 그 반대로 변환되는 방법을 지정합니다.
Apache SOAP에 대한 자세한 정보는 xml.apache.org/soap를 참조하십시오. SOAP에 대한 자세한 정보는 www.w3.org/TR/SOAP를 참조하십시오.