|
Summary
What is XML-RPC and how does it differ to the rest of these types of protocols?
XML-RPC is not intended to compete with SOAP. SOAP is a larger and more complex set of standards. XML-RPC is deliberately simpler and far more open. The community surrounding SOAP is largely corporate whereas the community surrounding XML-RPC is mostly just that... a community. This flexibility has both good and bad aspects.
Having said that, XML-RPC is blossoming under the UserLand leadership. It's number of webservices has increased significantly recently.
In fact one server tool called Radio (created by UserLand) is quite impressive as it provides an enormously powerful API (based on XML-RPC and SOAP as well) which enables websites of huge complexity to be create very simply. What Microsoft is hailing as a Hailstorm of innovations, Radio has probably already delivered the basic tools for... for only $39.
How do I program with XML-RPC?
Take a look at some of the systems using XML-RPC here: http://www.xmlrpc.com/directory/1568/implementations
TopXML has an XML-RPC solution (includes code) for calling COM components here: http://www.topxml.com/downloads/default.asp?id=v2001111192328
There is a library for XML-RPC that you can use in ASP, get it here: http://aspxmlrpc.sourceforge.net/ but be warned that this page has not been updated for quite some time.
The Python library can be found here: http://www.pythonware.com/products/xmlrpc/ and the Perl library found here: http://bitsko.slc.ut.us/~ken/xml-rpc/
Datatypes?
A limited subset datatypes are supported including:
- int - A signed, 32-bit integer.
- string - An ASCII string, which may contain NULL bytes. (Actually, several XML-RPC implementations support Unicode, thanks to the underlying features of XML.)
- boolean - Either true or false.
- double - A double-precision floating point number. (Accuracy may be limited in some implementations.)
- dateTime.iso8601 - A date and time. Unfortunately, since XML-RPC forbids the use of timezones, this is very nearly useless.
- base64 - Raw binary data of any length; encoded using Base64 on the wire. Very useful. (Some implementations don't like to receive zero bytes of data, though.)
- array - An one-dimensional array of values. Individual values may be of any type
- struct - A collection of key-value pairs. The keys are strings; the values may be of any type.
There is a very good specification regarding XML-RPC here: http://www.xmlrpc.com/spec
What about SOAP?
SOAP is very similar to XML-RPC in that it also makes procedure calls over HTTP as XML documents. SOAP is different in that it has been extended from it's inital XML-RPC roots to include support for XML Schemas, enumerations, structs, arrays, and custom data types.
|