¿Qué es COM (Modelo de objetos componentes) en pocas palabras? [closed]

4 minutos de lectura

Parece que los objetos COM son objetos de uso general que se rigen por el sistema operativo. Los objetos siguen una interfaz estricta y le permiten consultar los objetos para determinar la información. ¿Esto son los objetos COM?

avatar de usuario
Carl Seléborg

COM es un mecanismo que permite la reutilización de objetos (o más bien componentes), independientemente de los lenguajes utilizados por el programador que implementó el componente y el programador que lo usa, e independientemente de si el componente se implementó en el programa del cliente o en otro lugar en la máquina (o red).

En términos generales, cada componente COM proporciona una implementación de una o más interfaces. Esas interfaces se definen de manera independiente del idioma utilizando el Lenguaje de definición de interfaz (IDL). Como ejemplo, una de las interfaces fundamentales en COM, Desconocidose define así:

interface IUnknown
{
   virtual HRESULT QueryInterface(REFIID riid, void **ppvObject) = 0;
   virtual ULONG AddRef(void) = 0;
   virtual ULONG Release(void) = 0;
};

Esta pequeña interfaz es fundamental en COM, porque cada componente COM deber Impleméntalo. Define dos aspectos importantes de la maquinaria COM:

  • QueryInterface permite llamar al código para obtener una implementación para una interfaz conocida. En COM, los GUID hacen referencia a las interfaces (también conocidos como identificadores de interfaz, IID). Si un objeto implementa varias interfaces, así es como el código del cliente obtiene una referencia a cada una de esas interfaces. Actúa como una especie de operador de casting, por así decirlo.
  • AddRef() y Release() implementar el mecanismo de gestión de memoria para objetos COM. Como sugiere su nombre, el modelo más común es el mecanismo de conteo de referencias, donde una instancia se destruye después de que el último cliente haya publicado su referencia.

Todos los componentes COM se registran en el sistema al momento de la instalación. Si un programador quiere usar un determinado componente, necesita:

  • Asegúrese de que el componente esté instalado en una ubicación accesible. La mayor parte del tiempo está en el sistema de la aplicación en ejecución, pero COM+ también permite que los componentes existan en computadoras remotas.
  • Conozca el GUID del componente dado. Con este GUID, el cliente puede pedirle al sistema que cree una instancia del componente (en C, la función para hacer esto se llama CoCreateInstance()). Puede buscar en el registro bajo HKEY_CLASSES_ROOT\CLSID: cada GUID allí es (muy probablemente) un identificador para un componente o interfaz COM, y las entradas debajo de esa clave le dicen al sistema cómo debe instanciarse.

La maquinaria COM es extremadamente compleja. Por ejemplo, implementar o usar componentes COM en C requiere una enorme cantidad de trabajo, pero los lenguajes de alto nivel como Visual Basic han hecho mucho para facilitar la implementación y el uso de componentes COM. Sin embargo, los beneficios son muy reales. Hace posible escribir una aplicación, por ejemplo, en Visual Basic, pero seguir implementando los algoritmos críticos para el rendimiento en C o C++ como objetos COM, que se pueden usar directamente desde el código VB. El sistema se encarga clasificación argumentos de llamadas a métodos, pasándolos a través de subprocesos, procesos y conexiones de red según sea necesario para que el código del cliente tenga la impresión de usar un objeto normal.

Muchas partes fundamentales de Windows se basan en COM. El Explorador de Windows (el administrador de archivos), por ejemplo, es básicamente un caparazón vacío. Define un montón de interfaces COM para navegar y mostrar jerarquías de árboles, y todo el código que realmente muestra “Mi PC”, las unidades, las carpetas y los archivos es un conjunto de componentes COM que implementan esas interfaces.

Con la llegada de .NET, COM se está volviendo obsoleto lentamente.

  • ¿Fuente de la última línea?

    – Sábalo

    23 de agosto de 2019 a las 10:31

avatar de usuario
McDowell

COM es un mecanismo que se desarrolló para permitir que las personas distribuyan binarios que podrían reutilizarse incluso si la persona que llama estaba usando el compilador C ++ de otro proveedor o (en última instancia) un lenguaje completamente diferente.

Si desea una buena introducción a COM, lea COM esencial por caja don.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad