SOAP 기반 서비스 대신 REST를 사용하는 이유는 무엇입니까? [닫은]


153

그러나 오늘날 REST에 대한 흥미로운 데모에 참석했지만 REST가 SOAP 기반 서비스 스택보다 사용 및 구현하는 것이 더 낫거나 단순한 단일 이유 (또는 제시되지 않은)를 생각할 수 없었습니다.

"실제"사용자가 SOAP 기반 서비스 대신 REST를 사용하는 이유는 무엇입니까?


37
웹 서비스에서 SOAP 스타일 웹 서비스를 언급하고 있습니까? 내가 아는 한 RESTful 웹 서비스도 가질 수 있기 때문입니다.
James McMahon

답변:


160

적은 오버 헤드 (모든 호출을 래핑 할 SOAP 엔벨로프 없음)

덜 중복 (HTTP는 이미 SOAP 봉투에 표시되어야하는 DELETE, PUT, GET 등의 작업을 나타냅니다).

보다 표준화 된-HTTP 작업은 잘 이해되고 일관되게 작동합니다. 일부 SOAP 구현은 까다로울 수 있습니다.

더 읽기 쉽고 테스트 가능 (브라우저만으로 SOAP를 테스트하기가 더 어렵다).

XML을 사용할 필요는 없습니다 (SOAP도 필요하지 않지만 이미 봉투를 파싱하고 있기 때문에 이해가되지 않습니다).

라이브러리는 SOAP (종류)를 쉽게 만들었습니다. 그러나 내가 지적한 것처럼 많은 중복성을 추상화하고 있습니다. 그렇습니다. 이론상 SOAP은 다른 전송을 통해 비슷한 일을하는 계층의 꼭대기에 올라가지 않도록 할 수 있지만 실제로는 거의 모든 SOAP 작업이 HTTP를 통해 이루어집니다.


1
플랫폼 간 SOAP 통신도 PITA가 될 수 있다고 덧붙이고 싶습니다 (SOAP의 요지는 아니 었습니까?!?).
저스틴 Bozonier

7
예를 들어 마지막으로 수정의 사용과 ETag를 함께 적극적으로 캐시를 가져옵니다 - 또한 인프라가 HTTP와 함께 좋은 작업
제임스 스트라 칸

서비스에 범용 클라이언트를 제공하기 위해 웹 브라우저를 사용하여 작업하는 것도 도움이됩니다.)
James Strachan

2
SOAP가 잘 표준화되었다고 주장합니다. 구현이 미숙하다는 것을 의미한다면 더 명확하게 만드는 것이 좋습니다. 나는 당신이 이것을 제안한다면이 견해에 대한 증거를 중요하게 생각할 것입니다. REST가 사람이 읽을 수 있는지 더 궁금한 것은 전적으로 콘텐츠 형식을 선택하는 방법에 달려 있습니다. 또한 XML은 사람이 읽을 수 있도록 설계되었지만 우리 모두가 알고있는 것처럼 장황합니다.
Howard May

6
HTTP는 SOAP만큼 표준화되었으며, 오래 전부터 구현이 전반적으로 안정적이며 상호 운용이 가능합니다. SOAP는 또한 내용이 싸여있는 봉투로 인해 동일한 내용이 있어도 읽기가 쉽지 않습니다. 지난 몇 년 동안 실제로 JSON over HTTP가 최상의 조합에 관한 것으로 나타났습니다. 훨씬 더 컴팩트합니다.
Kendall Helmstetter Gelner

36

RESTful 서비스는 SOAP 보다 훨씬 간단합니다. 기반 (일반) 서비스 합니다. 그 이유는 REST가 일반 HTTP 요청을 기반으로하기 때문에 요청 유형 (GET = 검색, POST = 쓰기, DELETE = 제거 등)에서 의도를 유추 할 수 있고 완전히 상태가 없기 때문입니다. 반면에 요청 컨텍스트가 포함 된 메시지 봉투의 개념과는 달리 유연성이 떨어질 수 있습니다.

내 경험상 SOAP는 기업 내 서비스에 선호되었고 REST는 퍼블릭 API로 노출 된 서비스에 선호되었습니다.

.NET 프레임 워크에 WCF와 같은 도구를 사용하면 서비스를 REST 또는 SOAP로 구현하는 것이 매우 간단합니다.

관련 독서 :


9
내 이해는 WSDL 파일을 사용하여 웹 서비스 메소드를 노출하는 클래스를 생성 할 수 있다는 것입니다. 확실히 이것은 함수 호출만큼 서비스 소비를 쉽게합니까? 당신의 견해를 좀 더 설명해 주시겠습니까?
Howard May

1
Howard May : 기본 데이터 유형 만 사용하여 함수를 호출한다고 가정하면, 이것은 사실입니다. 그러나이 경우 SOAP보다 휴식이 쉽다는 것을 정확하게 주장 할 수는 없습니다. 복잡한 데이터 유형이있는 경우 동일한 WS 스택을 가진 두 시스템간에 WSDL 처리가 제대로 작동 할 수 있습니다. 그러나 스택을 혼합하자마자 문제가 발생합니다. 비 호환성을 디버깅하기 위해 수동으로 WSDL을 파헤쳐 야한다면 너무 쉬워지지 않습니다.
Joseph Holsten

