SOAP

양동귀·2024년 11월 3일

cs

목록 보기
4/5

SOAP (Simple Object Access Protocol)

HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜 입니다.

특징

  • XML을 사용 → json 보다 큰 양을 보내고 받습니다.
  • POST의 body에 xml의 내용을 담아 보냅니다.
  • 요청하는 바를 body에 담은 태그를 보고 확인합니다.
//xml 일부
<soapenv:Body>
	<lib:AddBookRequest>
		 <lib:Title> aaa </lib:Title>
         ...
	</lib:AddBookRequest>
</soapenv:Body>

json이라면?

POST 
"book" : {
	"title" : "aaa"
}

WSDL (Web Services Description Language)

  • WSDL 일부
<!-- Abstract interfaces -->
   <interface name="RESTfulInterface">
      <fault name="ClientError" element="tns:response"/>
      <fault name="ServerError" element="tns:response"/>
      <fault name="Redirection" element="tns:response"/>
      <operation name="Get" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="GetMsg" element="tns:request"/>
         <output messageLabel="SuccessfulMsg" element="tns:response"/>
      </operation>
      <operation name="Post" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="PostMsg" element="tns:request"/>
         <output messageLabel="SuccessfulMsg" element="tns:response"/>
      </operation>
      <operation name="Put" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="PutMsg" element="tns:request"/>
         <output messageLabel="SuccessfulMsg" element="tns:response"/>
      </operation>
      <operation name="Delete" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="DeleteMsg" element="tns:request"/>
         <output messageLabel="SuccessfulMsg" element="tns:response"/>
      </operation>
   </interface>

soap 으로 구현된 서비스 사용 설명서 (타입, 규칙 정의 문서)
→ 프로그램이 읽으라고 작성한 문서 XML 형태로 작성

  • 서비스에 대한 상세한 표준화
  • 클라, 서버 기능 자동화, 개발과정 간소화
  • 사람이 작성하기 어려움, 유연성 부족
  • 캐싱이 용이하지 않다 - 복잡한 XML, 모두 POST 요청 캐싱하기 어려움

SOAP 보안

WS-Security 보안 프로토콜 지원

  • 메시지의 무결성, 기밀성 인증가능
  • 금융, 의료정보, 정부 서비스 (높은 보안 수준 요구 서비스에 사용)
  • 서버와 클라간 유연하지 않음 ⇒ 엄격한 규약에 적합
    금융에 적합 - 하나의 트랜젝션으로 처리되어야 함
  • ACID (Atomicity, Consistency, Isolation, Durability)
    • 트랜젝션을 안전하게 처리하는 프로토콜을 지원
      ※ 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)
    • State, 상태를 저장할 수 있다 → 이전 단계의 상태를 저장해야하는 트랜젝션에 적합

0개의 댓글