4. XML-RPC의 공통 인터페이스

몇몇의 XML-RPC 서버는 내장 메쏘드를 제공하고 있다. 그것은 XML-RPC 자체의 부분은 아니고 직접 만들어 추가한 것이다.

4.1. Introspection: 서버 API 찾기

Edd Dumbill는 다음과 같은 메쏘드를 제안했다.:

array system.listMethods ()
string system.methodHelp (string methodName)
array system.methodSignature (string methodName)

만약 서버가 위의 메쏘드를 지원한다면 사용자는 그것을 질의하고 결과를 출력할 수 있다.

import xmlrpclib
server = xmlrpclib.Server("http://xmlrpc-c.sourceforge.net/api/sample.php")
for method in server.system.listMethods():
    print method
    print server.system.methodHelp(method)
    print

위의 메쏘드들은 현재 서버상(http://xmlrpc-c.sourceforge.net)에서 PHP, C 그리고 Microsoft .NET의 형태로 제공되고 있다. 최근에 UserLand Frontier가 부분적으로 introspection을 지원하도록 업데이트 되었다. Perl, Python과 Java의 Introspection 지원에 대해서는 XML-RPC Hacks 페이지를 참고하라. 다른 XML-RPC 서버에서도 마음대로 introspection을 지원해도 좋다(권장한다)!

다양한 클라이언트 툴(문서 생성기, 래퍼 생성기 등등)도 XML-RPC Hacks 페이지에서 찾을 수 있다.

4.2. Boxcarring: 다수의 질의를 동시에 보내기

만약 작은 함수를 호출하는 루틴을 많이 가지는 XML-RPC 클라이언트를 만든다면, 인터넷 backbone latency를 이용하여 질의/응답의 왕복 시간을 줄이는 방법을 찾을 수 있다. 몇몇의 서버는 다음의 함수를 사용하여 다수의 질의를 하나로 묶어 보낼 수 있도록 한다:

array system.multicall (array calls)

상세한 정보는 system.multicall RFC에서 찾을 수 있다.

이 메쏘드는 현재 C와 UserLand Frontier로 작성된 서버들이 지원하고 있다. Python과 Perl로 작성된 서버는 XML-RPC Hacks 페이지에 있는 코드를 사용할 수 있다.