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
with the other ITC interfaces which it uses to accomplish
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.
A Service generally contains/instantiates one or more sub-components
) and coordinates their
life-cycles. The following class diagram illustrates a Service in relationship
to other "types" of active