In the Nevron DOM, services outsource some nodes (and hence elements) context specific functionality. Nodes can store references to one or more services of certain type, which can be obtained by the first ancestor node, which implements the INServiceProvider interface.
The services themselves implement the INService interface, which defines the basic operations each service must support. A core implementation of this interface can be found in the NService class. In essence a service can operate in three states:
In order to facilitate the service management, the DOM provides the NServiceManager class, an instance of which is typically a member of the nodes, which implement the INServiceProvider interface.
Since services can be derived and nodes only have knowledge of the base type of service they require, service providers can override the base service implementation and adapt it for the specific context. In this way the services serve as a bridge between the node and the context in which it resides, because the node itself has no knowledge of the actual actions taken by the services - it only knows what it can do.
In order for nodes, which employ services to be able to reside in different contexts, it is important to design and implement nodes in such a way that they can operate in the context of no services at all.
Implemented in the DOM are two more specialized services, which are: