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)
