XML-RPC

XML-RPC是一個远程过程调用（，RPC）的分布式计算協議，通过XML将调用函数封装，並使用HTTP协议作為傳送機制。

歷史 

XML-RPC發表於1998年，由UserLand Software（）的Dave Winer及Microsoft共同發表。後來在新的功能不斷被引入下，這個標準慢慢演變成為今日的SOAP協定。

XML-RPC協定是已登記的專利項目，由Phillip Merrick、Stewart Allen及Joseph Lapp共同持有，於1998年3月提出申請，指其將用於一個構想中的應用程式，並於2006年4月獲得接納。現時這個專利由位於美國維珍尼亞州費爾法克斯的webMethods使用。

用法 
XML-RPC透過向裝置了這個協定的伺服器發出HTTP請求。發出請求的用戶端一般都是需要向遠端系統要求呼叫的軟件。

JSON-RPC（JSON-RPC）跟 XML-RPC 相類似。

数据类型

以下的例子為日常的数据类型在轉化為等同的XML後的面貌：

範例 

以下為一個尋常的 XML-RPC 請求的範例：
<?xml version="1.0"?>
<methodCall>
  <methodName>examples.getStateName</methodName>
  <params>
    <param>
        <value><i4>40</i4></value>
    </param>
  </params>
</methodCall>

相對於上述請求，以下為一個尋常回應的範例：
<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
        <value><string>South Dakota</string></value>
    </param>
  </params>
</methodResponse>

以下為一個尋常的 XML-RPC 錯誤：
<?xml version="1.0"?>
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value><int>4</int></value>
        </member>
        <member>
          <name>faultString</name>
          <value><string>Too many parameters.</string></value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>

批評

实现

Python 
 xmlrpclib
 Renamed xmlrpc.client  in Python 3.
 Creating XML-RPC Servers and Clients with Twisted

C++ 
 Libiqxmlrpc 
 Ultra lightweight XML-RPC library for C++ 
 XML-RPC for C and C++ 
 XmlRpc++ 
 XmlRpc C++ client for Windows 
 gSOAP toolkit for C and C++ supporting XML-RPC and more 
 libmaia: XML-RPC for Qt/C++

Objective-C / GNUstep / Cocoa 
 XMLRPC Framework 
 Cocoa XML-RPC Framework : Open Source XML-RPC framework written for use in Mac OS X Cocoa applications.

Erlang 
 XML-RPC for Erlang: This is an HTTP 1.1 compliant XML-RPC library for Erlang. It is designed to make it easy to write XML-RPC Erlang clients and/or servers. The library is compliant with the XML-RPC specification published by https://web.archive.org/web/20051210031514/http://www.xmlrpc.org/

Java 
 Apache XML-RPC : Open source library for Java
 XML-RPC Delight : Convenient serialisation/deserialisation for Apache XML-RPC using Java Annotations and Beans
 : Secure Apache XML-RPC
 Redstone XML-RPC Library : Redstone's Open Source Library - XML-RPC implementation in Java
 XML-RPC Library for Java ME : Open source client-side library for Java ME

XMPP 
 pyJabberXMLRPC : Python classes for XMPP
 Jabber-RPC : Over the Extensible Messaging and Presence Protocol protocol

Other 
 JSON/XML-RPC Client and Server : Abstract away the differences between JSON-RPC and XML-RPC
 RemObjects SDK  Delphi and .NET package for XML-RPC, in addition to SOAP and others
 RealThinClient SDK : For Delphi/C++
 XML::RPC : Perl module implementation
 XML-RPC for ActionScript : For Flash ActionScript 2.0
 as3-rpclib : For Flex/Actionscript 3
  XML-RPC.NET: Open source library for .NET clients and servers
 XmlRpc-Light : Client and server library for OCaml
 S-XML-RPC : Client and server library for Common Lisp
 PHP-XML-RPC : For PHP
 HaXR: Client and server library for Haskell
 xi library with PHP and Javascript XML-RPC: For PHP and Javascript
 Ruby XML-RPC library: For Ruby
 XML-RPC interface to Lua: For Lua
 android-xmlrpc : A light XML-RPC client for Google Android
 XML-RPC for Tcl : A Tcl implementation of XML-RPC providing client and server support
  : RebXR, a full client/server XML-RPC implementation for REBOL.

參看 
AJAX
Component technologies
List of Web service markup languages
OPML
Web服務

參考資料

外部連結 
 XML-RPC Homepage 
 Forum 
 Tutorials
 Technology Reports 
 Citations from CiteSeer 

基于XML的标准
Web服务规范
网际协议
分布式计算
遠端程序呼叫