SOAP의 현재의 중요성


51

마지막으로 2013 년 금융 회사에서 인턴쉽을하면서 SOAP 기반 서비스를 접하게되었습니다. 그 때가 IT에서 경력을 쌓기 시작한시기였습니다. 엔지니어링 과정 중 하나에서 SOAP에 대한 학습 자료를 가지고있는 것을 기억합니다. 그 외에도, 나는 경력 동안 SOAP을 많이 사용하지 않았습니다.

"SOAP와 REST의 차이점"이라는 질문이 최근의 인터뷰 중 하나에서 나온 이후로 이것을 묻습니다. 내가 아는 것 (그리고 Google에서 찾은 것)에서 SOAP는 비즈니스 로직과 밀접한 관련이있는 정보 교환을 위해 클라이언트와 서버 사이의 긴밀한 연결을 가진 프로토콜입니다. REST는 데이터 전송을위한보다 유연한 상태 비 저장 아키텍처입니다.

SOAP와 REST의 차이점에 대해 내가 틀렸다면 누군가 나를 수정 해 줄 수 있습니까? 또한 현재 SOAP의 중요성은 무엇입니까? 사람들이 여전히 새로운 SOAP 기반 API를 개발하고 있습니까, 아니면 지금은 대부분 레거시입니까?



2
또한보십시오 : REST를 가진 SOAP의 미래
gnat

14
@ gnat : 가치가있는 것에 대해, 두 질문에 대한 대답은 모두 끔찍합니다.
Robert Harvey

7
실제로 REST 서비스를 본 적이 있습니까? 내가 보는 것은 "HTTP 동사의 의미를 마침내 알게 된 웹 서비스"입니다. 왜 갑자기 HTTP REST를 호출합니까?
Luaan

8
@Luaan : 그것에 대해 갑자기 아무것도 없습니다; 사람들은 수년간 "REST"라는 용어를 남용했습니다.
Monica와의 가벼움 경주

답변:


58

REST는 실제로 건축 스타일입니다. SOAP는 데이터 프로토콜입니다. 구별이 중요합니다. 직접 비교할 수 없습니다.

REST의 기본 목적은 인터넷의 자원나타내고 자원 을 발견하는 메커니즘제공하는 것입니다. 반면에 SOAP는 컴퓨터간에 구조화 된 데이터를 전달하는 데 사용되며 이것이 전부입니다.

인터넷상의 두 컴퓨터 사이에 클라이언트 / 서버 관계를 만들기 위해 실제로 REST가 필요하지 않습니다. JSON 또는 XML을 전송하는 메커니즘 만 있으면되고 다른 사람과 호환되지 않으려는 경우에도 필요하지 않습니다.

그럼에도 불구하고, SOAP는 "공개 계약"을 정의 할 수 있기 때문에 B2B 응용 프로그램에 여전히 일반적으로 사용되지만 새로운 공개 API에는 적합하지 않습니다. JSON 웹 서비스는 다소 가볍고 유연하다는 장점이 있으며 Javascript는 기본적으로 JSON을 인식하므로 브라우저에서 자연스럽게 선택할 수 있습니다.

그러나 그중 아무것도 REST와 관련이 없습니다.

추가 읽기
REST가 REST보다 낫습니까? (REST 프로토콜을 잘못 호출하더라도 좋은 기사).
리차드슨 성숙 모델


3
JSON 웹 서비스의 킬러 기능은 브라우저가 XML 및 SOAP를 제대로 지원하지 않지만 JSON을 거의 지원하지 않는다는 사실입니다. SOAP에는 많은 노력이 필요하지만 SOAP 서비스에 대해 AJAX 요청을 할 수 없으면 죽었습니다. 자바 스크립트 / JSON는 인터넷의 가장 낮은 공통 분모가되었다, 그래서 당신은 큰 혜택을 사용할 필요가 없습니다 것, 그리고 SOAP이 아닌 훨씬 더.
Luaan

3
@Luaan 브라우저가 XML을 제대로 지원하지 못한다고 말할 수는 없습니다. 실제로 XML HttpRequest를 수행하고 구문 분석 된 DOM이있는 속성에 액세스하는 것보다 더 나은 방법은 없습니다 . 원하는 것이 문서가 아닌 일반적인 데이터 구조라면 브라우저 나 다른 환경에서 JSON이 더 적합하다는 것입니다.
André Paramés

