Unix Programming - Application Protocol Metaformats - XML-RPC, SOAP, and Jabber
There is a developing trend in application protocol design
toward using XML within
MIME to structure
requests and payloads. BEEP peers use this format for channel
negotiations. Three major protocols are going the XML route
throughout: XML-RPC and SOAP (Simple Object Access Protocol) for
remote procedure calls, and Jabber for instant messaging and presence.
All three are XML document types.
XML-RPC is very much in the Unix spirit (its author observes
that he learned how to program in the 1970s by reading the original
source code for Unix). It's deliberately minimalist but nevertheless
quite powerful, offering a way for the vast majority of RPC
applications that can get by on passing around scalar
boolean/integer/float/string datatypes to do their thing in a way that
is lightweight and easy to understand and monitor. XML-RPC's type
ontology is richer than that of a text stream, but still simple and
portable enough to act as a valuable check on interface
complexity. Open-source implementations are available. An excellent
XML-RPC home page points to
specifications and multiple open-source implementations.
SOAP is a more heavyweight RPC protocol with a richer type
ontology that includes arrays and C-like structs. It was inspired by
XML-RPC, but has been plausibly accused of being an overdesigned
victim of the second-system effect. As of mid-2003 the SOAP
standard is still a work in progress, but a trial implementation in
Apache is tracking the
drafts. Open-source client modules in Perl, Python, Tcl, and Java are readily discoverable by a Web
search. The W3C draft specification is available on the Web.
XML-RPC and SOAP, considered as remote procedure call methods,
have some associated risks that we discuss at the end of Chapter7.
Jabber is a peer-to-peer protocol designed to support instant
messaging and presence. What makes it interesting as an application
protocol is that it supports passing around XML forms and live
documents. Specifications, documentation, and open-source
implementations are available at the Jabber
Software Foundation site.
[an error occurred while processing this directive]