Network & Server

SOAP(Simple Object Access Protocol) vs REST(REpresentational State Transfer)

스파이디웹 2020. 10. 9. 23:03
728x90

●SOAP란

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

 

-웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다.

 

-몇가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지를 요청 하고, 서버는 메시지를 즉시 응답하게 된다.

 

- XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다. 「헤더」는 선택사항으로 반복이나 보안 및 트랜잭션을 정보로 하는 메타 정보를 가지고 있다. 「바디」부분은 주요한 정보인 정보를 가지고 있다.


 

●REST의 탄생배경

-SOAP는 메시지 송수신 시 헤더와 바디의 인코딩/디코딩 과정이 필수입니다. 따라서 기본 HTTP로 메시지를 전달하던 인터넷 서비스 분야에서는 원하는 기능에 비해 SOAP 프로토콜 처리의 오버헤드가 발생하는 문제가 있습니다.

 

-이런 SOAP의 단점을 보완하고자 등장한 구현 기술이 바로 RESTful 웹서비스입니다. RESTful 웹서비스는 REST 기반의 웹서비스를 의미하고, HTTP의 기본 기능만으로 원격 정보에 접근하는 웹 응용 기술입니다.


 

●REST VS SOPA 서비스 구조

-OAP SOA(Service Oriented Architecture)로 서비스 지향 구조에 근거합니다. 이는 서비스 제공자가 UDDI에 레지스트리를 등록하고, 서비스 요청자가 원하는 서비스를 UDDI에서 검색한 후에 서비스를 요청하면 제공자는 그에 응답을 해줍니다. 반면 REST ROA(Resource Oriented Architecture) , 리소스 지향 구조를 근거로 합니다. 이는 요청자가 리소스로 요청하면 중간 매체 없이 제공자가 직접 리소스로 응답을 해줍니다. 여기서 리소스(resource) REST 아키텍처의 핵심 요소로서 웹사이트, 블로그, 이미지, 음악, 이용자, 지도, 검색결과 등 웹에서 다른 이들과 공유하고자 개방된 모든 자원을 의미합니다. REST 구조에서의 리소스는 그들의 고유한 URI를 가집니다.

 

-서비스 실행 관점에서 살펴본다면, SOAP 기반 웹서비스에서는 서비스 제공자와 요청자 간에 SOAP 프로토콜로 메시지를 주고 받는 방식으로 서비스를 이용합니다. , 서비스 요청자가 웹서비스 요청을 SOAP으로 인코딩하여 서비스 제공자에게 전달하면, 서비스 제공자는 이를 디코딩하여 적절한 서비스 로직을 통하여 결과를 얻고, 그 결과를 다시 SOAP 인코딩하여 서비스 요청자에게 반환합니다. 이러한 인코딩/디코딩의 과정에서 오버헤드가 생기게 됩니다. 한편, RESTful 웹서비스는 특정 uri로 리소스를 요청하면 기본 HTTP 프로토콜의 메소드 GET/PUT/POST/DELETE를 이용하여 JSON, XML, RSS 등 다양한 형태로 표현된 리소스를 직접 실어 나릅니다.


●서비스 기술적인 요소

-SMTP [ simple mail transfer protocol ] 인터넷 상에서 전자 메일을 전송할 때 쓰이는 표준적인 프로토콜.

 

-WSDL [web Services Description Language] 비즈니스 서비스를 기술하여 비즈니스들끼리 전자적으로 서로 접근하는 방법을 제공하기 위해 사용되는 xml기반의 언어.

 

-WADL [Web Application Description Language] HTTP 기반 웹 응용 프로그램에 대 한 컴퓨터 판독이 가능한 XML 기반의 파일 형식입니다

 


●고객의 주문 관리(SOAP VS REST)

-SOAP 기반의 웹서비스에서는 고객의 정보, 주문정보 등을 검색, 변경, 삭제하는 오퍼레이션이 각기 존재하여 필요한 기능을 수행할 때 해당 오퍼레이션을 호출하는 방식으로 일반적인 프로그래밍 개념과 동일합니다.

 

-반면에 RESTful 웹서비스(b)에서는 총주문(/order), id를 가지는 특정 주문(/order/{id}), 총고객(/customers), 고객 한 명을(/customer/{id}) 모두 리소스로 정의하고, 각 리소스에 URI을 할당한 후 URI에 대해 HTTP GET/ PUT/POST/DELETE 오퍼레이션을 수행합니다. 

 

ex) ‘주문번호 25의 주문 상세 내역을 가져와라라는 요청은 SOAP 기반

 

웹서비스라면 getOrderDetails(order_no=25)로 호출될 것이며, RESTful 웹서비스라면 http GET/order/25로 수행할 것이다.  order 25가 리소스로서 GET 메소드로 관련 정보를 얻을 수 있습니다.

 

-이와 같이 SOAP 기반의 웹서비스를 사용하고자 할 때에는 웹서비스의 위치(바인딩 주소)뿐 아니라 오퍼레이션을 알아야 하는 반면, RESTful 웹서비스를 사용하고자 할 때에는 대상 리소스의 URI만 파악

 

-이것은 모든 RESTful 웹서비스가 HTTP메소드라는 공통의 인터페이스를 이용하므로 가능한 일

 

출처:

blog.naver.com/PostView.nhn?blogId=hoyeon0&logNo=50137172782

 

728x90