htm=articulo/comvent.htm ok articulo/comvent.htm Caracteristicas notables de COM.

Caracteristicas notables de COM.

Descripcion de las grandes ventajas que proporciona el Modelo de Objetos Componentes.


El Modelo de Objectos Componentes (COM) define un formato binario de componentes software. Al definir los componentes a nivel binario se independiza el modelo del lenguaje empleado para crear los objetos, cualquier lenguaje puede usar y/o crear objetos COM.

    Dada la similitud que hay entre los objetos COM y las clases de C++, este lenguaje resulta muy apropiado para crear objetos COM. Actualmente, Visual Basic puede crear tambien objetos COM, aunque no cualquier tipo de objeto. Tambien se pueden crear objetos COM con C y Delphi.

    Los objetos COM pueden ser usados por casi cualquier lenguaje, incluso lenguajes de script (interpretados) como VBScript y JScript pueden usar algunos tipos de objetos COM. Además, no es necesario que el objeto sea usado por el mismo lenguaje que se empleó al crearlo.


Los objetos COM exponen sus funcionalidades a través de interfaces. Las interfaces son conjuntos de funciones agrupadas con un propósito común. Los métodos miembro de cada interface son accesibles a través de una tabla de punteros denominada vtable.

    El mecanismo de interfaces tal como está implementado en COM facilita enormemente llevar el polimorfismo a su máxima expresión. Por un lado se definen los interfaces con los métodos necesarios para llevar a cabo un propósito concreto y, por otro lado, cada objeto puede implementar cualquier interface.

    El hecho de que un objeto COM pueda implementar cualquier número de interfaces, facilita tambien la creacion de nuevas versiones de interfaces. Un objeto puede implementar varios interfaces diseñados con el mismo propósito, manteniendo así la compatibilidad con versiones antiguas.

    Los objetos COM ocultan totalmente los detalles de implementación de los interfaces. La declaracion de interfaces es igual a la de las funciones virtuales puras de C++, la encapsulacion del código es total.


En COM la reutilizacion del código se lleva a cabo por medio de un mecanismo conocido como agregacion. Por medio de la agregacion, un objeto COM puede implementar interfaces delegando su implementacion real en otro objeto (agregado).

    El mecanismo de agregación tiene sus luces y sus sombras. Por un lado, la agregacion permite reutilizar código solo cuando es necesario y por otro lado exige del programador un poco más de exfuerzo que la herencia.

    Sin embargo, la reutilizacion del código en COM tiene la inmensa ventaja de que se hace a partir del objeto binario, no es preciso distribuir los fuentes ni emplear el mismo lenguaje de programacion. Por otro lado, tambien es posible construir objetos sin soporte para agregacion si lo que queremos es precisamente impedir que el código sea reutilizado.


Los objetos COM se manejan a través de referencias (punteros) a sus interfaces (más concretamente a través de una doble indirección). Todos los objetos COM implementan al menos el interface IUnknown.

    El interface IUnknown proporciona el mecanismo básico para, conocido un interface de un objeto, obtener una referencia a cualquier otro interface del mismo objeto. Todos los interfaces COM se derivan (heredan) de IUnknown, así los servicios de IUnknown están presentes en cualquier otro interface.

    El mismo interface IUnknown, proporciona el servicio básico que mantiene la cuenta del número de referencias (punteros) activas. Los objetos COM se autodestruyen cuando no queda ninguna referencia activa. Este mecanismo permite usar los recursos eficazmente sin necesidad de implementar un recolector de basura.


El sistema operativo proporciona servicios al Modelo de Objetos Componentes de modo que existe un registro de los objetos instalados en el sistema y el sistema operativo puede crear instancias de objetos.

    Las aplicaciones pueden solicitar al sistema operativo la creacion de un objeto (instancia). El sistema operativo puede crear instancias en el espacio local de direcciones de la misma aplicacion, puede crear el objeto en el espacio de direcciones de otra aplicación e incluso puede crear el objeto en otro ordenador de la red.

    La posibilidad de usar objetos remotos de un modo transparente es una de las caracteristicas más sobresalientes del Modelo de Objetos Componentes. Parece demasiado bueno para ser cierto, se pueden crear y usar objetos sin preocuparse del lugar físico de la red en donde se encuentre instalado el componente !


Las ventajas del Modelo de Objetos Componentes no acaban aquí, usando esta tecnología de objetos en el desarrollo de aplicaciones, resulta mucho más sencillo implementar caracteristicas avanzadas aunque estas no sean exclusivas de este modelo de objetos.

    El Modelo de Objetos Componentes puede parecer complicado en una primera aproximación, sin embargo vale la pena hacer el exfuerzo !


© info3@maicas.net