  Modularity and decontextualisation are core principles of a service-oriented
architecture. However, the principles are often lost when it comes to an
implementation of services, as a result of a rigidly defined service interface.
The interface, which defines a data format, is typically specific to a
particular context and its change entails significant redevelopment costs. This
paper focuses on a two-fold problem. On the one hand, the interface description
language must be flexible enough for maintaining service compatibility in a
variety of different contexts without modification of the service itself. On
the other hand, the composition of interfaces in a distributed environment must
be provably consistent. The existing approaches for checking compatibility of
service choreographies are either inflexible (WS-CDL and WSCI) or require
behaviour specification associated with each service, which is often impossible
to provide in practice.
  We present a novel approach for automatic interface configuration in
distributed stream-connected components operating as closed-source services
(i.e. the behavioural protocol is unknown). We introduce a Message Definition
Language (MDL), which can extend the existing interfaces description languages,
such as WSDL, with support of subtyping, inheritance and polymorphism. The MDL
supports configuration variables that link input and output interfaces of a
service and propagate requirements over an application graph. We present an
algorithm that solves the interface reconciliation problem using constraint
satisfaction that relies on Boolean satisfiability as a subproblem.
