Assemblies of local and remote components

Local components in the CCM specification increase runtime performance, but they are not accessible from other processes. To overcome this problem, we build assemblies of local and remote components using the Session Facade pattern [6].

Figure B.3: Component assembly
\includegraphics[width=10cm,angle=0]{LCAC_ProcessModel}

Fig. B.3 shows an example of two assemblies running in different processes. The information about how to connect an assembly comes from an XML file called the assembly descriptor. At runtime there is an assembly object within the assembly that creates instances of components and component connections.

An assembly can be described as a directed graph where the nodes are component instances and the edges are receptacle to facet connections.

Figure B.4: Assembly instance graphs
\includegraphics[width=5cm,angle=0]{AssemblyGraph} \includegraphics[width=5cm,angle=0]{AssemblyGraph2}

If an instance of a session facade component is created, all connected local and remote components also have to be instantiated and connected. The assembly object creates an instance of the assembly subgraph as shown in Fig. B.4. In other words, a create() call on a session facade component home creates an assembly instance where only related components are connected as described in the assembly descriptor. The CORBA reference to the assembly instance is returned by the create() call to the client.

From the client's point of view, the session facade component is a fat remote one. In fact, this fat component is an assembly instance graph consisting of thin remote and local components that ensure easy reuse of business code.

2003-11-09