3. XML-RPC과 다른 프로토콜

원격 프로시져를 호출하는 방법에 XML-RPC가 유일한 것은 아니다. CORBA, DCOM 그리고 SOAP 등의 다른 유명한 프로토콜도 있다. 이들 프로토콜은 제각각 장단점을 가지고 있다.

이 장의 의견은 순전히 개인적인 생각일 뿐이다. 그냥 참고삼아 읽어주기 바란다.

3.1. XML-RPC 대 CORBA

CORBA는 분산, 객체지향 애플리케이션의 작성에 많이 사용되는 프로토콜이다. CORBA는 대체로 멀티-tier 엔터프라이즈 애플리케이션에 많이 사용되어져 왔으며, 최근에는 Gnome 프로젝트에서 애플리케이션 간의 내부적 통신을 위해 사용되고 있다.

CORBA는 많은 업체와 자유 소프트웨어 프로젝트에 의해 지원되고 있다. CORBA는 Java, C++ 그리고 다른 여러 언어에서 잘 실행된다. 또한 CORBA는 사용자로 하여금 쉽고 객체지향적인 API를 정의할 수 있도록, 훌륭한 인터페이스 정의 언어(interface definition language: IDL)를 지원한다.

하지만 CORBA는 아주 복잡하다. 배우는 데 많은 시간이 들고, 적용하는 데에도 상당한 노력이 필요하며, 클라이언트 구현이 꽤나 어렵다. 그래서 CORBA는 웹 애플리케이션보다는 엔터프라이즈 또는 데스크탑 애플리케이션에 더 적합하다.

3.2. XML-RPC 대 DCOM

DCOM 은 CORBA에 대응하는 Microsoft의 프로토콜이다. DCOM은 사용자가 이미 COM 컴포넌트를 사용하고 있고, Microsoft 외의 다른 시스템을 고려하지 않는다면 아주 훌륭하다. 그렇지 않다면 그다지 쓸모 없다.

3.3. XML-RPC 대 SOAP

SOAP는 XML-RPC와 매우 유사하다. SOAP 역시 HTTP와 XML 문서를 통한 일련화 프로시져 호출을 사용한다. 하지만 SOAP는 최초의 표준 명세에서 서로 달리 확장해 가는 것을 막을 길이 없어 보인다.

SOAP는 원래 UserLand와 DevelopMentor, Microsoft의 협력에 의해 만들어졌다. 최초의 공개 릴리즈는 XML-RPC를 기본으로 하고 네임스페이스와 긴 엘리먼트 이름을 사용할 수 있도록 하였다. 그러나 그 이후에 SOAP는 W3C working group으로 넘겨졌다.

그런데 W3C working group은 SOAP에 여러 잡다한 것을 추가시켜 버렸다. 이 글을 쓰고 있는 현재 SOAP는 XML Schemas, enumerations, struct와 array의 혼합, 그리고 사용자 정의 데이타형 등을 지원한다. 그와 동시에 플랫폼에 따라 몇가지 형태의 SOAP가 나타났다.

XML-RPC과 유사하지만 더 많은 기능을 지원하는 프로토콜을 찾는다면 SOAP를 살펴보라. :-)