Embedded systems and XML distributed applications

I have recently been looking at using XML in devices with very limited
resources. By limited resources I mean that the size of the XML-RPC or SOAP
message may be larger than the amount of memory on the device.

The natural way to approach this problem is to process the incoming message
"on the fly" as it arrives and to start to generate the response before the
whole of the incoming message has been received.

Unfortunately, neither XML-RPC nor SOAP are conducive to this approach.

XML-RPC requires a content-length: header which requires the size of the
reply to be known before it can be transmitted.

Both XML-RPC and SOAP lack any way of cleanly aborting all or part of a
message when some of it has already been sent. (by this I mean being able to
include an XML construct that effectively "throws an exception" when the XML
stream is processed - this would allow the sending application to encounter
an error when constructing the stream, notify the error, and the close all
the tags leaving a well formed XML document).

The mental model adopted by the designers of both these protocol seems to
have been that the input XML stream is de-serialised, the operation is
performed, the result is serialised and sent back to the originator. Whist
this can work well for PCs it is less effective in light bulbs or toasters.

The problem arises again when discussing fields which contain large amounts
of data. The approach of using MIME may have much to recommend it on PCs but
*really* causes trouble with small systems.

I am by no means convinced that this group should take account of the
problems of very small systems - it is possible that a better approach for
these systems would be to pass the traffic through gateways (though the
current experience with WAP shows that this is not a panacea). However I do
think the issue should be raised so that the group can at least take a view
on it.

John Wilson
The Wilson Partnership
5 Market Hill, Whitchurch, Aylesbury, Bucks HP22 4JB, UK
+44 1296 641072, +44 7976 611010(mobile), +44 1296 641874(fax)

Received on Monday, 2 October 2000 10:33:45 UTC