4
JSON 또는 XML을 전송하는 메커니즘 만 있으면되고 다른 사람과 호환되지 않으려는 경우에도 필요하지 않습니다. -1 : 클라이언트와 서버를 연결하려면 양쪽 모두 XML, JSON 사용 또는 다른 모든 사람과 호환되지 않는다는 것을 이해하는 임의의 프로토콜 만 있으면됩니다. json 또는 xml을 사용해도 모든 사람이나 다른 사람과 호환된다는 보장은 없습니다. Json과 xml은 더 이상 데이터 형식이 아닙니다.
Paul Wasilewski

6
@PaulWasilewski : 예, 제가 말한 것입니다. 말에 매달리지 마십시오. 모두가 JSON을 사용하는 이유가 있습니다. 표준입니다. 이를 사용하면 다른 사람이 인식 할 수있는 것을 사용하게됩니다.
Robert Harvey

3
@RobertHarvey, 아니 당신이 쓴 것이 아니었을 수도 있습니다. JSON은 표준이므로 무엇입니까? CSV, Protcol Buffers, BSON은 물론 다른 많은 것들도 표준화되어 있습니다. 모든 사람이 JSON을 사용하는 이유는 다양합니다. 모두가 JSON을 사용하고 있기 때문에 JSON을 사용하는 사람들도 있습니다.)
Paul Wasilewski

29

REST는 강력 함과 인기 이유 인 SOAP보다 훨씬 제한적입니다.

SOAP에서 허용되는 작업 세트와 허용되는 데이터 유형 세트는 기본적으로 무한합니다. SOAP는 원격 프로 시저 프로토콜로서, 충실도를 잃지 않으면 서 네트워크에서 로컬 API를 노출하는 데 사용됩니다. 이로 인해 복잡한 트랜잭션 시스템이 네트워크를 통해 충실도를 잃지 않고 상호 작용해야하는 엔터프라이즈 환경에서 SOAP이 널리 보급되었습니다. 이 풍부한 기능은 SOAP의 몰락이기도합니다. SOAP API를 이해하고 사용하기가 번거롭기 때문에 WSDL 및 SOAP 클라이언트 라이브러리의 형태로 자동화 된 툴링이 필요하기 때문입니다. 더 나아가, 공개 시스템에있어 풍부한 기본 시스템을 풍부하게 노출시키는 것은 매력적이지 않으며, API를 중단하거나 버전을 변경하지 않고도 기본 시스템을 발전시킬 수있는 추상화를 제공하고자합니다.

REST + JSON은 단순성으로 인해 특히 인기를 얻었습니다. 제한된 데이터 유형으로 제한된 조작 세트를 정의하므로 API 설계자는이 제한된 어휘에 맞는 추상화를 신중하게 설계하고 비즈니스 도메인을 REST 자원에 맵핑하여 실제로 생각해야합니다. REST API는 특별한 툴링없이 이해하기 쉽고 사용하기 쉽습니다. API 사용자가 모든 수준의 기술과 지식을 가질 수있는 공개 API의 경우 이는 정확히 원하는 것이므로 웹에서 볼 수있는 모든 API가 REST로 전환 된 이유입니다. SOAP는 여전히 시스템간에 복잡한 API를 공유하고 싶어하는 엔터프라이즈 상황으로 강등됩니다. 하나,

본질적으로 사람들이 깨달은 것은 API를 간단하고 추상화하여 API를 유지 관리하고 사용하기 쉽도록 API 디자인에 적용해야하는 제약 조건 세트가 REST가 도입 한 제약 조건 세트와 정확히 일치하여 SOAP를 효과적으로 무효화한다는 것입니다. 단점 만 남게하는 이점. SOAP를 사용하여 단순화 된 API를 빌드 할 수 있지만 REST만큼 사용하기가 쉽지 않으므로 실제로는 모두가 REST를 선택하기 만합니다.


4
좋은 오래된 정적 대 동적 타이핑 논쟁, yay : D 깔끔하고 단단하고 해킹과 단순, 끝없는 전쟁.
Luaan

@Luaan ... 그리고 동적은 항상 데이터 교환을 위해 이깁니다. youtube.com/watch?v=ROor6_NGIWU
자레드 스미스

