Overview of OpenCOM
OpenCOM is a lightweight, efficient and reflective component model that uses the core features of Microsoft COM to underpin its implementation; these include the binary level interoperability standard, Microsoft's IDL, COM's globally unique identifiers and the IUnknown interface. The higher-level features of COM, including distribution, persistence, transactions and security are not used. Notably, it was designed specifically for the implementation of an efficient version of the OpenORB reflective middleware, hence offers support for building high-performance reflection functionality. This first implementation is known as OpenCOM v1.0. Version 1 operates on devices running flavours of the Windows Operating system, and has been succesfully used on both desktops and mobile devices (namely in the OpenORB, Cortex and ReMMoC projects). However, we are now developing an operating system independent version of OpenCOM, known as OpenCOM v2.0, which we will be applied across diverse devices such as sensors and programmable routers.
The key concepts of OpenCOM are interfaces, receptacles and connections . Each component implements a set of custom interfaces and receptacles, as shown in the figure above. An interface expresses a unit of service provision, a receptacle describes a unit of service requirement and a connection is the binding between an interface and a receptacle of the same type. OpenCOM deploys a standard runtime substrate per address space that manages the creation and deletion of components, acts upon requests to connect/disconnect components and provides service interfaces for reflective operations. The runtime substrate dynamically maintains a system graph of the components currently in use. The explicit maintenance of dynamic dependencies between components provides the support for introspection and reconfiguration of component configurations.
The reflective interfaces of OpenCOM follow three of the meta-models proposed by OpenORB i.e. the Interface meta-model (IMetaInterface), the Architecture meta-model (IMetaArchitecture) and the Behaviour meta-model (IMetaInterception).
Revisions to OpenCOM v1
OpenCOM v1 was originally described in the paper: Clarke, M., Coulson, G., Blair, G. and Parlavantzas., N. "An Efficient Component Model for the Construction of Adaptive Middleware". In Proceedings of Middleware 2001. Heidelberg, Germany. November, 2001. However, we have since made a number of revisions to allow OpenCOM v1 to be applied to a greater range of application domains.
Previously, every component implemented five standard interfaces: two component management interfaces (ILifeCycle and IReceptacle) and three meta-interfaces (IMetaInterception, IMetaArchitecture and IMetaInterface). However, the implementation of each interface increases the memory footprint size of a component, and in many cases this functionality is unused. Therefore, OpenCOM v1 now requires only three interfaces to be implemented by each component, with the remaining reflective operations available from the runtime interfaces. The three base interfaces of a component are as follows:
- ILifeCycle provides operations called startup and shutdown that are called when a component is created or destroyed.
- IConnections(previously IReceptacles) offers methods to modify the interfaces connected to a component's receptacles. These are only called by the OpenCOM runtime component.
- IMetaInterface supports inspection of the types of interfaces and receptacles declared by the component. The meta information to support these operations is stored in the type library of each component.
In addition, the OpenCOM runtime provides a meta-interception (IMetaInterception) and a meta-architecture (IMetaArchitecture) interface. Interception enables pre and post methods to be associated with a given interface on a component; these are then invoked before or after every method invocation on that interface. The meta-architecture interface allows the programmer to obtain information about the underlying component architecture i.e. information about connections made to other components.
Finally, locking receptacles have been removed from OpenCOM in order to improve portability. Instead we advocate the use of component frameworks to manage all aspects of integrity maintenance.
OpenCOM availability
OpenCOM v1 is now available for the Windows 32 bit, Windows Compact Edition (CE) and Linux operating systems. The platform independent v2 will be available in the future.
** LATEST NEWS ** We have recently released a beta version of OpenCOM for Java platforms. Please follow the links in the side menu (Download & Documents) for further details and download information.

