"An often unstated but fundamental assumption of successful distributed application architectures is that these architectures work best when constituent components can communicate freely. This means that any component can strike up a conversation with another component at will. The network -- the medium over which the components communicate -- is a transparent cloud that knows nothing and cares nothing about the content and purpose of the communication.
Unfortunately, reality skews this assumption. Most large networks -- in particular, the Internet -- are actually a network of independently controlled and administered smaller networks connected by firewalls, gateways, proxies, and similar devices. These devices fight tooth and nail to destroy network transparency, often at the network's edge where the potential for innovative distributed applications is greatest," says Todd Sunstead in this IBM/developerWorks article:
jatelite has implemented an interesting approach for the java-based world on this topic.
Any participant may reach any other participant in the network with high-level unified communication facilities provided by the jatelite middleware, no matter for which purpose the different participants in the network were developed.
Any existing or new software / application may be enabled to collaborate with any other existing software by developing jatelite modules accessing this software and providing access to the unified network ...