XML-RPC

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

XML-RPC는 1998년 데이브 와이너와 마이크로소프트에 의해 개발된 원격 프로시저 호출(RPC) 프로토콜이다. HTTP를 통해 XML 형식으로 데이터를 교환하여, 클라이언트가 서버의 메서드를 호출할 수 있게 한다. XML-RPC는 특정 데이터 형식을 정의하며, JSON-RPC와 유사한 기능을 수행한다. 그러나 일반 XML에 비해 데이터 크기가 크고, XML 스키마와 같은 응용 프로그램 수준의 데이터 모델이 필요하다는 비판을 받는다.

XML-RPC
지도 정보
기본 정보
유형원격 프로시저 호출 프로토콜
개발자UserLand Software
최초 출시1998년
최신 버전1.0 (1999년 1월 15일)
상태사양은 더 이상 유지 관리되지 않음
종류원격 프로시저 호출
웹사이트XML-RPC 공식 웹사이트
기술 정보
기반HTTP
데이터 직렬화XML
IANA 포트80 (HTTP)
📚 더 읽어볼만한 페이지
  • 원격 프로시저 호출 - D-Bus
    D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다.
  • 원격 프로시저 호출 - DCE/RPC
    DCE/RPC는 분산 컴퓨팅 환경에서 원격 프로시저 호출을 가능하게 하는 프로토콜로, 오픈 소프트웨어 재단에서 개발되었으며, 다양한 운영체제와 환경에서 사용된다.
  • 인터넷 프로토콜 - IPTV
    IPTV는 인터넷 프로토콜을 사용하여 실시간 방송, VOD 등 다양한 콘텐츠를 제공하는 텔레비전 서비스이며, 고속통신망과의 통합, 양방향 서비스 등의 장점을 가지지만 망 사업자 제한 등의 제한 사항도 존재한다.
  • 인터넷 프로토콜 - DNSSEC
  • 분산 컴퓨팅 - 클라우드 컴퓨팅
  • 분산 컴퓨팅 - 그리드 컴퓨팅
    그리드 컴퓨팅은 지리적으로 분산된 컴퓨터 자원을 연결하여 가상 슈퍼컴퓨터를 구축하는 기술이며, 유휴 자원을 활용하고 과학 연구 등 다양한 분야에 활용된다.

2. 역사

XML-RPC 프로토콜은 1998년 유저랜드 소프트웨어의 데이브 와이너와 마이크로소프트가 만들었으며, 마이크로소프트는 이 프로토콜을 기업 간 전자 상거래(B2B) 분야에서 자사의 노력을 확장하는 데 필수적인 부분으로 여겼다. 이후 새로운 기능이 도입되면서 이 표준은 현재의 SOAP로 발전했다.

유저랜드는 1998년 6월에 출시된 자사의 웹 콘텐츠 관리 시스템인 프론티어(Frontier) 버전 5.1부터 XML-RPC를 지원했다.

XML-RPC의 인간이 읽고 쓸 수 있으며, 스크립트 파싱이 가능한 HTTP 기반 요청 및 응답 표준 아이디어는 Allaire의 웹 분산 데이터 교환 (WDDX) 및 webMethod의 웹 인터페이스 정의 언어 (WIDL)와 같은 경쟁 사양에서도 구현되었다. XML 구문을 사용하여 COM, 공통 객체 요청 브로커 아키텍처, Java 원격 메서드 호출 객체를 래핑하고 HTTP를 통해 전송하는 선행 기술은 DataChannel의 WebBroker 기술에도 존재했다.

원격 프로시저 호출(RPC)에 XML을 일반화하여 사용하는 것은 2006년 4월 필립 메릭(Phillip Merrick), 스튜어트 앨런(Stewart Allen), 조셉 랩(Joseph Lapp)에 의해 특허를 받았으며, 1998년 3월에 제출된 임시 출원에 대한 이점을 주장했다. 이 특허는 페어팩스, 버지니아에 위치한 웹메소드에 양도되었다. 이 특허는 2019년 3월 23일에 만료되었다.

3. 사용 예

XML-RPC는 클라이언트가 서버에 HTTP 요청을 보내고 HTTP 응답을 받는 방식으로 RPC를 수행한다. 호출에는 여러 매개변수와 하나의 결과가 있을 수 있다. 이 프로토콜은 매개변수와 결과에 대한 몇 가지 데이터 형식을 정의하며, 이러한 데이터 형식은 중첩될 수 있다.

매개변수 및 결과의 구조와 데이터 형식 집합은 일반적인 프로그래밍 언어에서 사용되는 것들을 반영하여 설계되었다.

클라이언트 식별 및 권한 부여는 널리 사용되는 HTTP 보안 방식을 통해 이루어진다. 기본 인증을 사용하면 식별 및 인증이 가능하다.

RESTful 프로토콜은 자원 표현(문서)을 전송하는 반면, XML-RPC는 메서드를 호출하도록 설계되었다. XML-RPC는 더 구조화되어 있어 일반적인 라이브러리 코드를 사용하여 클라이언트와 서버를 구현할 수 있고, 특정 애플리케이션 프로토콜 설계 및 문서 작업이 줄어든다는 실질적인 차이점이 있다. 많은 RESTful 프로토콜이 HTTP URI를 매개변수 정보에 사용하는 반면, XML-RPC에서 URI는 단순히 서버를 식별한다는 점이 두드러진 기술적 차이점이다.

JSON-RPC는 XML-RPC와 유사하다.

3.1. XML-RPC Call 형식 예제

XML-RPC 호출(Call) 형식의 예시는 다음과 같다.

```xml


examples.getStateName


40


3.2. XML-RPC Response 형식 예제

다음은 XML-RPC 응답 형식의 예시이다.

```xml




South Dakota


3.3. XML-RPC Fault 형식 예제

xml






faultCode
4


faultString
Too many parameters.




4. 자료형

XML-RPC는 몇 가지 기본 자료형을 정의한다. 일반적인 자료형은 아래 표와 같이 XML 형식으로 변환된다.

👆
좌우로 밀어서 보기
이름태그 사용 예설명
array값의 배열. 키는 저장하지 않음.
base64<base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64>Base64로 인코딩된 바이너리 데이터
boolean<boolean>1</boolean>부울 논리값 (0 또는 1)
date/time<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>ISO 8601 형식의 날짜와 시간
double<double>-12.53</double>배정밀도 부동 소수점 숫자
integer정수
string<string>Hello world!</string>문자열. XML 인코딩을 따라야 함.
struct연관 배열
nil<nil/>구분된 null 값; XML-RPC [https://web.archive.org/web/20050911054235/http://ontosys.com/xml-rpc/extensions.php 확장]

5. 비판

최근(2010년 이후) XML-RPC 비평가들은 RPC 호출이 일반 XML로 이루어질 수 있으며, XML-RPC가 XML보다 어떠한 가치도 더하지 않는다고 주장한다. XML-RPC와 XML 모두 XML 스키마에 정의된 필드 이름이나 XML-RPC의 매개변수 이름과 같은 응용 프로그램 수준의 데이터 모델이 필요하다. 또한, XML-RPC는 동일한 객체를 인코딩하기 위해 일반 XML에 비해 약 4배의 바이트를 사용하며, 이는 JSON에 비해서도 장황하다.