The Livespace bus provides a distributed space where information models can be published, similar in concept to a tuple space. The Livespace Bus extends the tuple space idea to allow complex data models to be published, with a similar level of expressivity to an XML document.
Services publish data models known as entities which represent their state, clients query and subscribe to them. Changes to the entities may be made at either the client or server end and are replicated out to all subscribers.
A key difference between the Livespace Bus and many other distributed systems is that it makes very little distinction between the concept of client and server. The only real conceptual difference between a client and a server is a server "owns" the entities it contains: a client may modify and create entities owned by a server, the server controls access, persistence, etc. All entity manipulations are exactly the same regardless of whether the entity is on a server or a replica on a client.
Services may be used to represent devices in the
room such as lights, projectors, video switches,
etc. The screenshot below shows the Livespace Browser application displaying details for a
projector device. The
property can be toggled to control whether the
projector is on or off.
Services do not have to be device controllers. For
example, the shared clipboard service publishes a
single entity with a
that is the contents of the shared
clipboard. Other services publish complex
information such preconfigured room setups,
automatic demonstrations (the Meta Applications
system) and room layout schematics.
Under the hood, the Livespace Bus uses the Elvin event notification system.
A number of new technologies take a similar distributed service model approach. These include:
Joint Battlespace Infosphere (JBI) being developed by the US Air Force Research Labs (AFRL).
All these systems acknowledge the limitations of of point-to-point RPC + static data models (e.g. SOAP). Complex service provision benefits from a looser, model-centric architecture