SOAP와 REST 비교

1.  SOAP (Simple Object Access Protocol) 이란?

  • 1998년 corba나 dcom 과 같은 미들웨어 기술의 대안으로 microsoft 가 발표한 웹서비스 기술.
  • 1999년 12월 SOAP 1.0, 2000년 5월 1.1버전 W3C에 제출.
  • 현재 1.2버전 사용됨.
  • http프로토콜을 이용하여 xml 기반으로 메시지 교환.
  • 기본적으로 <Header>, <Body>로 구성됨. (Header는 선택, Body는 필수)
  • 에러 발생 시, <Body>안에 <Fault> element 추가되어 전송됨.
  • 예제 코드

The request:

GET /StockPrice HTTP/1.1

Host: cooolguy.net

Content-Type: application/soap+xml; charset=utf-8

Content-Length: nnn

 

<?xml version=”1.0″?>

<env:Envelope xmlns:env=”http://www.w3.org/2003/05/soap-envelope”

   xmlns:s=”http://www.cooolguy.net/stock-service”>

   <env:Body>

     <s:GetStockQuote>

          <s:TickerSymbol>MSFT</s:TickerSymbol>

     </s:GetStockQuote>

   </env:Body>

</env:Envelope>

  

 The response:

HTTP/1.1 200 OK

Content-Type: application/soap+xml; charset=utf-8

Content-Length: nnn

 

<?xml version=”1.0″?>

<env:Envelope xmlns:env=”http://www.w3.org/2003/05/soap-envelope”

   xmlns:s=”http://www.cooolguy.net/stock-service”>

   <env:Body>

     <s:GetStockQuoteResponse>

          <s:StockPrice>30.08</s:StockPrice>

     </s:GetStockQuoteResponse>

   </env:Body>

</env:Envelope>

  

2. REST (Representational State Transfer) 란?

  • ROY T.FIELDING 교수가 1995년 만든 웹 어플리케이션 간의 상호작용을 위한 이상적인 모델.
  • 현재 존재하는 웹 아키텍처의 근간.
  • 일반적인 웹이 REST를 가장 잘 표현한 아키텍처의 예. (페이지 간의 이동을 state 변이로 봄)
  • 자원(Resource)에 대한 정의를 제공. 웹페이지, 이미지, 텍스트, 비디오 등 어떤 것도 자원으로 가능.
  • 자원을 명사라고 하면, 어떤 동작을 취하게 하는 동사가 필요하게 되는데 HTTP의 GET, PUT, DELETE, POST 가 이에 해당.
  • GET : 읽기, PUT : 생성, 수정, POST : 생성, 수정, 삭제, DELETE : 삭제
  • RESTful 웹 서비스는 Plain old XML (POX)를 HTTP 프로토콜을 이용하여 사용하는 방식.
  • html, xml, josn등 다양한 형태로 자료 전달 가능.
  • 예제 코드

The request:

GET /StockPrice/MSFT HTTP/1.1

Host: coooguy.net

Accept: text/xml

Accept-Charset: utf-8

 

The response:

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: nnn

 

<?xml version=”1.0″?>

<s:Quote xmlns:s=”http://cooolguy.net/stock-service”>

     <s:TickerSymbol>MSFT</s:TickerSymbol>

     <s:StockPrice>32.08</s:StockPrice>

</s:Quote>

 

3. SOAP의 장/단점

  • 장점
    • 언어, 플랫폼, 전송(Transport) 중립.
    • 분산 컴퓨팅 환경에서 사용하기 위한 디자인
    • 웹서비스를 위해 널리 사용되는 표준. 다른 표준과 통합을 통한 확장성 뛰어남.
    • 에러 처리 기능 포함되어 있음.
  • 단점
    • REST에 비해 개념적으로 어렵고, 무거움.
    • REST보다 개발이 어렵고 Tool 필요한 경우 많음.

4. REST의 장/단점

  • 장점
    • 언어, 플랫폼에 중립.
    • 일반적으로 SOAP에 비해 웹서비스 개발이 더 쉬움.
    • Mash-UP을 통한 새로운 형태의 웹서비스 개발 용이.
  • 단점
    • 분산환경에서 메시지가 중간 경유지를 여러 번 통과하는 경우 사용 어려움.
    • 보안, 정책, 안정적인 메시지 전달을 위한 표준 부족함. (복잡한 요구사항은 직접 구현해야 함)

5. Reference

  • Microsoft 신현석 부장님 블로그 ”
    네트웍타임즈 10월호에 기사 게재. “WOA, SOAP vs REST 파헤치기”" (http://www.cooolguy.net/98)

2010.09.23 – 맑은 날의 서울 면목동

맑은 날의 서울 면목동.

버스를 기다리면서.