6
@JaredSmith 나는 매우 동의하지 않습니다. 계약을 준수해야하므로 오류가 발생하기 쉬운 문서 페이지 대신 메타 데이터 게시를 통해 두 엔드 포인트 모두 데이터를 올바르게 매핑해야합니다. 왜 그렇지 않습니까?
drake7707

1
실용적인 REST는 프로토콜입니다. 논문과 종교는 '건축 스타일'입니다. 이 답변은 실제 휴식과 실제 비누를 올바르게 비교합니다.
bmargulies

1
당신의 대답은 이미 당신이 REST를 이해하지 못한다는 것을 보여 주었고 당신은 그 밑줄을 긋습니다.
Paul Wasilewski

5

REST와 SOAP를 비교할 수 없습니다. REST는 아키텍처 스타일이지만 SOAP은 프로토콜입니다.

불행하게도, REST는 구어체가 RESTful HTTP 서비스와 동의어가되었으며 이는 HTTP (애플리케이션) 프로토콜을 사용하여 REST 스타일 아키텍처를 실현한다는 의미입니다.

REST는 다음과 같은 원칙 (제약 및 요소)을 기반으로합니다 (RESTful HTTP에서의 구현을 괄호로 묶음) [1] .

  • 상태 비 저장 (HTTP는 상태 비 저장 프로토콜)
  • 자원 (URI로 식별)
  • 균일 한 인터페이스 (HTTP 메소드)
  • 표현 (MIME-TYPE)
  • HATEOS (하이퍼 링크)
  • 캐시 (HTTP 캐시)

다른 한편으로 많은 사람들은 W3C 웹 서비스 아키텍처의 일부인 SOAP를 WSDL과 SOAP 기반 웹 서비스라고 말하고있다 [2] .

  • SOAP는 정보를 교환하기위한 프로토콜 (기본적으로 메소드 이름, 매개 변수, 리턴 값, 데이터 유형 등)로 사용됩니다.
  • WSDL은 웹 서비스를 설명하는 인터페이스 정의 언어입니다.

SOAP *의 현재의 중요성은 무엇입니까?

SOAP는 W3C 표준이며 W3C 웹 서비스에서 정보 교환 형식으로 사용됩니다. 이러한 웹 서비스는 특히 2008 년 (+ -3 년) SOA (서비스 지향 아키텍처)의 과대 광고였으며 (아쉽게도) 여전히 엔터프라이즈 응용 프로그램에서 구현되었습니다.

몇 가지 이유가 있습니다. 그 당시 RESTful HTTP는 잘 알려져 있지 않았으며 오해되었습니다. 불행히도 여전히 다른 답변을 살펴보면 오해가됩니다.

"[...] REST는 SOAP [...]보다 훨씬 제한적입니다."

“RES의 주요 목적은 인터넷에서 리소스를 나타내는 것입니다.

또한 SOAP (및 WSDL)는 W3C 웹 서비스 프로토콜 스택의 일부로 웹 서비스 구현을위한 더 많은 표준을 제공합니다.

사람들이 여전히 새로운 SOAP 기반 API를 개발하고 있습니까, 아니면 지금은 대부분 레거시입니까?

그렇습니다. SOAP를 사용하는 시스템이 여전히 있으며 앞으로도 엔터프라이즈 시스템에서는 대부분 뒤에 있습니다. 그러나 대다수는 요즘 일종의 "REST"를 시도하고있다.

SOAP와 REST의 차이점에 대해 내가 틀렸다면 누군가 나를 수정 해 줄 수 있습니까?

REST가 데이터 전송을위한보다 유연한 상태 비 저장 아키텍처 라고 말하는 것은 좋은 설명이 아닙니다. 간단히 말해 REST는 특정 제약 조건 및 요소가 포함 된 아키텍처 스타일입니다. SOAP는 정보 교환 프로토콜입니다.

내가 이미 쓴 것처럼 당신은 그들을 비교할 수 없습니다. 그러나 RESTful HTTP 웹 서비스를 SOAP / WSDL 웹 서비스와 비교할 수 있습니다.


"하지만 RESTful HTTP 웹 서비스와 SOAP / WSDL 웹 서비스를 비교할 수 있습니다." 그러나 이것이 OP가 요구하는 것입니다. 아무도 아직 대답하지 않았습니까?
RoboJ1M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.