In section 5.3 we have cast light on the advantages of a software component for data transfer. Components that are characterised by offering a service through a clean interface[PS96], allow to the smoothing out of differences that exist on lower levels. A multilayer architecture based on components has however the disadvantage that it causes an unpredictable system performance if the components´ behaviour is not known[JS97]. As an effective remedy to the problem of changing operational behaviour when replacing components we propose to give performance descriptions for each component. This does not only help to come to a more transparent system architecture, but also assists in finding lines of attack for optimisations. Components encapsulate a single functionality. Thus they allow the component designer to provide highly efficient solutions for performing a task without interfering with other system components. The boundaries are sharp and clearly defined. If a performance description of each component in the system can be given, bottlenecks can be localised more easily. Neither the service that is offered by the component changes, nor the way it is used if an optimised component is provided instead of the original one. Contrary to the assumption that a multilayered model leads to more overhead than a flat design[HvR96], we had to learn, that the layered design is not at all related to the efficiency of a system. As examples we give two approaches for an interprocess communication component as it can be used for a distributed object invocation toolkit. Such component offers the service of byte stream oriented communication, regardless of the communication mechanism on which it is based. For prototyping and development the simplest usable technology can be used. As evaluations in sections 4.3 and 5.4 have shown, performance of distributed objects middleware can vary when using different communication means. The communication middleware shall be capable of using the data transfer layer that provides a good performance for the given use case. The choice might be a different one for performing object invocations between two different physical machines or between two processes on the same machine. We outline two examples that demonstrate the advantages of component based software engineering when applied to systems with high performance requirements.