내가 아는 한 SOAP 소비에는 SOAP 스택이 필요하므로 클라이언트가 소비하기가 더 어렵습니다. 즉, POST 데이터와 헤더의 형식을 올바르게 지정한 다음 SOAP 스택을 제공해야합니다. REST를 사용하면 쿼리 문자열의 인수로 HTTP GET 요청을하고 XML이라고 생각되는 텍스트를 다시 얻을 수 있습니다.
SOAP의 추가 오버 헤드 / 복잡성은 무엇을 언제, 언제, 언제, 무엇을 할 수 있을까요?
내가 아는 한 SOAP 소비에는 SOAP 스택이 필요하므로 클라이언트가 소비하기가 더 어렵습니다. 즉, POST 데이터와 헤더의 형식을 올바르게 지정한 다음 SOAP 스택을 제공해야합니다. REST를 사용하면 쿼리 문자열의 인수로 HTTP GET 요청을하고 XML이라고 생각되는 텍스트를 다시 얻을 수 있습니다.
SOAP의 추가 오버 헤드 / 복잡성은 무엇을 언제, 언제, 언제, 무엇을 할 수 있을까요?
답변:
이전에 REST API를 구현했으며 실제로 좋아했습니다. 일반적으로 REST over SOAP 를 구현할 때 클라이언트 / 서버는보다 직교적인 의미이므로 클라이언트에 영향을주지 않고 서버를 훨씬 더 자유롭게 변경할 수 있습니다. 이 직교성은 HTTP 동사를 통해보다 추상적이고 이미 정의 된 통신을 사용하기 때문입니다. 또한 REST 응답에 포함 된 하이퍼 링크를 사용하면 API를 비교적 쉽게 확장하고 확장 할 수 있습니다. 고객은 이러한 내장 된 링크를 따라 인간이 웹 페이지의 링크를 따라 더 많은 정보를 얻기 위해 '드릴 다운'하는 것처럼 새로운 리소스에 접근해야합니다.
그 말로, 나는 SOAP을 사용해야한다고 들었던 동료가 있었고 항상 그것에 대해 불평했습니다. 그래서 두 가지에 대해 좀 더 자세히 조사했습니다.
일반적으로 내가 찾은 것은 수백, 수천 또는 수백만의 클라이언트 가있을 때 REST가 고도로 분산 된 애플리케이션에 적합 하다는 것입니다 . 한 가지 이유는 위에서 언급 한 직교성이고, 다른 이유는 HTTP를 사용하므로 무료로 제공되는 캐싱입니다.
SOAP는 클라이언트를 위해 더 작은 API가 필요할 때 더 빨리 갈 수있는 방법 일 수 있으며 확장성에 대해 너무 걱정하지 않아도됩니다. 리소스를 중심으로 구조화 된 아키텍처가없는 경우 REST를 구현할 수 있도록 앱을 재구성하는 데 시간이 걸리기 때문에 더 적합 할 수도 있습니다.
사소한 것일 수도 있지만 REST는 전적으로 HTTP를 기반으로합니다.
SOAP에는 HTTP가 필요하지 않으며 원하는 전송을 자유롭게 사용할 수 있습니다.
SOAP 메시지는 비동기식으로 안정적으로 라우팅 될 수 있지만 REST는 거의 동기식 패러다임입니다.
REST는 보내고받는 데이터의 모양에 대해 아무 것도 알려주지 않습니다. WADL이 있지만 대부분 API의 문서화에 의존합니다. SOAP에는 데이터 기술에 오류가 덜 발생하도록 XML 기술 서커스가 있습니다. WSDL, 스키마 ...
하루가 끝나면 REST는 기본적으로 HTTP 기반의 파일 시스템을 제공합니다. 시스템이 해당 패러다임에 맞을 수 있다면 좋은 선택 일 것입니다.
SOAP의 추가 오버 헤드 / 복잡성은 무엇을 언제, 언제, 언제, 무엇을 할 수 있을까요?
이 둘의 가장 큰 차이점은 REST가 상태 비 저장 인 것으로 가정하고 SOAP는 그렇지 않다는 것 입니다. 실제로 많은 REST 구현은 실제로 OAuth와 같은 것을 통해 세션에서 일부 상태를 구현합니다.
또 다른 차이점은 REST는 매우 "자원"이거나 명사 지향 입니다. CRUD 작업을 통해 리소스와 상호 작용합니다. 이 패러다임에 맞지 않는 것은 번거롭고 어색합니다.
반면에 SOAP는 RPC (원격 프로 시저 호출) 프로토콜 입니다. 패러다임과 함께 제공되지 않고 전송 계층 일뿐입니다.
REST는 post도 사용합니다. 실제로 REST를 사용할 때 http 동사는 어떤 작업이 진행되고 있는지 알려줍니다.
REST와 SOAP는 인터넷을 통해 데이터를 전달하는 표준과 다릅니다.
웹 서비스를 사용하는 사람들이 .net 및 Visual Studio를 사용하고 있다는 것을 알지 못하면 SOAP 대신 REST를 사용하는 것이 좋습니다. SOAP를 사용할 때 대부분의 작업을 수행하는 .net VS를 제외하고 REST 웹 서비스를 사용하는 것이 일반적으로 훨씬 쉽습니다.
애플리케이션 요구 사항에 따라 SOAP 및 REST를 측정하는 데 도움이되는 단순하고 시각적 인 가이드가 필요한 경우 ...
Vijay Prasad Gupta는 간단하고 유용한 흐름도를 만들었습니다.
플로우 차트에 직접 링크 : https://drive.google.com/file/d/0B3zMtAq1Rf-sdVFNdThvNmZWRGc/edit
지금은 2015 년입니다. 지금 SOAP가 죽기를 바랐지만 여전히 나쁜 냄새처럼 남아 있습니다. 가장 기본적인 "예제"응용 프로그램 외에는 SOAP 서비스와의 통합에 어려움이 있습니다. 다중 구현의 여러 가지 단점과 미묘한 (비밀하지 않은) 비 호환성과 결합 된 여러 수준의 많은 옵션이있는 복잡한 아키텍처입니다. 나는 그것에 대해 좋은 경험을 한 번도 없었습니다. 반면에 REST는 산들 바람입니다. 모두가 HTTP를 이해합니다. 대부분의 경우 JSON에는 XML InfoSet보다 훨씬 많은 유틸리티가 있습니다.
SOAP의 복잡성에 대한 아이디어를 제공하려면 SOAP 라이브러리를 프로젝트에 통합하십시오. Java의 경우 가장 간단한 Apache Axis2 클라이언트 (간단한 ADB 데이터 바인딩 사용)는 23 개의 새로운 JAR을 가져옵니다. 이십 삼! 20MB의 라이브러리 팽창. CXF는 비슷합니다. 마지막으로 계산했을 때 21 JAR.
정말로 원한다면 간단한 HTTP 라이브러리로 REST를 수행 할 수 있습니다.