At San Digital, some of us have been building things for people since the dawn of the web. Our historical perspective helps inform us about technological culture and trends today, almost compensating for the creaking knees.
The web before 1998 was a simple but chaotic place, inhabited by a few creatures of myth and legend. Standards were minimal and web server implementations largely proprietary. Browsers unable to do much more than synchronously post a form. Servers, usually limited to the Common Gateway Interface - a simple yet effective convention for executing malicious shell scripts on the beige box under the desk of those enthused by neologisms like "Information Superhighway".
This new protocol - Http, had promise for more than serving under construction GIFs and pictures of a filter coffee machine. It could be used to interact with services located under desks anywhere in the world; revolutionary at the time. People began to experiment with ways of improving machine to machine communication concurrently with rapid developments in browser and server technology.
Machine to Machine communications in this era were dominated by various forms of RPC, terrifyingly complex object invocation protocol's like CORBA, and Microsoft's CORBA, DCOM. There were no real open standards at this point, and the object protocols were barely usable on a corporate LAN, never mind when communicating to an intermittently available whale fat powered server somewhere north of Tromsø. Http had been designed to be simple and robust enough to be able to cope with the awful reliability and latency of the early internet, you could mostly GET stuff you were interested in and you could mostly POST stuff you wanted to tell people about; the question now was what?
Xml had a difficult childhood, it was conceived by a standards body who wanted it to be both a document markup language and also an interoperation standard for data, releasing 1.0 of the standard in 1998. This confused upbringing was however a perfect match for the web - the same representation could potentially be used to render Dave Weiner's homepage in a browser and for a computer program to find out what the weather was like in Tromsø.
Microsoft - at the time much and sometimes deservingly maligned company commonly known to web dwellers at the time by hilarious nicknames like 'M$' had begun to take an interest in the potential of Http for services and along with Dave Wiener conceived of a new standard that ..utilised Http called Xml/RPC. With Xml/RPC, we now had the beginnings of a workable and interoperable way of POSTing things that were not Html forms over the internet. Such was the enthusiasm for POSTing things that many forgot about GETting things entirely, an issue that will rear its head later in our story.
<methodCall> <methodName>cabin.getWeather</methodName> <params> </params> </methodCall>
Should respond with:
<methodResponse> <params> <param> <value><string>☃︎</string></value> </param> </params> </methodResponse>
Or more probably:
<methodResponse> <fault> <value> <struct> <member> <name>faultCode</name> <value><int>4</int></value> </member> </struct> </value> </fault> </methodResponse>
Xml/RPC was short lived outside of Dave's house, but at this point Don Box enters the story - a long time community COM expert and the coiner of one of the most jarring idioms in software history - "COM is Love". A phrase that most of those whose COM subject matter expertise was insufficient to pay for their children to go to collage would probably disagree with. Microsoft, and Don began to work on improvements to the Xml/RPC standard that would eventually result in SOAP, allegedly despite much internal competition from the COM team.