Before the first version of the SOAP specification was completed, a simpler specification for a remote procedure call mechanism employing XML over HTTP was created by Dave Winer of UserLand Software; this specification is known as XML-RPC. This specification builds in less support for complex data types, but has the advantage of simplicity. Uptake among the developer community has been very rapid, in part because it filled a void before SOAP was available, and in part because the simpler specification allowed implementations to be easy to work with.
The simplicity of XML-RPC comes largely from the willingness of
the authors of the specification to nail down many of the details
required to implement the specification. Where SOAP allows the use of
alternate transport protocols and data serialization rules, XML-RPC
specifies HTTP POST
requests and a
single set of serialization rules. Though the flexibility offered by
SOAP can be valuable for some projects, many developers suspect that
this will be used to bloat middleware components and achieve vendor
lock-in, which is something many XML users are trying to avoid.
Fredrik Lundh’s xmlrpclib
module, which will be part of the
Python standard library as of Python Version 2.2, is available for older
versions of Python at http://www.pythonware.com/.
It presents a proxy interface very similar to that of SOAPy for clients
to use, and provides support for basic server implementations as
well.
For more information on XML-RPC, refer to Programming Web Services with XML-RPC by Simon St.Laurent, Joe Johnston, and Edd Dumbill (O’Reilly, 2001). This book includes information on using XML-RPC with Python.