Introduction

Colony is Einet's remote services computing platform. It has similarities to both web services and CORBA's communications models. Built using our Argot data encoding library, Colony goes further than current technologies to provide a flexible infrastructure to build distributed computing solutions. Importantly, Colony is designed to be cross language and cross platform.

Colony implements new concepts to address some of the problems existing in current distributed systems. Using Argot, Colony encodes all communications in an efficient binary format. Argot ensures that both data and method interfaces are tightly bound between client and server. This ensures any changes between client and server are quickly found during development. Colony can communicate with devices with highly constrained memory; we have built a proof of concept Colony server in just 4kb of memory. Colony also has facilities to cope with high latency, allowing a single request to execute multiple method requests.

Colony supports the ability to handle RPC, data streams and messaging communication styles; the most suitable choice can be used by the developer. The transport mechanism used by Colony can be provided by any end to end communications channel. This transport can be provided directly by TCP/IP sockets, HTTP, SSL, or reliable delivery mechanisms such as Message Queues. To support data/object streaming an underlying streaming mechanism must be available.

Colony is designed to be integrated adjacent to any code being written. The RPC style ensures that Colony handles the communication from a method being called on the client to the actual method being called on the server. The full separation of the communication stack from the application ensures minimal changes are required to applications to make them fully distributed. It also interfers less with the intention of the software being developed.

In the above diagram a published object on a server does not require any knowledge of the communication mechanisms that are used to call the method from a remote client. The client in a Java implementation only requires the interface class to be published to access the relevant methods. Allowing pass by reference and pass by value ensures any method can be easily published from an object.

Colony provides direct object to object remote data streams which can handle both direct binary data or object streaming. This mechanism can be coupled with an object to provide seamless data streams to methods, allowing communications for specific methods to be tailored to the best communications model.

One of the Remote Procedure Call mechanism in Colony is provided by the Network Virtual Machine which allows multiple remote calls to be made in a single data transaction. The Network VM is also able to visit multiple hosts to make method calls before returning to the originator with a result.

Continue to Features to learn more of the features Colony provides.

Copyright 2004-2007 © Einet Pty Ltd
Legal Notice