Communication Patterns

  • The set of communication patterns comprises the patterns described here.
  • It is important to strictly separate two different views onto a service and the underlying communication pattern:
    • the component external view:
      • this view is from outside a component where one just sees a service port
      • the semantic of the service port is fully specified by the underlying communication pattern and its communication objects
      • this is sufficient to completely understand the behavior of the service and to know how to contact to it
      • this view considers the component as black box. Its internals and the implementation of a service are not relevant since the communication patterns show a standardized port semantics
      • the outside view does not require insights into the communication mechanisms beneath the communication patterns
    • the component internal view:
      • this view is from inside a component where one just sees the user API of a communication pattern. The access methods of a communication pattern provided here are only visible from inside a component. They are not visible from outside and are not part of the outside visible service.
      • the internal API of communication patterns is composed out of a set of standard methods:
        • synchronous / user called
          in this mode, the user thread calls the interface method, blocks and returns only after the result is available or something else happened that aborted the synchronous call. Appropriate return codes give further hints. An example for this is the query method of the query client communication pattern.
        • asynchronous / user called
          again, the user thread calls the interface methods. However, the request and the response is split into two methods. An example for this are the queryRequest and the queryReceive (or queryReceiveWait) methods of the query client communication pattern.
        • synchronous / upcall
          in this case, the system thread is used to operate an upcall. For this a handler method within an appropriate handler object is used. An example for this is the handleSend method in the SendServerHandler for a send server communication pattern. This case is useful because send server does not provide a return value, that could be send back to the pattern.
        • asynchronous / upcall
          again, the system thread is used to operate an upcall. However each upcall is handled in two methods again. An example for this is the handleQuery method in the QueryServerHandler and the answer method in a query server communication pattern. Thus a query is divided into handling the incoming query request and answering to that request.