Components with local and remote ports

One of the important issues in Component-Based Software Engineering (CBSE) [4] is the granularity of components. Fat components increase runtime performance, but their reuse is limited. On the other hand, thin components lead to significant communication overhead but are easy to reuse.

In Java, for example, there are two different component models: JavaBeans [2] for thin components and Enterprise JavaBeans (EJB) [5] for remote components. Since version 2.0 of EJB there is a local component concept: The whole bean is declared as local or remote by extending the EJBHome, EJBObject interfaces or the EJBLocalHome, EJBLocalObject interfaces respectively.

As with local EJBs, we use local CORBA components for thin components located in the same address space to improve performance and reusability. In contrast to local EJBs, however, we do not have to decide between a local or remote component because we always implement a local one. After writing the business logic we can leave some ports local while some other ports are made remotely accessible by adding a remote adapter. Note that the decision between using the local or remote adapters does not affect the implementation of the business logic; in other words we can scale the remote accessibility of a component port by port at deployment time.

With this approach we can use the same component model for a wide range of component implementations and programming languages.

2003-11-09