The basic abstraction of SOFA 2 runtime environment is SOFAnode. It is actually a distributed runtime environment comprising several computers and providing basic infrastructure. In fact it may be seen as a domain in which a component application is executed.
The SOFAnode consist of a single repository and set of deployment docks. The repository serves as storage for both component meta-data and code and it is generated from the meta-model. The deployment dock is a container inside which components are instantiated and running. The other entities of the SOFAnode are Deployment Dock Registry and Global Connector Manager.
The repository is the heart of a SOFAnode. It stores both the meta-data about components as well as component implementations.
The core of the repository is defined and generated using the EMF framework. Over the core, there is an accessing layer developed, which allows remote access to the repository and provides helper methods simplifying its usage.
A deployment dock can be viewed as a container for launching components and it provides necessary infrastructure for starting, stopping, and updating components.
During deployment of an application, each component forming the applications has to be assigned to a particular dock in the SOFAnode. This assignment is stored in the deployment plan, which serves as a "recipe" for launching components. The deployment plan is used by the launching tool, which contacts involved deployment docks and instructs them to launch given components. Necessary code of the components is automatically obtained by the docks from the repository.
Deployment Dock Registry
The deployment dock registry registers all docks of a single SOFAnode. It exist in a single instance per SOFAnode.
Global Connector Manager
The global connector manager is responsible for connecting units of connectors together. Like the dock registry, it also exist in a single instance per SOFAnode.
The functionality of the SOFAnode illustrated in the following figure. Docks 1, 2 and 3 are parts of the SOFAnode in the example - i.e., they are registered in the dock registry. During the startup of a dock (e.g. Dock 3), the dock registers itself in the dock registry. When another dock (e.g. Dock 2) needs to communicate with the Dock 3, it asks dock registry and the registry returns a reference to the Dock 3.
Next figure shows a possible configuration of a SOFAnode. Clouds represent separated host machines, brown thick rectangles are deployment docks (please note that more then one dock can be hosted by a single machine), and cubes represents components.