Modelo de objetos componentes


Component Object Model ( COM ) es un estándar de interfaz binaria para componentes de software presentado por Microsoft en 1993. Se utiliza para permitir la creación de objetos de comunicación entre procesos en una amplia gama de lenguajes de programación . COM es la base para varias otras tecnologías y marcos de Microsoft, incluidos OLE , OLE Automation , Browser Helper Object , ActiveX , COM+ , DCOM , el shell de Windows , DirectX , UMDF yTiempo de ejecución de Windows . La esencia de COM es una forma independiente del lenguaje de implementar objetos que se pueden usar en entornos diferentes de aquel en el que se crearon, incluso más allá de los límites de la máquina. Para componentes bien creados, COM permite la reutilización de objetos sin conocimiento de su implementación interna, ya que obliga a los implementadores de componentes a proporcionar interfaces bien definidas que están separadas de la implementación. Las diferentes semánticas de asignación de los idiomas se acomodan al hacer que los objetos sean responsables de su propia creación y destrucción a través del conteo de referencias . La conversión de tipos entre diferentes interfaces de un objeto se logra a través de laQueryInterfacemétodo. El método preferido de "herencia" dentro de COM es la creación de subobjetos a los que se delegan las "llamadas" de método.

COM es una tecnología de interfaz definida e implementada como estándar solo en Microsoft Windows y Core Foundation 1.3 de Apple y la interfaz de programación de aplicaciones (API) complementaria posterior. [1] Este último solo implementa un subconjunto de toda la interfaz COM. [2] Para algunas aplicaciones, COM ha sido reemplazado, al menos en cierta medida, por Microsoft .NET framework y soporte para servicios web a través de Windows Communication Foundation (WCF). Sin embargo, los objetos COM se pueden usar con todos los lenguajes .NET a través de .NET COM Interop . DCOM en red utiliza formatos propietarios binarios, mientras que WCF fomenta el uso de mensajería SOAP basada en XML . COM es muy similar a otras tecnologías de interfaz de software de componentes , como CORBA y Enterprise JavaBeans , aunque cada una tiene sus propias fortalezas y debilidades. A diferencia de C++, COM proporciona una interfaz binaria de aplicación (ABI) estable que no cambia entre las versiones del compilador. [3] Esto hace que las interfaces COM sean atractivas para las bibliotecas C++ orientadas a objetos que deben usar los clientes compilados con diferentes versiones del compilador.

Uno de los primeros métodos de comunicación entre procesos en Windows fue Dynamic Data Exchange (DDE), [4] introducido por primera vez en 1987, [5] que permitía enviar y recibir mensajes en las llamadas "conversaciones" entre aplicaciones. Antony Williams , que participó en la creación de la arquitectura COM, distribuyó más tarde dos documentos internos en Microsoft que abarcaban el concepto de componentes de software: Arquitectura de objetos: tratar con lo desconocido, o seguridad de tipos en una biblioteca de clases extensible dinámicamente en 1988 y Sobre la herencia: qué significa y cómo usarlo en 1990. Estos proporcionaron la base de muchas de las ideas detrás de COM.Object Linking and Embedding (OLE), el primer marco basado en objetos de Microsoft, se creó sobre DDE y se diseñó específicamente para documentos compuestos . Se introdujo con Word para Windows y Excel en 1991, y luego se incluyó con Windows, comenzando con la versión 3.1 en 1992. Un ejemplo de un documento compuesto es una hoja de cálculo incrustada en un documento de Word para Windows: a medida que se realizan cambios en la hoja de cálculo dentro de Excel, aparecen automáticamente dentro del documento de Word.