fine, customize the access to components, and man-
age numerous existing components ;
2. a service discovery and negotiation structure which
enables to support operations of either component
lookup according to structured properties, or dy-
namic customisation of component properties and
access rights.
2.1 Service definition
UML class diagram of figure 1 represents the role
played by a service to abstract and to adapt a com-
ponent subject in order to customize the access to its
resources. Thus, a “Service” is seen as a software en-
tity that encapsulates a component to keep only visi-
ble the elements necessary to its interconnection and
cooperation with other application components.
Subject
• Defines an object interface, which is specific to a
particular component.
Service
• Manages meta-information that keep possible dis-
covery, negotiation and access control to a compo-
nent;
• Dynamically controls the access to the component
it encapsulates;
• Has the capability to dynamically extract the API
of its component, in order to ensure the control
of a component method invocation or a component
event notification;
• Provides a new interface of the component it
adapts: (e.g., complementary functionalities re-
lated to negotiation and discovery);
• Is able to dynamically extract the adapted compo-
nent category and properties attributes in order to
build a profile enabling service discovery and com-
parison to other adapted components;
Category
• Enables components “Subject” to be categorised
thanks to application specific taxonomy (e.g., ob-
ject taxonomy, XML hierarchical taxonomy, etc.).
Profile
• Describes meta-information related to the com-
ponent “Subject” as an application specific set of
named-value attributes properties.
APIManager
• Stores information on the component “Subject” in
terms of methods “Method” and events ”Event”;
• Enables the access control to the previously nego-
tiated interface of the component “Subject”;
• Method and Event enable the component data, status,
and resources management through its primitives
invocation and events notification.
ServiceContainer
• Defines a repository of “Service” objects that is nec-
essary to their discovery, negotiation and access;
• Enables global processing to be applied to services
of the same category (e.g., mining, verification,
transformation, etc.);
• Gathers a view of “Service” objects according to
particular criteria.
ConcreteServiceContainer
• Defines a concrete “ServiceContainer” repository
(e.g., RequestedServiceContainer : gathering requested
services, ProvidedServiceContainer : gathering pro-
vided services, WrappedServiceContainer : gathering
already negotiated and bound services).
2.2 Service discovery and
negotiation
UML class diagram of figure 2 isolates operations re-
lated to components discovery (e.g., matching calcu-
lus between components and component neighbour-
hood calculus), and operations related to components
negotiation. These operations are dynamic and effi-
cient cooperation tools. On one hand, service defi-
nition and discovery aim to structure component ser-
vice containers and ”position” them relatively to each
other. On the other hand, service negotiation enables
to distinguish between discovered components and to
select those that propose most interesting cooperation
contract comparing to other neighbour components.
2.2.1 Service discovery
Locator
• Manages the localisation of the objects “Service”;
• Enables to discover realisations of the object “Sub-
ject” according to a given “LocationStrategy”;
• Depends on the object “Matcher” that ensures the
matching calculus necessary to every service local-
isation.
A PATTERN FOR INTERCONNECTING DISTRIBUTED COMPONENTS
431