Developing a Client Application

Parent Previous Next

The following points should be considered:

It is strongly recommended to use an existing XMLRPC library.

Some scripting languages already come with an XMLRPC library like for example Ruby (www.ruby-lang.org) and Python (http://www.python.org/).

An XMLRPC library for Perl can be found at http://www.blackperl.com/RPC::XML/.

An XMLRPC library for Flash ActionScript can be found at http://xmlrpcflash.mattism.com/.

An XMLRPC library for C++ can be found at http://sourceforge.net/projects/xmlrpcpp.

An XMLRPC library for C can be found at http://xmlrpc-c.sourceforge.net/.

More implementations for many programming languages  can be found at http://www.xmlrpc.com/directory/1568/implementations.

If no XMLRPC library is available, then it is strongly recommended to use existing HTTP, and XML frameworks. Quite a lot of programming languages come with ready-to-use HTTP and XML libraries.

An XML library for C++ can be found at http://libxmlplusplus.sourceforge.net/.

Other XML libraries can be found via libxml on http://xmlsoft.org/.

XMLRPC has one serious drawback: performance.

Converting data from a typically binary representation into XML and vice versa is rather slow.

An XML representation of a complex data structure becomes much larger than a binary representation and thus making the network communication slow. If the size of the HTTP request including the XML data exceeds the TCP packet size (around 1.5 kB), additional packets must be sent slowing down network communication drastically.

For performance-critical visualizations, clients written in compiled languages like C, C++, C# or Java are preferred.

If performance is not critical, script languages are better suited for a XMLRPC client. This is because script languages can often perform complex data manipulation operations with only a few (or just a single)  lines of code.

Generally, compiled code is faster but script code is shorter and written in less time.

The XMLRPC client should run in its own thread not to slow down the rest of the client application.