SOAP ( Simple Object Access Protocol ) 및 REST ( Representation State Transfer )는 모두 아름답습니다. 그래서 나는 그들을 비교하지 않습니다. 대신 REST를 선호하고 SOAP을 사용할 때 그림을 묘사하려고합니다.
페이로드 란 무엇입니까?
인터넷을 통해 데이터가 전송 될 때 전송되는 각 장치에는 헤더 정보와 전송되는 실제 데이터가 모두 포함됩니다. 헤더는 패킷의 소스와 대상을 식별하는 반면 실제 데이터는 페이로드라고합니다 . 일반적으로 페이로드는 응용 프로그램 대신 대상 데이터와 대상 시스템에서 수신 한 데이터입니다.
예를 들어 전보 를 보내야하며 전보 비용이 단어에 따라 달라진다는 것을 모두 알고 있습니다.
아래에 언급 된이 두 메시지 중 어느 것이 더 저렴합니까?
<name>Arin</name>
또는
"name": "Arin"
동일한 메시지를 나타내는 두 번째 메시지는 비용면에서 저렴하지만 두 번째 답변이 될 것입니다.
따라서 JSON 형식으로 네트워크를 통해 데이터를 보내는 것이 payload에 관한 XML 형식으로 보내는 것보다 저렴 하다고 말하려고합니다 .
다음은 SOAP보다 REST의 첫 번째 장점 또는 장점입니다 . SOAP는 XML 만 지원하지만 REST는 텍스트, JSON, XML 등과 같은 다른 형식을 지원합니다. Json을 사용하면 페이로드와 관련하여 더 나은 위치에있을 것입니다.
이제 SOAP는 유일한 XML을 지원 하지만 장점도 있습니다.
정말! 어떻게?
SOAP는 메시지의 내용과 처리 방법을 정의하는 3 가지 방식의 Envelope에서 XML을 사용합니다.
데이터 유형에 대한 일련의 인코딩 규칙과 마지막으로 수집 된 프로 시저 호출 및 응답의 레이아웃입니다.
이 봉투는 전송 (HTTP / HTTPS)을 통해 전송되고 RPC (원격 프로 시저 호출)가 실행되고 봉투는 XML 형식의 문서로 정보와 함께 반환됩니다.
중요한 점은 SOAP의 장점 중 하나 는 "일반"전송을 사용 하지만 REST는 HTTP / HTTPS를 사용 한다는 것입니다 . SOAP는 거의 모든 전송을 사용하여 요청을 보낼 수 있지만 REST는 할 수 없습니다. 그래서 우리는 SOAP 사용의 이점을 얻었습니다.
위의 단락에서 이미 언급했듯이 “REST는 HTTP / HTTPS를 사용합니다.” 이 단어들에 대해 조금 더 깊이 살펴보십시오.
REST over HTTP에 대해 이야기 할 때 HTTP를 적용한 모든 보안 조치가 상속되며 이는 전송 레벨 보안 으로 알려져 있으며 유선 내부에있는 동안에 만 메시지를 보호 하지만 일단 다른 쪽에서 전달하면 알 수 없습니다. 데이터가 처리 될 실제 지점에 도달하기 전에 거쳐야하는 단계 수 물론 모든 단계에서 HTTP와 다른 것을 사용할 수 있습니다. 휴식은 완전히 안전하지 않습니까?
그러나 SOAP 는 REST와 마찬가지로 SSL 을 지원하며 일부 엔터프라이즈 보안 기능을 추가 하는 WS-Security도 지원 합니다. WS-Security는 메시지 작성에서 소비 까지 보호합니다 . 따라서 전송 수준 보안을 위해 WS-Security를 사용하여 방지 할 수있는 허점을 발견했습니다.
그 외에도 REST는 HTTP 프로토콜에 의해 제한 되므로 트랜잭션 지원은 ACID와 호환되지 않으며 분산 된 다국적 리소스에서 2 단계 커밋을 제공 할 수 없습니다.
그러나 SOAP는 단기 트랜잭션을 위한 ACID 기반 트랜잭션 관리 와 장기 실행 트랜잭션을위한 보상 기반 트랜잭션 관리를 모두 포괄적으로 지원 합니다. 또한 분산 리소스에서 2 단계 커밋을 지원 합니다 .
결론을 내리지는 않지만 보안, 트랜잭션 등이 주요 관심사 인 반면 SOAP 기반 웹 서비스를 선호합니다.
다음 조건을 만족할 때 RESTful 디자인이 적합 할 수 있다고 말한 "The Java EE 6 Tutorial" 입니다. 보세요
내 대답을 읽는 것이 즐거웠기를 바랍니다.