The component topology is an abstract data structure that represents the relationships among component instances.
It is made of the following:
The structure of the component topology greatly influences how components run and obtain capabilities.
A component instance is a distinct embodiment of a component running in its own sandbox that is isolated from other instances of the same component and of other components.
You can often use the terms component and component instance interchangeably when the context is clear. For example, it would be more precise to talk about “starting a component instance” rather than “starting a component” but you can easily infer that “starting a component” requires an instance of that component to be created first so that the instance can be started.
The component instance tree expresses how components are assembled together to make more complex components.
Using hierarchical composition, a parent component creates instances of other components which are known as its children. The newly created children belong to the parent and are dependent upon the parent to provide them with the capabilities that they need to run. Meanwhile, the parent gains access to the capabilities exposed by its children through capability routing.
Children can be created in two ways:
The component topology represents the structure of these parent-child relationships as a component instance tree.
A moniker identifies a specific component instance in the component tree using a topological path. Monikers are collected in system logs and for persistence.
See the monikers documentation for details.
The capabilities of child components cannot be directly accessed outside of the scope of their parent; they are fully encapsulated.
Children remain forever dependent upon their parent; they cannot be reparented and they cannot outlive their parent. When a parent is destroyed so are all of its children.
This model resembles composition{:.external} in object-oriented programming languages.
A realm is a subtree of component instances formed by hierarchical composition. Each realm is rooted by a component instance and includes all of that instance's children and their descendants.
Realms are important encapsulation boundaries in the component topology. The root of each realm receives certain privileges to influence the behavior of components, such as:
See the realms documentation for more information.
The capability routing graph describes how components gain access to use capabilities exposed and offered by other components in the component topology.
See the capability routing documentation for more information.