SandStorm is a loose framework for creating cross-platform, multi-language, modular and distributed "middle-ware" web applications.
SandStorm employs XML-RPC as it's communication mechanism, but builts several API's on top of it, adding service discovery via a central registry, as well as Eric Kidd's introspection API
With SandStorm, you can divide your application into "components". each component is an anatomical unit, with standard component API, as well as it's own API. Your component can be then registered at the central registry, either by a utility(in case of a CGI), or by itself(if it's binding it's own port)
The registry contains the location(URI) of all components. the SandStorm bindings can query the registry for a component, and the client can send RPC calls to the component, unaware of it's current location
Using SIDL (SandStorm Interface Definition Language), you have the ability to define all of your XML-RPC interfaces and API's in a common format, which can be then used to validate your implementations
Components can be created in your language of choice. currently PHP, Python, Perl, Ruby and Java are supported.
SandStorm also comes with a set of common components in Python, providing hashtable based cache, and authentication components