microsoft descargar caracteristicas c++ com

c++ - descargar - ¿Qué es COM(Modelo de Objetos Componentes) en pocas palabras?



dcom descargar (3)

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. ¿Es esto lo que son los objetos COM?


Piénselo de esta manera: cuando apareció .NET inmediatamente pensé: "Wow ... esto es COM, pero no apesta".


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

Si desea una buena introducción a COM, lea Essential COM by Don Box .


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 utiliza, 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 una manera neutral en cuanto al idioma utilizando el Lenguaje de definición de interfaz (IDL) . Como ejemplo, una de las interfaces fundamentales en COM, IUnknown , se 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 debe implementarlo. Define dos aspectos importantes de la maquinaria COM:

  • QueryInterface permite que el código de llamada obtenga 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, si se quiere.
  • AddRef() y Release() implementan el mecanismo de administración de memoria para objetos COM. Como su nombre lo sugiere, 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 ha publicado su referencia a ella.

Todos los componentes COM se registran en el sistema después de la instalación. Si un programador desea usar un determinado componente, necesita:

  • Asegúrese de que el componente esté instalado en una ubicación accesible. La mayoría de las veces 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 solicitar 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 (probablemente) un identificador para un componente COM o interfaz, y las entradas debajo de esa clave le dicen al sistema cómo debe ser instanciado.

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 los componentes COM. Los beneficios son, sin embargo, muy reales. Hace posible escribir una aplicación en, digamos, Visual Basic, pero aún implementar 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 de ordenar los argumentos de llamada de método, 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. Windows Explorer (el administrador de archivos), por ejemplo, es básicamente un shell vacío. Define un conjunto de Interfaces COM para navegar y mostrar jerarquías de árbol, 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.