SOAPjr, the new SOAP?


XML was the data exchange format that was supposed to be the Holy Grail of information exchange mediums. SOAP was a protocol built around it that was supposed to make web-based communication robust, flexible, and…

slow.

While SOAP has been widely adopted and used in web-based applications, and while XML has become the predominant information exchange medium, we’re finding out that they just aren’t as efficient as they could be. The main problem stems mostly from bloat inherit in the XML specification. In a nutshell, XML requires a root node and well-formed tags in order to make it “valid”. So the way you would send a simple name/value pair in XML would be:


     value

While this may not be too bad for console-based applications1 this is extremely inefficient for web-based applications because of it’s size and the processing that is required to parse or “walk” the XML nodes in order to get the data you want.

Because of these (and other) issues, JSON was developed as a lightweight, cross-browser, alternative. JSON is essentially shorthand JavaScript Object Notation that allows us to pass name/value pairs in the format

{
     "name":"value"
}

which, as you can see compared to the XML above, saves a considerable amount of space and processing time on the client since JavaScript merely has to eval() the JSON string in order to parse it into a usable data object.

The problem we have now is that SOAP is only designed to use XML, not JSON, and the other communication alternatives like JSON-RPC are generally too lightweight and require extra code to handle errors not to mention the non-uniformity of the data that is often returned.

Enter SOAPjr, a lightweight alternative to SOAP and JSON-RPC that uses JSON schemas for data validation.

While SOAPjr doesn’t have very many tools and libraries at the moment, it is a very promising answer to the need for a lightweight and yet robust communications protocol. I plan on helping out with the development by helping to create tools in my favorite languages and frameworks like PHP, ExtJS, Java, GXT, Symfony, etc.

If you want to help out, get in touch with the SOAPjr team by emailing them at tools [at] SOAPjr.org.

No related content found.

  1. And I would argue that even there processing time is being misused processing the data. []
Share

Leave a comment