Service Idiom

Intent

The purpose of a Service is to provide a kind of top level life-cycle management entity for a sub-system that operates within a single thread. The sub-system implements one or more ITC interfaces, whose implementations are related and their interactions coordinated. A Service may contain or make use of one or more Parts, which it uses to implement one or more sections of the sub-system. A Service may also make use of Transactions to communicate with the other ITC interfaces which it uses to accomplish its mission.

Service Context

A Service tends to be rather application specific, although the use of the Symbiont pattern can make it a bit more system independent under some circumstances.

In many ways, a Service is very similar to a Part. The distinguishing feature is in their life-cycle control. A Service implements an ITC inteface that its context uses to start (open) and optionally stop (close) its operation. A Part, however, is started and stopped at a procedural level by its context and does not require ITC since it is known to run in the same thread as its context.

Context

A Service generally contains/instantiates one or more sub-components (e.g. Part or Transaction ) and coordinates their life-cycles. The following class diagram illustrates a Service in relationship to other "types" of active components.
ITC Patterns and Idioms Diagram