본문 바로가기

개발/Network

[Network] SOAP 정리하기

1. 서론

 최근 GO 언어를 공부하다 보니 RPC, gRPC에 대해 새롭게 알게 됐다. 아직 자세히는 모르지만 추후 정리하는 포스팅을 쓸 예정이다. 그러다 보니 자연스레 이전에 사용하던 RESTful API에 대한 포스팅을 먼저 작성하려 했는 데 SOAP 방식이 존재한다는 사실을 알고, 궁금증이 생겨 공부를 하며 이 포스팅을 먼저 작성하게 됐다. SOAP, RPC, gRPC, RESTful API 등은 모두 각기 다른 온라인 데이터 전송 방식이다. 각각의 특성과 장단점이 존재하기 때문에 알아두면 좋을 것 같아 시리즈물로써 포스팅을 작성해보려 한다. 그럼 SOAP 방식에 대한 정리를 시작해보자.

2. SOAP란 무엇인가?

 SOAP란 Simple Object Access Protocol의 약자로 객체 접근을 간단하게 해주는 프로토콜이다. 그럼 어떻게 간단하게 해주는 걸까? 해답은 바로 플랫폼에 종속적이지 않기 때문에 다른 기종 간의 통신이 용이한 XML을 데이터 송수신의 기본 format으로 사용하는 것이다. SOAP는 이러한 장점을 가진 XML을 이용해서 분산처리 환경에서의 정보교환을 쉽게 할 수 있도록 해주는 프로토콜이다.
 또한, SOAP는 Client가 물리적으로 인접하지 않은 서버에게 객체나 함수를 호출하여 그 값을 반환받는 RPC 중 하나이다. 무엇보다 아주 표준화가 잘 되어있는 HTTP 또한 사용 가능하기 때문에 거의 모든 기종에서 호환성을 보장한다.

3. SOAP의 탄생 배경 

 위에서 설명해서 짐작은 했겠지만, 이 때는 최근 자주 사용하는 RESTful API가 존재하기도 이전이었다. 따라서, 서로 다른 플랫폼 또는 언어 사이에서 데이터 및 정보 교환의 마땅한 표준이 없는 상태였다. SOAP는 이러한 문제점을 해결하기 위해 설계된 최초의 표준 프로토콜이다.

4. SOAP의 특징

 1. SOAP는 다른 언어로 다른 플랫폼에서 빌드된 애플리케이션이 통신할 수 있도록 설계된 최초의 표준 프로토콜이다.
 2. 프로토콜이기 때문에 복잡성과 오버헤드를 증가시키는 빌트인 룰을 적용하므로, 페이지 로드 시간이 길어질 수 있다. 
 3. XML만을 데이터 송수신 format으로 사용할 수 있다.
 4. HTTP를 이용하기 때문에 다른 RPC에 비해 Proxy와 방화벽에 제약을 받지 않고 쉽게 통신이 가능하다.
 5. HTTP 외에도 다양한 네트워크 프로토콜을 사용할 수 있다.
 6. SOAP API에 대한 완료된 요청은 브라우저에서 캐시 할 수 없으므로, API로 재전송하지 않는 한 이후에 액세스 할 수 없다.

5. SOAP 구문 규칙

 1. SOAP 메세지는 XML 형식으로 encoding 돼야 한다.
 2. SOAP 메세지는 SOAP Envelope namespace를 사용해야 한다.
 3. SOAP 메세지는 DTD 참조를 포함해서는 안된다.
 4. SOAP 메세지는 XML 처리 명령어를 포함해서는 안된다.

5-1. SOAP 메세지의 기본 틀

[그림 1] SOAP 메세지 기본틀

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
...
</soap:Header>

<soap:Body>
...
  <soap:Fault>
  ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>

[참고]

www.w3schools.com/xml/xml_soap.asp

 

XML Soap

XML Soap SOAP stands for Simple Object Access Protocol SOAP is an application communication protocol SOAP is a format for sending and receiving messages SOAP is platform independent SOAP is based on XML SOAP is a W3C recommendation Why SOAP? It is importan

www.w3schools.com

wiki.hash.kr/index.php/SOAP

 

SOAP - 해시넷

SOAP(솝)은 "Simple Object Access Protocol"의 약자로서, HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 통신 프로토콜을 말한다. REST 방식의 데이터 연계 기술이 나옴

wiki.hash.kr

www.redhat.com/ko/topics/integration/whats-the-difference-between-soap-rest

 

REST와 SOAP 비교

REST와 SOAP는 웹 애플리케이션 간 데이터 통신을 허용하는 애플리케이션 프로그래밍 인터페이스(API)를 구축하는 방법을 정의합니다.

www.redhat.com

www.guru99.com/comparison-between-web-services.html#:~:text=KEY%20DIFFERENCE,REST%20is%20an%20architectural%20pattern.&text=SOAP%20only%20works%20with%20XML,%2C%20XML%2C%20HTML%20and%20JSON.

 

SOAP Vs. REST: Difference between Web API Services

What is JSON? JSON is used to store information in an organized, and easy-to-access manner. Its...

www.guru99.com

j2enty.tistory.com/entry/SOAP-Soap-%EB%9E%80

 

[SOAP] Soap 란!?

 얼마전 회사에서 뜬금없이 SOAP로 음성인식 솔루션이랑 연동한다며 SOAP를 살펴보라고 명령이 떨어졌다. 뭐 시키면 해야지...ㅠ 아무것도 모르는 백지상태에서 하려니 너무 막막했는데 뭐 역시

j2enty.tistory.com

smartbear.com/blog/soap-vs-rest-whats-the-difference/

 

SOAP vs REST. What

 

smartbear.com

ko.wikipedia.org/wiki/SOAP

 

SOAP - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹

ko.wikipedia.org

 

'개발 > Network' 카테고리의 다른 글

[Network] URI와 URL의 차이점  (0) 2021.02.11
[Network] HTTP란 무엇인가?  (0) 2021.02.11
[Network] HTTP 상태(응답) 코드 정리하기  (0) 2021.02.06