SOAP(simple object access protocol)
-
SOAP(simple object access protocol)은 일반적으로 널리 알려진
HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다.
-
서로 다른 서비스들 간의 연동을 목적으로 상호 이해 가능한 포맷의 메시지를 송수신함으로써 원격지에 있는 서비스 객체나 API를 사용하고자 하는 기업의 요구에서부터 탄생한 프로토콜이다.
-
과거에도 DCOM이나 CORBA와 같은 방법으로 원격지간 의사소통은 할 수 있었지만, 호환성과 보안상의 문제가 존재했다. 그래서 좀 더 범용성이 좋은 방법을 고민했고 인터넷을 사용하는 모든 서버에 의해 지원되는 HTTP를 활용한 SOAP가 등장하게 되었다
-
SOAP는 웹서비스에서 기본적인 메시지를 전달하는 기반이 된다.
-
SOAP는 몇 가지 형태의 메시지 패턴이 있지만, 보통 원격 프로시저 호출(RPC) 패턴을 통해 전달한다.
네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지 요청하고, 서버는 메시지를 즉시 응답하는 형식이다.
SOAP 동작 방식

WSDL이란?
WSDL(Web Services Description Language)는 웹서비스가 기술된 정의 파일의 총칭으로 XML로 기술된다.
웹서비스의 구체적인 내용이 기술되어 있는 문서고, 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜들이 기술되어 있다.

- Types: 교환될 메세지 설명, 사용될 데이터 정의
- Interface: operation 정의 (input과 output)
- Binding: Interface에 정의된 작업에 대해 메세지 형식과 프로토콜 정의 (클래스화)
- Service: WebService URL endpoint 정의
WSDL 예시 - Types

- Types 파트에서는 교환될 메세지를 설명하고, 사용될 데이터 형식을 정의하게 된다.
- schema를 통해 필요한 부분을 import 하고, WSDL에서 사용할 데이터 형식을 정의한다
WSDL 예시 - Interface

- Interface 파트에서는 Operation, 즉 함수를 정의하게 된다
WSDL 예시 - Binding

- Binding 파트에서는 Interface에 정의된 작업에 대해 메세지 형식과 프로토콜을 정의하게 된다
WSDL 예시 - Service

- Service 파트에서는 WebService URL Endpoint를 정의하게 된다
UDDI란
UDDI(Universal Description, Discovery and Integration)는 한 단어로 public registry이다.
WSDL를 담아두는 전역 저장소이며, 공개적으로 접근하고 WSDL을 검색할 수 있다.
SOAP 동작방식

위 내용을 기반으로 다시 설명하면
- Web Service Broker: UDDI, 서비스 등록 및 검색, 저장, 관리하는 주체
- Web Service Provider: 웹 서비스를 구현하여 운영하고 제공하는주체
- Web Service Consumer: 웹 서비스를 요청하는 주체
순서
- 서비스 제공자(provider)는 UDDI(broker)에 WSDL을 등록
- 서비스 사용자(consumer)는 원하는 서비스를 위해 UDDI(broker)를 검색
- 원하는 서비스에 대한 WSDL 다운로드
- WSDL 문서를 처리해 적절한 인터페이스에 맞게 SOAP 메시지 작성
- HTTP를 통해 서비스 요청
- 서비스 제공자(provider)는 요청 값을 디코딩 -> 적절한 서비스 로직 수행
- 결과값을 SOAP 메시지로 작성 후, HTTP를 통해 요청자(consumer)에게 반환
-> 사용자는 UDDI를 통해 자신이 원하는 웹 서비스를 검색하고, 서비스에 대한 파라미터나 반환값등 자세한 내용 알아낸다음, SOAP 메시지 형태로 HTTP 프로토콜 사용해 통신
SOAP 특징
- XML 기반으로 플랫폼에 독립적, 서로 다른 운영체제에서 실행되는 서비스간 통신방법 제공
- 프록시와 방화벽에 구애받지 않고, HTTP,HTTPS 통해 메시지 교환
- 확장이 용이
- 에러 처리에 대한 내용이 기본적으로 내장되어 있음
- XML 형태로 메시지를 보내기 때문에 다른 기술들에 비해 처리속도가 상대적으로 느림
SOAP과 REST의 차이

공통점
- REST와 SOAP의 공통점은 웹서비스를 구축하기 위함이다.
차이점
- REST는 아키텍처 스타일 또는 가이드라인에 가깝고, SOAP는 프로토콜이다.
- 엄격히 구조화된 XML 데이터만 주고 받는 SOAP과는 다르게 REST는 여러 포맷의 데이터를 다양한 표현방식을 통해 유연한 통신이 가능하다.
- SOAP의 장점은 SOAP 표준에 ACID 준수와 관련된 내용이 있어 SOAP는 자체적으로 ACID를 준수하여, 데이터의 무결성을 지켜주고, 자체적으로 WS-Security라는 자체 보안 표준도 가지고 있어 은행권과 같은 보안에 민감한 데이터를 취급하는 애플리케이션에 사용하기에 용이하다.
- 그러나 SOAP은 REST에 비해 통신하는 데이터 형식에 있어 자유롭지 못하고 불필요한 데이터를 통신하게 되는 경우가 많다.
- 따라서 일반적인 웹 서비스를 구현할 때는 REST가 주로 활용되고, 은행권과 같이 보안, 데이터 무결성 등이 중요한 기업용 애플리케이션에서는 SOAP이 활용되기도 한다.
레퍼런스
https://gruuuuu.github.io/programming/soap/