[SOAP] Simple Object Access Protocol이란?
1. SOAP(Simple Object Access Protocol)
SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜입니다. 간단하게 객체를 접근할 수 있는 프로토콜이란 의미입니다.
SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 되는데, SOAP에는 몇가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(Remote Procedure Call:RPC) 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지를 요청 하고, 서버는 메시지를 즉시 응답하게 되는 형식입니다.
즉 SOAP는 XML을 이용해서 분산처리 환경에서 정보교환을 쉽게 할 수 있도록 도와준다는 이야기입니다.
XML이 플랫폼에 종속적이지 않기 때문에 이기종간의 통신이 가능하다는 장점이 있어서 이러한 A장치와 B장치를 연결하는 네트워크를 구성할 때 주로 사용됩니다.
SOAP는 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송(transport)과 상호 중립성(interaction neutrality)의 개념을 사용합니다.
2. SOAP의 특징
- HTTP를 이용하기 때문에 다른 RPC에 비해 Proxy와 방화벽에 제약을 받지 않고 쉽게 통신이 가능
- 플랫폼과 프로그래밍 언어에 독립적
- 멀티파트 MIME 구조
- XML형식 메시지 처리
SOAP은 전송(Transport) 매체로서 HTTP를 사용하기 때문에 인터넷에서 널리 사용할 수 있다. 실제로 SOAP은 인터넷에서 원격 객체를 액세스하기 위해 고안된 프로토콜이다.
SOAP은 HTTP와 XML을 사용하기 때문에 개발도구나 플랫폼에 구애받지 않고 SOAP 서버 혹은 클라이언트를 개발할 수 있다. 이처럼 SOAP 서버 혹은 클라이언트를 보다 쉽게 개발할 수 있도록 해주는 COM 컴포넌트, 유틸리티 등으로 구성된 SOAP 툴킷(toolkit)도 제공되고 있다. 또한 HTTP와 XML이 갖는 장점을 모두 포함하면서 컴포넌트의 상호운용성을 높일 수도 있다.
SOAP은 컴포넌트를 활성화하는 방법이나 호출하는 방법에 대해 전혀 관여하지 않으며 이에 대한 상세한 사항은 HTTP Request를 수신하는 수신자에게 위임하고 있다. 따라서 객체지향기술이나 컴포넌트 기술을 사용하지 않는 애플리케이션일지라도 SOAP을 통해 객체서비스를 제공하거나 제공받을 수가 있다.
3. SOAP의 전달과정
먼저 Client에서 특정한 작업을 요청하게 되면 중계자(Broker)가 받게 됩니다. 그리고 자신이 처리할 내용이 있는지 확인 후 다음 중계자에게 전달합니다. 이렇게 중계자를 통해 메시지의 일부를 변경하여 다음 중계자에게 포워딩 하다가 액터(Actor)를 만나게 되면 해당 작업을 처리하게 됩니다.
이 액터가 Default Actor SOAP mesage의 최종 수신자입니다.
SOAP은 TCP나 HTTP뿐 만 아니라 SMTP 같은 다양한 프로토콜과도 함께 사용할 수 있습니다. 메시징 서버를 사용해서 메시지 처리를 할 때와 같이 기본적으로 단방향으로 메시지를 보내는데, 송신자는 메시지를 보내지만, 수신자로부터 직접적으로 메시지를 받지는 않고 중계자(Broker)를 통해서 받는 구조입니다.
위와 같이 SOAP의 envelope/header/body 구조를 따라 XML형식으로 메시지가 전달됩니다.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<getProductDetails xmlns="http://warehouse.example.com/ws">
<productId>827635</productId>
</getProductDetails>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
'프로토콜 > 프로토콜 개념' 카테고리의 다른 글
DCCP(Datagram Congestion Control Protocol)란? (0) | 2020.06.12 |
---|