XML-RPC vs. Other Protocols


CORBA is a popular protocol for writing distributed, object-oriented applications. It's typically used in multi-tier enterprise applications. Recently, it's also been adopted by the Gnome project for interapplication communication.

CORBA is well-supported by many vendors and several free software projects. CORBA works well with Java and C++, and is available for many other languages. CORBA also provides an excellent interface definition language (IDL), allowing you to define readable, object-oriented APIs.

Unfortunately, CORBA is very complex. It has a steep learning curve, requires significant effort to implement, and requires fairly sophisticated clients. It's better-suited to enterprise and desktop applications than it is to distributed web applications.


DCOM is Microsoft's answer to CORBA. It's great if you're already using COM components, and you don't need to talk to non-Microsoft systems. Otherwise, it won't help you very much.


SOAP is very similar to XML-RPC. It, too, works by marshaling procedure calls over HTTP as XML documents. Unfortunately, SOAP appears to be suffering from specification creep.

SOAP was originally created as a collaboration between UserLand, DevelopMentor and Microsoft. The initial public release was basically XML-RPC with namespaces and longer element names. Since then, however, SOAP has been turned over a W3C working group.

Unfortunately, the working group has been adding a laundry-list of strange features to SOAP. As of the current writing, SOAP supports XML Schemas, enumerations, strange hybrids of structs and arrays, and custom types. Several aspects of SOAP are implementation defined.

Basically, if you like XML-RPC, but wish the protocol had more features, check out SOAP.

Adapted from Eric Kidd's XML-RPC HowTo.
See also Kate Rhodes's XML-RPC vs. SOAP.
For an interesting footnote see Dave's History of SOAP.