이러한 영역을 감안할 때 대략적인 개요를 제공 할 수는 있지만 결론을 이끌어 낼 수는 없습니다. 두 프로토콜이 다른 두 가지 주요 영역이 있습니다.
메시지 형식이 가장 이해하기 쉽습니다. 요청과 응답 모두를위한 SOAP 패키징은 상당히 무겁습니다. 헤더와 본문 섹션이 모두 포함 된 SOAP 엔벨로프가 있습니다. 요청 체인의 여러 필터에서 헤더를 사용하여 일종의 식별, 권한 부여 등을 수행 할 수 있습니다. 그러나 XML을 구문 분석하는 데 비용이 많이 들기 때문에 시스템의 확장성에 특정 페널티를줍니다. 스택의 SOAP 처리 계층에 따라 달라집니다.
서비스 발견은 아마도 가장 많은 경합이있는 곳입니다. 본질적으로 REST는 예측 가능한 엔드 포인트를 제공 하며 요청의 컨텐츠는 단순한 HTTP 요청입니다. 이점은 추가 오버 헤드가 없으며 최종 사용자는 사이트의 URL 구조를 이해 한 후 필요한 작업을 수행하는 방법을 거의 추측 할 수 있다는 것입니다. 물론 순진한 보안 의식이있는 사람들은이를 약점으로 볼 것입니다. 결국 SOAP을 사용하면 엔드 포인트가 무엇인지 알기 위해 WSDL을 사용해야합니다. 물론 SOAP을 사용하면 전체 메시지 형식이 제공되므로보다 표적화 된 공격을 할 수 있습니다.
제공 한 카테고리별로 분류 :
보안
본질적으로 다른 것보다 더 안전하지는 않습니다. 좋은 보안 원칙을 사용하십시오.
- 통신 암호화
- 처리하기 전에 사용자를 인증하고 권한을 부여하십시오
- 직접적인 공격을 피하는 좋은 코딩 습관
- 그리고 그것은 짧은 목록입니다.
모호함을 기억하십시오! = 보안.
공연
단순한 HTTP 프로토콜을 따르는 요청으로 인해 원시 성능과 확장 성이 모두 REST로 이동합니다. 대부분의 SOAP 스택은 SAX 구문 분석 (이벤트 기반 구문 분석)을 사용하여 SOAP 스택의 확장 성을 크게 향상 시키지만 오버 헤드에 상당한 영향을 미칩니다. SOAP에는 XML 구문 분석 오버 헤드 외에 정상적인 HTTP 처리 오버 헤드가 있습니다. REST에는 HTTP 처리 오버 헤드가 있습니다.
복잡성
시스템의 관점에서 보면 REST가 승리합니다. 움직이는 부품 수가 적고 요청 체인이 적습니다. 따라서 신뢰성을 높이기가 더 쉽습니다.
프로그래머의 관점에서, 사용중인 IDE 또는 프레임 워크가이를 잘 지원하면 SOAP가 이길 수 있습니다. 본질적으로 REST를 사용하면 전처리 작업 (인증 / 권한 부여 등)을 수행 할 수 있으며 SOAP를 사용하면 플러그 가능한 처리 체인으로 많은 작업을 수행 할 수 있습니다.
내 취향
HTTP 요청에 매우 익숙하며 웹 작동 방식을 알고 있습니다. 결과적으로 REST 접근법이 나에게 더 바람직합니다. 그러나 나는 내 고객 중 일부가 그 점에 불편하다는 것을 알고 있습니다. REST 대 SOAP 등의 보안을 비난하는 업계 기사를 읽었습니다. 결론은 보안이 보장되지 않는다는 것입니다. 응용 프로그램이 필요한만큼 안전해야합니다. 분명히, 소셜 웹 애플리케이션은 은행이나 정부 시스템만큼 많은 보안을 요구하지 않습니다. 많은 SOAP 스택에는 유사한 보안을 제공하기 위해 플러그 인 할 수있는 프로세서가 포함되어 있지만 여전히 찾아서 배치하는 것은 사용자의 책임입니다.