SOAP API » 이력 » 버전 1
이태훈, 2022/08/02 07:36
| 1 | 1 | 이태훈 | h1. SOAP API |
|---|---|---|---|
| 2 | |||
| 3 | * HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하기 위한 통신규약 프로토콜 입니다. |
||
| 4 | |||
| 5 | h2. 1) SOAP 특징 |
||
| 6 | |||
| 7 | * HTTP를 이용하기 때문에 다른 RPC에 비해 Proxy와 방화벽에 제약을 받지 않고 쉽게 통신이 가능 |
||
| 8 | * 플랫폼과 프로그래밍 언어에 독립적 |
||
| 9 | * 멀티파트 MIME 구조 |
||
| 10 | * XML형식 메시지 처리 |
||
| 11 | |||
| 12 | h2. 2) SOAP 단점 |
||
| 13 | |||
| 14 | * 복잡한 구조로 인해 오버헤드가 있다. |
||
| 15 | * REST에 비해 상대적으로 무겁고 속도도 느리다. |
||
| 16 | * 개발 난이도가 높아 개발 환경의 지원이 필요하다. |
||
| 17 | |||
| 18 | h2. 3) SOAP 메시지 구조 |
||
| 19 | |||
| 20 | |_. SOAP-ENV:Envelope| |
||
| 21 | |=. SOAP-ENV:Header| |
||
| 22 | |=. SOAP-ENV:Body| |
||
| 23 | |||
| 24 | * Envelope : 모든 SOAP 메시지의 루트 요소이며 두개의 하위 요소인 선택적 Header 요소 및 필수 Body 요소를 포함합니다. |
||
| 25 | * Header : Envelope의 선택적 하위요소이며 메시지 경로를 따라 SOAP 노드로만 처리될 애플리케이션 관련 정보를 전달하는데 사용됩니다. |
||
| 26 | * Body : Envelope의 필수 하위 요소이며 메시지의 최종 수신인을 대상으로 하는 정보를 포함합니다. |
||
| 27 | * Fault : Body의 하위 요소이며 오류 보고에 사용됩니다. |
||
| 28 | |||
| 29 | h2. 4) SOAP의 전달과정 |
||
| 30 | |||
| 31 | |_. 클라이언트(Client)|→|_. 중게자(Intermediary)|→|_. 중게자(Intermediary)|→|_. 디폴트 액터(Default Actor)| |
||
| 32 | |||
| 33 | * 먼저 Client에서 특정한 작업을 요청하게 되면 중계자가 받게 됩니다. |
||
| 34 | * 자신이 처리할 내용이 있는지 확인 후 다음 중계자에게 전달합니다. |
||
| 35 | * 중계자를 통해 메시지의 이부를 변경하여 다음 중계자에게 포워딩 하다가 액터를 만나게 되면 해당 작업을 처리합니다. |
||
| 36 | * 이 액터를 Default Actor라고 부르며 SOAP message의 최종 수신자라고 말할 수 있습니다. |
||
| 37 | |||
| 38 | h2. 5) SOAP 구현을 위한 라이브러리 |
||
| 39 | |||
| 40 | * gSOAP : C++로 작성되었으며, SOAP 1.1/1.2 명세를 충실히 따르는 안정적인 라이브러리로 클라이언트와 서버를 모두 지원한다. |
||
| 41 | * cSOAP : 순수 C언어로 구현된 라이브러리로 클라이언트와 서버를 모두 지원하며 의존 라이브러리로 libxml, libssl, libpthread가 있다. |
||
| 42 | * libSOAP : GNOME 환경을 위한 HTTP 클라이언트/서버 라이브러리이며 의존 라이브러리로 libglib, libgnutls, libpthread가 있으며, 비동기뿐만 아니라 동기 API도 가지고 있어 Thread 프로그래밍도 가능하다. |