You have a distributed and maybe heterogeneous system with indipendent cooperating components.


How can I let parts of an application cooperate, even when they exist/run in different runtime environments?

These environments might change over time…


The Broker pattern can be used to structure distributed software systems with decoupled elements that interact by remote service invocations. The broker is responsible for coordinating communication, such as forwarding requests, as well as for transmitting results and exceptions/errors.

Components interact with the broker via stubs and skeletons, that can be automatically generated.


  • Location Transparency
  • Changeability and extensibility of components
  • Portability of a Broker system, the network layer is hidden from clients and servers
  • Interoperability between different Broker systems
  • Reusability, new Clients can rely on existing servers
  • Isolation of services


  • Restricted efficiency
  • Lower fault tolerance, server and clients that don’t work properly will affect many other clients/servers
  • Testing and Debugging ist tedious over the entire system


CORBA (common object request broker architecture) is a well-known application of this pattern.

See for example the CORBA website.