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)
Youre so cool! I dont suppose Ive read anything like this before. So nice to find somebody with some original thoughts on this subject. realy thank you for starting this up. this website is something that is needed on the web, someone with a little originality. useful job for bringing something new to the internet! I like this topic. Thanks. There is one article about Blackberry phone and playbook Blackberry 2010 Guide, the author is the developer of Blackberry product!
http://blog.naver.com/PostView.nhn?blogId=hypermin&logNo=70087262032&parentCategoryNo=6&viewDate=¤tPage=1&listtype=0
링크