1
2014 년에는 거의 모든 플랫폼, 심지어 고대 플랫폼에서도 WSDL이 지원됩니다. 프록시 클래스는 API 사용을 매우 간단하게 만듭니다. 푸시 서비스를 구현하고 있으며 REST를 고려하고 있지만 실제로 혜택을 보는 데 어려움을 겪고 있습니다.
JohnOpincar

13

"웹 서비스"라고 말할 때 SOAP 및 WS- * 표준 세트를 의미한다고 가정하겠습니다. (그렇지 않으면 REST 서비스 "웹 서비스" 라고 주장 할 수 있습니다.)

정식 논거는 REST 서비스가 웹 디자인, 즉 HTTP 및 관련 인프라 디자인과 더 가깝다는 것입니다. 따라서 REST 서비스를 사용하면 기존 웹 도구 및 기술과 더 호환됩니다.

물론 세부 사항을 살펴본 후에는 두 시나리오 모두 서로 다른 시나리오에서 장점이 있음을 알게됩니다. 관심있는 특정 사항입니까?


10

오버 헤드는 좋은 아키텍처만큼 중요하지 않습니다.

REST는 프로토콜이 아니며 확장 성이 뛰어난 디자인을 장려하는 아키텍처입니다. RPC에 너무 많은 자유가 있으면 디자인이 나빠질 수 있기 때문에 종종 선택됩니다.

다른 이유는 HTTP를 통한 RESTful 프로토콜의 예측 가능한 비용이 기존 기술 (주로 프록시)을 활용할 수 있기 때문입니다. RPC 초기 비용은 상당히 낮지 만 부하가 증가하면 크게 증가하는 경향이 있습니다.


7

REST는 구현에 구애받지 않고 훨씬 투명하므로 공개 API, 특히 Flickr, Amazon 또는 Digg와 같은 API를 마케팅 도구로 사용하고 사람들이 실제로 데이터를 소비하기를 원하는 대형 웹 사이트에 적합합니다. 그들은 선택한 스크립팅 언어의 버그가있는 SOAP 라이브러리를 디버깅하려고하는 1000 명의 초보자 개발자를 손에 들고 싶지 않습니다 .

SOAP 및 WSDL과 대립 라이브러리 및 양쪽에 알려진 실마리가있는 내부 응용 프로그램에 더 좋습니다. (그리고 인터넷 규모의로드 밸런싱, HTTP 캐싱 등과 같은 것을 신경 쓸 필요가 없습니다.) 그런 다음 자체 문서화 된 API를 얻고 작업없이 제로 유형을 보존하십시오.


좋은 대답이지만 SOAP는 인터넷 규모의로드 밸런싱을 할 수 없다는 것을 동의하지 않습니다.
HDave

7

주제에 관한 Roy Fielding의 가장 훌륭한 논문 을 읽으십시오 . 그는 훌륭한 사례를 만들어 냈으며 (2000 년) 자신의 시간보다 앞서 나갔습니다 .



5

REST를 사용하면 비 돌연변이 연산 (일반적으로 GET 동사를 사용)을 캐시 할 수 있습니다 . 즉, 클라이언트에 의해 캐시 및 / 또는 프록시에 의해 캐시된다. 이것은 큰 승리가 될 수 있습니다!


8
그것은 단순히 REST가 아닌 'HTTP를 올바르게 사용하는 것'입니다.
aehlke


0

매우 간단하고 날씬합니다. http 동사를 통해 브라우저로 할 수 있습니다 : GET. 브라우저가 수동으로 일반적인 http POST 요청을 쉽게 수행 할 수 없다는 것을 알지 못했습니다.


1
Checkout Fiddler. 브라우저는 아니지만 코드없이 HTTP POST를 구축하는 좋은 방법입니다. fiddler2.com/fiddler2
Eric Schoonover

나는 보통 Charles의 기존 요청을 수정하여 수행합니다. 피들러도 있습니다.
Ray Lu

0

하나의 데이터 포인트가 있습니다. Amazon은 REST 및 SOAP 형식으로 API를 제공하며 사용량의 85 %는 REST입니다.

REST는 구현하기 쉽고 이해하기 쉬우 며 고성능입니다.


7
"고성능"에 대한 언급이 있습니까?
James McMahon

3
85 %의 사용량을 어디서 얻었습니까? 이것은 내가 아는 것이 매우 좋습니다 (증거를 볼 수 있다면)
schmoopy

3
API 사양, 페이지 인쇄 등을 수동으로 읽는 것이 "오른쪽 클릭, 서비스 참조 추가"보다 구현하기가 더 쉽습니까? (VS2010)
BlueChippy

@schmoopy 아마존 블로그 : aws.typepad.com/aws/2005/09/rest_vs_soap.html
joerage
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.