What is the RCRT XML-Space ?
The RCRT XML-Space provides xml-oriented LINDA/Javaspace-like space-services, which enables a space of xml-entries
to be populated, accessed and manipulated within the context of a distributed computing framework.
Clients, servers, and other agents on the grid, can then interact with one another using distributed xml collection semantics.
This approach can be used to implement and support a wide range of distributed computing and parallel processing techniques.
Parallel Computing
XML-Space technology is especially well-suited to support and implement xml-oriented parallel computing applications.
Well known arrangements, such as the 'master-worker' processing pattern, and others, can be implemented easily using
distributed xml-space operations.
XML-Space Internal Architecture
A simplified view of the internal architecture of the RCRT xml-space server is shown below:
XML-Space 'Entries'
The xml documents that are stored within xml-space are known as entries. Each xml-space entry includes both a
'header' and a 'body' section, in a similar way to an xhtml web page. Entries can be inserted into the space, and then
read or removed from it, according to various matching criteria. These matching criteria can include xml-tuple (or 'x-tuple')
matching rules, as well as xml xpath selectors; the combination of which gives a great degree of flexibility.
There is also a simple mechanism by which any valid xml document can be converted to, and stored as, an xml-space entry.
This means that the xml-space can process anything that can be serialized to an xml representation. This could include,
for example: shared data, serializable software components, computational results or even xhtml web-pages.
Connecting to the XML-Space
XML-Space services can be accessed using a range of 'connector' technologies, these include:
- SOAP xml web-services.
- Standard TCP-IP.
- AJAX.
- Java-RMI.
- Java-Jini.
This means that Java, .Net, browser-based javascript components, and others, can easily share both their data and
functionality; collaborating effectively with one another across xml-space.
The XML-Space API
The inherent simplicity of collection semantics - essentially consisting of: 'put', 'read' and 'take' operations
(although our xml-space includes additional functionality) turns out to be advantageous in many respects when compared to
some other, much more semantically complex, methods for structuring distributed and parallel processing algorithms.
These operations essentially provides a simple, compact, grammar that can be used as the basis for factoring algorithms
in a distributed or parallel computing environment.
XML-Space Applications
There are a wide range of applications for this technology, including:
- Bridging combinations of SOAP, RMI, TCP-IP, Jini and AJAX based xml peers.
- Bridging synchronous, asynchronous and other message-based communications protocols.
- Implementing a wide range of shared and distributed data structures.
- Linking together a diverse range of distributed software components.
- Implementing a range of distributed and parallel processing algorithms.
- Building high-speed parallelised computational analytics.
- Linking AJAX web clients to services provided by other xml-space peers.
Some Examples
We have provided a number of examples to illustrate xml-space applications, these include:
- An xml 'ping-pong' message exchange system.
- Computing the hyper-volume of a hypersphere using monte-carlo simulation.
- Breaking the Enigma Code - An example from 'classical' cryptography.
- GAVONTS - Our 'meta-model' technology for solving non-linear problems using genetic algorithms.
- A prime number calculator, which runs its calculations within connected web browsers.
Forthcoming Releases - More Advanced Techniques
We have a number of more advanced tools and techniques that are currently being prepared for release, these include:
(i) A patterns and algorithms framework library, and (ii) Our latest 'Avalanche Space' technology.