본문 바로가기
컴소니/개발

SOAP(Simple Object Access Protocol)란?

by 금소니 2021. 1. 27.
반응형

#147

 

1. SOAP(Simple Object Access Protocol)란?

HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 교환하는 프로토콜로써 RESTful API와 비슷하게 API를 제공하는데 있어 사용됩니다.

 

SOAP의 메시지 구조는 다음과 같습니다.

1) Envelope

 SOAP 메세지의 루트로써 SOAP Header(옵션)와 SOAP Body(필수)를 포함하고 있습니다.

 

2) Header

 SOAP 메세지에서 선택적 요소로써 메시지 경로를 제공하여 처리될 애플리케이션 관련 정보를 전달하는데 사용됩니다.

 

3) Body

 SOAP 메세지에서 필수적 요소로써 주요 정보를 가지고 있는 부분입니다.

 

예제를 보면 다음과 같습니다.

여행객의 예약정보를 가지고 있는 메세지입니다.

<?xml version='1.0' Encoding='UTF-8' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
 <env:Header>
  <m:reservation xmlns:m="http://travelcompany.example.org/reservation" 
		env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
   <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference>
   <m:dateAndTime>2007-11-29T13:20:00.000-05:00</m:dateAndTime>
  </m:reservation>
  <n:passenger xmlns:n="http://mycompany.example.com/employees" 
		env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
   <n:name>Fred Bloggs</n:name>
  </n:passenger>
 </env:Header>
 <env:Body>
  <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel">
   <p:departure>
     <p:departing>New York</p:departing>
     <p:arriving>Los Angeles</p:arriving>
     <p:departureDate>2007-12-14</p:departureDate>
     <p:departureTime>late afternoon</p:departureTime>
     <p:seatPreference>aisle</p:seatPreference>
   </p:departure>
   <p:return>
     <p:departing>Los Angeles</p:departing>
     <p:arriving>New York</p:arriving>
     <p:departureDate>2007-12-20</p:departureDate>
     <p:departureTime>mid-morning</p:departureTime>
     <p:seatPreference></p:seatPreference>
   </p:return>
  </p:itinerary>
 </env:Body>
</env:Envelope>

 

2. SOAP의 장점 및 단점

1) 장점

 - 플랫폼과 프로그래밍 언어에 독립적으로 사용

 

 - XML 기반

 

 - 간단하고 확장이 용이

 

 - 방화벽에 제한을 받지 않음

 

 - W3C 표준으로 개발

 

- 보안이 우수

 

2) 단점

 - XML 포맷을 이용하고 구조가 복잡하여 RESTful API 방식에 비해 느림

 

 - 구현이 어려움

 

3. SOAP 동작 방식

- Service Broker : 웹 서비스의 중개자로써 웹 서비스에 대한 정보를 공개하고 발견하는 방법을 정의, UDDI Registry

 

- Service Requestor : 웹 서비스를 요청하는 사용자

 

 

- Service Provider : Service Broker에 서비스를 등록하고 제공하는 공급자

 

1) Service Broker에 웹 서비스를 Service Provider는 Publish

 

2) Service Requester를 Service Broker에 Find

 

3) Service Requester는 Service Provider에서 SOAP 메시지를 인코딩하여 요청

 

4) Service Provider는 요청받은 메시지를 디코딩 후에 결과를 SOAP 메시지로 인코딩하여 응답

반응형

댓글