Home Infolets - Internet Innovations Explored Search
  XML Tuple Space
  Posted on Wednesday November 21, @05:53PM Pacific
Infrastructure The concept of a tuple space was first described in 1982 in a programming language called Linda. The basic idea is that you can have many active programs distributed over physically dispersed machines, unaware of each other's existence, and yet still able to communicate. They communicate to each other by releasing data (a tuple) into tuple space. Programs read, write, and take tuples (entries) from tuple space that are of interest to them. In general, a tuple is simply a list of values, such as (12, 7, 48) or ("ra", "gg", "mo", "pp") or ("Dave", 33, 125.7). A tuple-space is a public repository or buffer that can contain tuples. The tuple-space serves as an associative memory, in that tuples in the tuple-space can be accessed by matching some or all the elements of the tuples to values or types presented in a template, which is simply a tuple set up for this matching. Client programs can register to be notified of changes in a tuple-space.

Sun Microsystems brought this concept to Java via JavaSpaces. IBM has introduced a similar concept via TSpaces. PyBrenda is a tuple space implementation using 100% pure Python. There are many other tuple space implementations in many other languages in various states of development.

Recently, I came across a couple of interesting tuple space implementations that take advantage of XML.

Rogue Wave Software has an alpha version of Ruple. Ruple provides a foundation for applications to collaborate transparently and independently by selectively and securely sharing documents over the existing Internet infrastructure and technology. By leveraging a simple, SOAP-based interface for reading and writing documents to and from the space, implementing reads based on content instead of physical address, and building on document-level security. In order to support a loose coupling of applications using a shared space, the objects that applications operate on have to be self-describing, subject to associative query, and viewable in different environments. Documents or document fragments encoded as XML meet these requirements. Documents are accessed and modified using a simple set of atomic verbs. Verbs that access existing documents in Ruple require a query to be specified using a subset of the XML Query Language (XQL). Ruple is initially available in the form of two demos: an "authenticated user" demo and an "anonymous user" demo, hosted on the Rogue Wave Web site. A downloadable Java jar file and Java applet are also available for writing your own Java or JavaScript Ruple applications that talk to the space hosted at Rogue Wave.

The Crudlet Project is another interesting approach. Crudlet is an event based architecture for connecting XML based interface structures to Jini service layers. The Crudlet Architecture can be used simply as a traditional application server engine that links a database to a web front end. It could also be used for something as sophisticated as a fully distributed exchange system that utilizes auto generated Java servlets and an ensemble of Jini services to provide content sharing and middleware messaging. The Java package org.crudlet.* provides a collection of events, expressed as XML tags, that map to the JavaSpaces interface. Put simply, data is moved is moved back and forth between the XML based front end and the Jini back end through a series of events. Each event executes the business logic contained on the JavaBean for each component as it is passed backward to the JavaSpace. The information is then returned, along with an error structure to the user interface. Crudlet's purity of separation of powers between the front end design layer (XSL/XML) the business logic layer (JavaBeans), the backend messaging layer (JavaSpace and agents) and database layer (JDBC) can provide advantages over other application server architectures.

  Post Reply

All publicly displayed email addresses will automatically be appended with "no spam"
Your comments can be written in plain text or you can use the following HTML tags:
<B> <I> <P> <A> <LI> <OL> <UL> <EM> <BR> <TT> <STRONG> <BLOCKQUOTE>

You may embed links using <A href="http://www.yourlink.com/">text you want to appear</A>

By submitting this message, you grant Infolets and its owners a separate and independent copyright to your posting, and you retain your own copyright. Thus, we can do whatever we want with your posting, and so can you.

Note: Fields with bold titles are required.

Copyright © Infolets 2000 - 2011. Infolets is a project of David Rubin