My old friend XML-RPC

I surprisingly often find myself in a situation where I need programs created in different environments such as Python and Java to communicate. There are hundreds of ways to achieve this, ranging from file or socket communication to using an independent broker, like a messaging or queueing service.

It feels unnecessary to invent a new custom protocol for inter-process communication when all I want is to make a simple remote procedure call across programming languages and runtime barriers.

So instead I pick up my old friend, XML-RPC, which is included in the standard library of languages such Ruby and Python, and is readily available from independent libraries for many languages, such as the Apache XML-RPC client/server library for Java.

You may have learned to automatically roll your eyes when you read the acronym XML. And I can understand why, as I've also fought battles in the tiny part of hell called public SOAP services, I even created a (now defunct) JSON API to validate EU VAT numbers to avoid ever again having to deal directly with EU's SOAP XML servers. But, to me XML-RPC is a very different thing.

The XML-RPC protocol is the easygoing predecessor to SOAP. In hindsight it looks like Microsoft took offence from the simplicity of XML-RPC, and extended the protocol to the monster that is SOAP, which came to rule the enterprises of the world, and made most programmers despise XML.

Disregarding the history, XML-RPC is still an immensely useful tool for coupling disparate programming environments together. The best things about it are that you don't need to know anything about XML to use the protocol libraries, and that it's available, and probably also part of the standard library, in your favourite programming languages.