오늘은 그냥 지금까지 영혼이 흘러가는 대로 사용했던
SOAP을 알아보려고 한다
사용은 하고 있지만 그래서 그게 뭔데? 라고 하면 설명할 수 없달까....
반성하며 이 글을 씁니다

1. SOAP (Simple Object Access Protocol)
SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다.
(위키백과)
SOAP은 말 그대로 해석해보면 간단한 객체 접근 프로토콜이다
이게 머선말인가를 보기 전에,
HTTP와 XML에 대해서 먼저 언급을 해야 할 것 같아서 짧게 다루겠다
(1) HTTP (HyperText Transfer Protocol)
보통 웹 서비스에서 SOAP이 사용 되는데
웹의 기본은 HTTP를 사용하기 때문에 사전 지식으로 알고 있어야 한다
HTTP는 이전에 Chunked Msg 다룰 때 잠깐 얘기했었는데
상대방에게 텍스트를 어떻게 전송 또는 보여줄 건데 ~~ 하는 프로토콜이다

HTTP는 Request와 Response를 주고받는 형태이고
요 두 개는 Header와 Body를 가지고 있다
( 자세한 내용은 아래에 첨부 링크로 남겨두겠다 )
근데, Header는 띄어쓰기는 몇 칸, 몇 줄 공백을 두면 Header가 끝이야!라는
요런 HTTP 규격에 정의가 되어 있지만
Body의 내용도 이런 규격이 정해져 있어야 보내는 사람, 받는 사람이
규격에 맞게 읽을 수 있지 않을까?
그래서 어떤 형식에 맞춰서 보내도록 해! 하는 거가 몇 가지가 있는데
그게 많이 들어봤을 XML이나 JSON, Text 등의 형식이다
요 형식은 HTTP Header의 Content-Type 헤더에 명시해주면 된다
그중 XML 형식을 사용해서 메시지를 보낼래! 가 → SOAP
JSON 형식을 사용해서 메시지를 보낼래!가 → REST
요렇게 되시겠다
(JSON은 REST를 다룰 때 다시 다루도록 하겠다)
(2) XML (Extensible Markup Language)
그러면 SOAP에서 사용한다는 XML은 무엇인지도 보겠다
참고) Markup (마크업)
<></> 같은 태그를 사용하여 문서나 데이터의 구조를 표현하는 언어
예를 들어, 색깔을 정의한 데이터가 있다고 해보자
색깔 첫번 째는 빨간색 두번 째는 파란색 세번 째는 초록색 |
요걸 마크업 형식(<></> 태그 사용)을 더해서 XML 형식으로 바꿔보면
어디서 많이 본듯한 형식으로 정의할 수 있다

XML의 장점과 단점만 정리 후, 넘어가도록 하겠다
자세한 XML 구조는 아래 첨부링크에 달아 놓겠다
장점
- HTML 문서에서 데이터를 XML로 분리할 수 있다
- 호환할 수 있는 형식을 정의함으로써 데이터 공유 및 전송이 단순해진다
- 확장성과 호환성이 좋다
- tag를 사용하기 때문에 Data와 MetaData의 구분이 쉽다
단점
- 사용안해도 될 경웨 사용하면 더 어렵고 복잡해 보일 수 있다
- 텍스트 파일이라서 용량 ↑ 속도 ↓
(근데 요즘엔 통신 속도가 워낙 빨라서 굳이 단점인가 싶다)
(3) XML과 SOAP
SOAP은 HTTP 기반의 XML을 사용하여 메시지를 보내는 규격이다
즉, HTTP의 Header + Body 구조를 사용하고, Body에 쓰는 형식은 XML이다

구성 요소는 SOAP Envelope, SOAP Header, SOAP Body, SOAP Fault 정도가 있다
SOAP Envelope
HTML에서 보셨던 <Envelope> 맞습니다
SOAP 형식으로 작성한 데이터를 다 포함하는 root 요소
SOAP Header (옵션)
HTTP Header가 HTTP Body를 설명하는 것 처럼
SOAP Body를 설명하는 것이 SOAP Header이다
SOAP Body (필수)
위에서 예시로 들었던 <Example> 같은 실제 데이터가 들어 있는 요소
메시지를 받을 대상의 정보가 포함되어 있기도 함
SOAP Fault (오류 보고 용)
보통 응답을 보낼 때, 요청이 실패한 이유 등을 포함하여 사용됨

요런 식으로 XML 형식을 사용하여 SOAP을 사용할 수 있습니다
필자는.. Onvif 라는 규격을 공부 중인데, 여기서 기본으로 SOAP 형식을 사용해서
많이 눈에 익숙하지만, 메시지를 보낼 때 형식이 조금만 안 맞아도
응답이 없는 경우가 많아서 매우 싫습니다
그래서 라이브러리를 써서 많이 사용하는데, 가장 유명한건 gSOAP이 있다
요건 따로 활용법 등을 다뤄볼까 한다
2. Web Service
SOAP 형식이 그러면 어디서 많이 쓰이느냐 ~
하면 Web Service 설명을 빼 놓을 수가 없다
근데 웹서비스도 다룰 내용이 참 많은 친구라서
그냥 요런게 있다 정도만 정리해두려고 한다

우리가 사용하는 웹은 각자 다른 네트워크 환경에 있지 않는가?
그런 각각 다른 컴퓨터들이 연결될 수 있도록 해주는 것이 웹 서비스다
참고) 다른 네트워크에 있는 컴퓨터간 상호작용하는 것을
분산형 컴퓨팅 기술이라고 한다
웹 서비스(web service)는 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템이다. 웹 서비스는 서비스 지향적 분산 컴퓨팅 기술의 일종이다. 웹 서비스 프로토콜 스택은 SOAP, WSDL, UDDI 등으로 이루어진다. 모든 메시징에 XML이 사용되어 상호운용성이 높다.
- 위키백과 -
웹서비스에 이용되는 표준은 여러 개가 있는데,
그 중 하나가 오늘 다룬 SOAP이다

왼쪽 컴퓨터를 철수네 있는 컴퓨터라고 하고
오른쪽 컴퓨터를 유리네 있는 컴퓨터라고 하면
철수와 유리가 서로 데이터를 주고 받을 수 있는 것이
바로 웹서비스가 가능하기 때문이다
웹 서비스에서 주고 받는 데이터의 형식에 SOAP이 사용된다
https://ko.wikipedia.org/wiki/SOAP
SOAP - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹
ko.wikipedia.org
https://mutpp.tistory.com/10?category=932836
HTTP Chunked Message를 알아보자
# if 0 두달간의 노예 일상을 이제야 끝나고,, 너무 오랜만에 들여다본 블로그,, 개발자로 지내고 있지만,, 일하고 싶지는 않은 그런 삶,, 갑작스럽게 HTTP 프로토콜을 구현해야할 일이 생겨서, 규격
mutpp.tistory.com
http://tcpschool.com/xml/xml_basic_structure
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
'Protocol' 카테고리의 다른 글
UDP를 알아보자 (0) | 2021.07.08 |
---|---|
HTTP Chunked Message를 알아보자 (0) | 2021.03.09 |
SMTP를 알아보자 (0) | 2020.12.16 |