XML-RPC/SOAP vs. plain-old URLs

Thomas Weholt t-weh at online.no
Tue Aug 28 00:24:24 CEST 2001


Just read
http://www.byte.com/documents/s=1113/byt20010816s0002/0820_udell.html and it
got me thinking. I'm in the middle of a project using alot of XML-RPC for
communication between servers. The article clearly shows that there's a
significant overhead using XML-RPC ( guess much of the same would apply to
SOAP implementations too ).

( I guess you have to read the article to understand my question, but please
do; it's a good article. )

Could somebody point out limitations when using URLs instead of XML-RPC ?
Datatypes? Data structures?

Will the overhead of XML-RPC/SOAP make them slower than plain URLs? With
urllib and friends it's easy to use HTTP to send and receive data, but what
are the downsides? The simplicity of urls and availability of modules/libs
should make it a much easier to implement than learning XML-RPC/SOAP
properly. Much of the point of XML-RPC/SOAP is communication between
different systems, but parsing posted http-data is allready available in
almost any programming language on every major platform, so why bother with
these new things, bringing lots of overhead and much steeper learning
curves?

I guess the main limitation is what you can express with things like
"arg1=1&arg2=2&command=test" etc. but in most cases it would suffice. And
implementing a minimal structure for expressing more complex data-structures
shouldn't have be as verbose as shown in the article mentioned earlier
either. Perhaps I'm just rambling on here. I'll probably keep on using
XML-RPC for some stuff, but I'll definitly look into creating a module for
writing/reading simple datastructures using a simpler standard than xml.

( One python-only solution could be to pickle python objects, perhaps
compress them using zlib and pass them as raw data using HTTP. Probably
smaller than xml, but python only. At least for communication between
python-based systems this should work. Encryption would be easy to add,
user/password restriction to objects ( it's allready in HTTP ) too and one
could get digitally signed objects with little effort. Has anybody done
something like this allready? )

I'm not bashing XML-RPC/SOAP, I'm using those technologies myself, but
they've gotten alot of attention lately and appear as the saving angel for
platform- and language-independant information exchange in lots of coming
attractions, like MS .Net, Mono etc. Perhaps we overlooked the simple and
obvious?

The bottom line: what about the speed and limitations to what can be
expressed using the POST-command with HTTP, - using modules available in
Python?? Both just-python and language-independant solutions are welcome.

Any ideas, flames or comments?

Thomas






More information about the Python-list mailing list