반응형
출처: http://www.ibm.com/developerworks/kr/xml/standards/x-soapspec.html
 난이도 : 중급

필자: W3C

2007 년 6 월 26 일

SOAP 프로토콜에서는, 인터넷 프로토콜로 연결된 시스템들간 통신에 XML을 사용할 수 있습니다. XML 정보에 표준 인벨롭(envelope)을 제공하여 네트워크 메시지들을 통해 전송될 수 있도록 하고, 메시지 바디(body)에 대한 규약도 제공합니다. SOAP의 역사를 이해하고, 웹 서비스, 서비스 지향 아키텍처(SOA), Representational State Transfer (REST)와의 관계를 이해해 봅시다.

SOAP [W3C Recommendation]은 인터넷 프로토콜을 사용하여 연결되어 있는 시스템들 간 통신에 XML을 사용하는 프로토콜이다. 많은 사람들은 SOAP을 XML 웹 서비스의 토대, XML 데이터 포맷을 사용하여 연결된 시스템간 인터랙션을 관리 및 구성하는 기술, 인터넷 통신 프로토콜로 생각하고 있다. SOAP은 원래 IBM®을 비롯한 다양한 기업에서 모인 사람들에 의해 개발되었다. 견고한 아키텍처와 상용 지원을 갖추었던 초기 XML 메시징과 유사한 기능을 제공했기 때문에 빠르게 대중화되었다. World Wide Web Consortium (W3C)으로 넘어간 SOAP의 개발은 SOAP 1.2까지 탄생시켰고, 많은 아키텍처 향상을 이룩했지만, 이에 못지않게 많은 논란의 대상이 되었다. SOAP 프로토콜은 가상 XML 페이로드를 포함하여 XML Envelope 포맷을 정의하고 있다. (실제 SOAP 메시지의 페이로드가 XML의 완전한 기능을 사용하지 못한다는 사실은 상당한 논쟁거리가 된다.)

XML 웹 서비스는 서비스 지향 아키텍처(SOA)라고 하는 일반적인 개념과 밀접하게 연관되어 있지만, 이 중 어떤 개념들도 SOAP을 대체하지는 못한다. 많은 사람들은 HTTP를 통해서 직접 미가공 XML 문서들을 교환한다는 개념을 옹호하고 있다. 이는 Representational State Transfer (REST)가 추구하는 방식이기도 하다. REST는 Roy Fielding이라고 하는 아키텍트가 명명한 웹의 아키텍처 스타일이다. REST 스타일의 웹 서비스 옹호자는 SOAP은 복잡하고, XML 페이로드를 방해하고, 웹의 강점을 충분히 활용하지 못한다고 지적하고 있다. SOAP 옹호론자들은 SOAP의 원격 프로시저 호출(RPC) 루트에서 document-literal 스타일의 SOAP으로 강조를 옮김으로써 이러한 문제를 해결해왔다. RPC 스타일에서, 전송되는 데이터는 특별한 XML 페이로드 포맷(SOAP encoding)에 개별 데이터 유형으로 마샬링 된다. document-literal 스타일에서, XML 페이로드는 보다 설명적이고 가독성 있는 자연스러운 XML 포맷으로 구성된다.

SOAP 조직

SOAP과 관련하여 많은 표준들이 만들어지고 있지만, 이 글에서는 다루지 않겠다. 다음은 SOAP 관련 표준과 관련한 리소스들이다.

SOAP의 전신에 해당하는 XML Remote Procedure Calls (XML-RPC) [community specification]는 여전히 광범위하게 사용되고 있다. XML-RPC는 XML로 인코딩 되고 HTTP를 통해 통신하는 프로시저 호출을 정의한다. 단순함(전체 스팩은 불과 10페이지 밖에 안된다.)과 대부분의 언어와 많은 애플리케이션 프레임웍이 표준 또는 쉽게 사용할 수 있는 XML RPC 구현을 갖고 있다는 사실 때문에 여전히 대중성을 확보하고 있다. 원시적인 데이터 타이핑과 문자 인코딩 지원의 부족이라는 치명적인 단점이 있다.


아는 지인이 SOAP 과 ebXML에 대한 질문을 해왔다. 현재 일하고 있는 곳에서 사용하고 있지만
개념을 확실히 알고 사용하는 것이 아니였기에 지인에게 정확한 답변을 해주지 못하였다.
이에 개념을 확실히 정리해야 겠다는 생각이 들어 자료를 정리해본다.
현재 하고 있는 일에 관한 많은 부분에 대해서 개념은 없고 사용만 하는 부분이 많다.
좀 더 하는 일에 대해 개념을 정립하고 그에 관련된 정보를 모아서 정리해야겠다.

+ Recent posts