Qué son COM, ActiveX y OCX - Diferencias y relación explicadas

· Actualizado el: · · COM, ActiveX, OCX, OLE, Desarrollo en Windows, Tecnología heredada

Los tres términos COM, ActiveX y OCX suelen aparecer juntos en los proyectos legados de Windows.

  • El proveedor envía un archivo .ocx
  • En una pantalla de Access o VB6 aparece un componente misterioso
  • Justo después de que le digan «esto es COM», le dicen «ah, es ActiveX»
  • Y a continuación llegan de golpe palabras como regsvr32, 32 bits / 64 bits y modo IE

Cuando la conversación toma este rumbo, suele dejar de entenderse bien, porque los términos son parecidos y, además, se solapan mucho históricamente. Dicho de otro modo, si logra entenderlos por separado, la investigación, la migración y la capacidad de explicarlos cambian bastante.

En este artículo ordenamos qué es COM, qué es ActiveX y qué es OCX siguiendo una secuencia que permite ver sus diferencias y su relación. En particular, dejamos claro cuál es la base, cuál es el componente y cuál es el archivo.

Índice

  1. Primero, la conclusión (en una frase)
  2. Qué entendemos aquí por COM / ActiveX / OCX
  3. Primero, una vista general
    • 3.1. Diagrama de relación
    • 3.2. Resumen mínimo de términos
  4. Qué es COM
    • 4.1. En una frase
    • 4.2. Qué es importante en COM
    • 4.3. Notas de una línea sobre los términos
  5. Qué es ActiveX
    • 5.1. En una frase
    • 5.2. ActiveX no es exclusivo del navegador
  6. Qué es OCX
    • 6.1. En una frase
    • 6.2. En qué se diferencia de .dll
  7. Diferencias en una tabla
  8. Dónde se ha usado
  9. Por qué es fácil confundirlos
  10. Cómo abordarlo hoy en la práctica
  11. Errores comunes
  12. Puntos de verificación al investigar
  13. Resumen
  14. Referencias

1. Primero, la conclusión (en una frase)

Dicho de forma directa pero útil, es así:

  • COM es la base. Es el contrato binario mediante el cual los componentes se comunican entre sí en Windows
  • ActiveX es el contexto de componentes basado en COM. Suele aparecer especialmente como controles que se incrustan en un host
  • OCX es el archivo de implementación que se ve habitualmente en los controles ActiveX. Se encuentra como extensión de archivo
  • Es decir, resulta más claro entenderlo aproximadamente como COM = mecanismo, ActiveX = contexto de componente, OCX = archivo
  • La idea de que ActiveX es aquello peligroso de los navegadores antiguos es medio correcta y medio incompleta. ActiveX no es exclusivo del navegador
  • Con frecuencia se habla de OCX = ActiveX como si fueran casi sinónimos, pero, en sentido estricto, eso mezcla un concepto con una extensión de archivo
  • No es una tecnología que hoy se elija como protagonista para un desarrollo nuevo, pero todavía se encuentra en aplicaciones Windows existentes, en Office, en Access, en SDK de dispositivos y en aplicaciones web internas

Todo empieza por aprender a pensar estos tres elementos por separado.

  1. ¿Se trata de un asunto de COM?
  2. ¿Se trata de un asunto de un control ActiveX?
  3. ¿O simplemente lo llaman así porque ven un archivo .ocx?

Una vez que esto queda claro, gran parte de la niebla se disipa.

2. Qué entendemos aquí por COM / ActiveX / OCX

En la práctica, estos tres términos suelen convivir de forma bastante imprecisa. Por eso, en este artículo fijamos primero su significado.

  • COM: el propio modelo de componentes de Windows. La base de las interfaces, los GUID, el registro y las llamadas
  • ActiveX: los controles incrustables construidos sobre COM, o el contexto de su uso. En la práctica suele referirse especialmente al control ActiveX
  • OCX: la extensión de archivo que se ve habitualmente en la implementación de un control ActiveX. .ocx

Como aclaración adicional, históricamente hubo una época en la que la palabra ActiveX se usaba con un alcance algo más amplio. Sin embargo, en la práctica actual, la mayoría de los puntos que generan dudas cuando se dice ActiveX giran en torno a control, incrustación, host, navegador y registro.

Por eso, en este artículo también avanzamos partiendo básicamente de que ActiveX = un asunto centrado en el control ActiveX.

3. Primero, una vista general

3.1. Diagrama de relación

Lo más rápido es ver primero el panorama completo en una sola imagen. Si en su entorno el diagrama no se muestra, justo debajo hay una lista con el mismo contenido; puede leer esa en su lugar.

Diagrama de la relación entre COM, ActiveX y OCXMuestra cómo COM sirve de base para OLE/Automation, que da paso al contexto de ActiveX, a los controles ActiveX y al archivo OCX que suele materializar su implementación, con hosts como IE, Access, VB6, MFC y WinForms cargando el control.COMBase del contrato binarioOLE / AutomationMecanismo de incrustación y automatizaciónActiveXContexto de controles basado en COMControl ActiveXOCX (.ocx)Forma habitual del archivo de implementaciónHost / contenedorIE / Access / VB6 / MFC / WinForms

Lo importante aquí es que COM y ActiveX no son la misma cosa.

  • COM es la base
  • OLE / Automation es el mecanismo para la incrustación y la automatización
  • ActiveX aparece como el contexto de los controles que se usan sobre esa base
  • OCX es el archivo que se ve habitualmente en la implementación de esos controles

Por eso, si le preguntan ¿ActiveX es lo mismo que COM?, la respuesta es que la base es COM, pero ActiveX no es COM en sí mismo.

3.2. Resumen mínimo de términos

Palabra Comprensión inicial
COM Mecanismo, contrato, base
ActiveX Contexto de componentes incrustables basados en COM
Control ActiveX El componente en sí que se carga en el host
OCX Extensión de archivo habitual en los controles ActiveX
OLE / Automation Mecanismo de incrustación, automatización y vinculación

Si quiere recordarlo de la forma más breve, con esto basta.

  • COM es el mecanismo
  • ActiveX es el contexto del componente
  • OCX es el archivo

4. Qué es COM

4.1. En una frase

COM son las siglas de Component Object Model, y es el contrato binario mediante el cual los componentes se comunican entre sí en Windows.

Aquí, «contrato binario» se refiere a una interfaz cuyo compromiso se mantiene incluso ya compilada, independientemente de las particularidades del código fuente o de las especificaciones del lenguaje. Gracias a este contrato es posible utilizar, desde otro lenguaje o desde otra aplicación, un componente creado en C++.

Dicho en términos prácticos, COM no es tanto «una forma cómoda de distribuir una biblioteca» como un mecanismo que oculta la implementación y conecta los componentes únicamente a través del contrato.

Por ejemplo, esto es representativo de COM (el significado de cada término se resume en una línea en el apartado 4.3).

  • Conteo de referencias mediante IUnknown
  • Búsqueda de interfaces mediante QueryInterface
  • Identificación basada en GUID como IID o CLSID
  • Uso en proceso (in-process) mediante DLL
  • Uso fuera de proceso (out-of-process) mediante EXE

En resumen, COM es la base de la cultura de componentización de Windows.

4.2. Qué es importante en COM

Si solo quiere quedarse con lo básico, en COM lo importante es lo siguiente.

  • Centrado en la interfaz
    • Antes que la implementación, se decide qué se va a exponer
  • Identificación mediante GUID
    • Identifica de forma única a las clases y las interfaces
  • Separación entre el host y la implementación
    • Quien realiza la llamada no necesita conocer la implementación interna
  • Puede atravesar procesos
    • Se puede usar no solo dentro del mismo proceso, sino también como componente de otro proceso

Estos puntos son la razón por la que COM no se queda en una simple tecnología antigua. Desde una época bastante temprana, ya contaba con un diseño sólido de reutilización basada en contratos.

4.3. Notas de una línea sobre los términos

Cuando se habla de COM, los siguientes términos aparecen sin más explicación. Aquí, como puerta de entrada al concepto, los repasamos solo en una línea cada uno. Si quiere profundizar en lo interesante de su diseño, consulte Qué es COM: por qué el diseño de COM en Windows sigue siendo elegante.

Término Significado en una línea
Interfaz Es la lista de funciones con la que un componente promete «esto se puede llamar». Está separada de la implementación
IUnknown Es la interfaz base de todas las interfaces COM. Solo tiene tres métodos: QueryInterface, AddRef y Release
QueryInterface Es el método que pregunta a un componente «¿también tienes esta interfaz?». Si la tiene, devuelve su puntero
Conteo de referencias Es un contador que cuenta el número de usuarios. Aumenta con AddRef, disminuye con Release, y el componente se libera en el momento en que llega a 0
GUID Son las siglas de Globally Unique Identifier: un identificador de 128 bits escrito con el formato {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}. Se usa para evitar colisiones de nombres
CLSID Son las siglas de Class ID: un GUID que indica «de qué componente (clase) se trata». El registro también se consulta con este valor
IID Son las siglas de Interface ID: un GUID que indica «de qué interfaz se trata»
ProgID Es un alias legible para personas asignado a un CLSID. Es una cadena como Excel.Application, que se usa, por ejemplo desde scripts, para referirse a un componente
Type Library Son los datos que reúnen la información de tipos de las interfaces y los métodos que expone un componente. VB6 o .NET los leen al hacer referencia a un componente
Apartment (STA / MTA) Es la convención de subprocesos de COM. STA establece que «ese componente solo se llama desde un único subproceso», mientras que MTA permite «llamarlo simultáneamente desde varios subprocesos»; los componentes de UI se sitúan casi siempre en el lado STA

Este artículo llega hasta la organización de conceptos, así que no entramos en el detalle de cada elemento. Cuando necesite abordar cuestiones de implementación, usar directamente los términos de esta tabla como palabras de búsqueda facilita encontrar el punto de partida adecuado.

5. Qué es ActiveX

5.1. En una frase

Lo más claro es entender ActiveX como un componente de software reutilizable construido sobre COM, en particular como un control que se usa incrustado en un host o contenedor.

En la práctica, cuando se dice ActiveX, con bastante probabilidad se está hablando de un control ActiveX. Corresponden a esta categoría, por ejemplo, botones, cuadrículas, gráficos, calendarios, visores o componentes de integración con dispositivos.

Es difícil equivocarse si entiende ActiveX no como «una gran tecnología imponente que existe por sí sola», sino como un componente que funciona incrustado dentro del host de otra cosa.

5.2. ActiveX no es exclusivo del navegador

La impresión de que «ActiveX es aquello de Internet Explorer» es bastante fuerte. No es un error, pero no es todo.

Veamos algunos lugares donde se han usado los controles ActiveX.

  • Formularios de Access
  • Aplicaciones VB6 (Visual Basic 6.0)
  • Contenedores de MFC (biblioteca Microsoft Foundation Class)
  • El entorno de Office / VBA
  • Uso de envoltorios COM desde WinForms
  • Internet Explorer y sus contextos de operación en modo de compatibilidad

Es decir, ActiveX no es una tecnología exclusiva del navegador, sino una tecnología de componentes que también se ha usado durante mucho tiempo en el lado de las aplicaciones Windows.

Si esto no queda claro, se termina viendo como cosas distintas el ActiveX que se encuentra en una aplicación web interna y el ActiveX incrustado en una pantalla de Access. En realidad, ambos son parientes bastante cercanos de COM.

6. Qué es OCX

6.1. En una frase

OCX es la extensión de archivo que se usa habitualmente en la implementación de un control ActiveX. Si en un entorno Windows encuentra un archivo .ocx, puede empezar sospechando que se trata de un componente COM del tipo control incrustable.

Los contextos en los que suele aparecer son, más o menos, estos.

  • Material distribuido en el SDK de un proveedor
  • Proyectos antiguos de VB6, Access o MFC
  • Archivo sujeto a registro incluido en un instalador
  • Componente que requiere regsvr32

Conviene tener presente que OCX es una forma de archivo, no un concepto en sí mismo. Así que, si tuviera que responder de forma directa a ¿qué es OCX?, sería: el archivo con el que se suele encontrar la materialización de un control ActiveX.

6.2. En qué se diferencia de .dll

Este es otro punto donde es fácil confundirse.

  • .ocx sugiere con bastante fuerza que se trata de un control ActiveX
  • .dll puede ser una biblioteca común, puede ser un servidor COM, o puede ser una DLL de dependencia relacionada con ActiveX

Al ver .ocx casi se puede dar por hecho que el asunto está relacionado con ActiveX, pero con solo ver .dll todavía no se sabe de qué se trata.

Es habitual en la práctica encontrar algo como:

  • vendorcontrol.ocx
  • vendorhelper.dll
  • vendorcore.dll

una disposición como esta, en la que el protagonista es el OCX, y las DLL lo respaldan en un papel secundario.

Por eso, si le preguntan ¿OCX es un tipo de DLL?, la sensación es que se le parece, pero en el trabajo de investigación es más seguro distinguir sus roles.

7. Diferencias en una tabla

Palabra Qué es Términos habituales en la práctica Forma habitual
COM Modelo de componentes, base del contrato binario IUnknown, QueryInterface, CLSID, IID, Apartment .dll, .exe, información de registro
ActiveX Contexto de controles basado en COM Contenedor, incrustación, propiedad, evento Control ActiveX
Control ActiveX Componente reutilizable que efectivamente se coloca Cuadrícula, calendario, visor, integración con dispositivos .ocx, .dll
OCX Extensión de archivo habitual en los controles ActiveX regsvr32, cuadro de herramientas, 32 bits / 64 bits xxx.ocx
OLE / Automation Mecanismo de incrustación y automatización Integración con Office, página de propiedades, automatización Diversas funciones basadas en COM

Si quiere recordarlo a partir de esta tabla, empiece por esto.

  • COM es la obra de cimentación
  • ActiveX es la cultura de componentes que se levanta encima
  • OCX es el archivo que se recoge sobre el terreno

8. Dónde se ha usado

El recuerdo del navegador es tan fuerte que ActiveX y OCX tienden a verse como una vieja tecnología web. Sin embargo, en realidad se usaron de forma mucho más amplia.

En concreto, en lugares como estos.

  • Aplicaciones de escritorio
    • VB6
    • MFC / C++
    • Formularios de Access
    • El entorno de Office / VBA
  • Navegador / aplicaciones web internas
    • Visores incrustados en Internet Explorer
    • Componentes de firma
    • Componentes de transferencia de archivos
    • Componentes de integración con periféricos
  • Aplicaciones .NET existentes
    • Controles ActiveX existentes que se usan envueltos desde WinForms
    • Casos en los que se prolonga la vida de activos COM existentes como componentes de la interfaz de usuario

Aquí también, al final, volvemos a la idea de que ActiveX no es exclusivo de internet. Solo parece una tecnología web porque destacó de forma llamativa en IE; en la práctica, es más adecuado verlo como una tecnología de componentes incrustables de Windows.

9. Por qué es fácil confundirlos

9.1. Los niveles conceptuales son distintos, pero aparecen en la misma conversación

  • COM trata de la base
  • ActiveX trata del contexto del componente
  • OCX trata del archivo

Aunque de entrada se sitúan en niveles distintos, en la práctica aparecen a la vez en el mismo contexto de trabajo, así que es fácil que la conversación se vuelva confusa.

9.2. La palabra ActiveX es un poco más amplia

COM tiene un significado relativamente fijo. En cambio, ActiveX se usa con un alcance algo más amplio, tanto históricamente como en la práctica.

Según la persona, puede referirse a:

  • El control en sí
  • El archivo .ocx
  • Un componente antiguo que funciona en IE
  • Los componentes incrustables basados en COM en general

y el desajuste ya está servido. En ese momento, la conversación ya deja de entenderse bien.

9.3. En cuanto se ve .ocx, dan ganas de llamarlo todo ActiveX

Se entiende el impulso. Normalmente, con eso basta para entenderse.

Sin embargo, en un contexto de migración o investigación,

  • ¿Es un componente de UI?
  • ¿En qué host se ejecuta?
  • ¿Necesita registro?
  • ¿Cómo está la cuestión de 32 bits / 64 bits?
  • ¿Tiene dependencia del navegador?

si no se examinan estos puntos por separado, más adelante se tropieza de verdad.

10. Cómo abordarlo hoy en la práctica

Antes que nada, encontrar COM, ActiveX u OCX no significa que haya que rechazarlos de plano de inmediato. Ahora bien, tratarlos todos con el mismo criterio también es arriesgado.

La dependencia de ActiveX en el navegador

Es más seguro mirar este punto con prioridad y con un criterio más estricto.

  • No forma parte de la corriente principal del desarrollo de navegadores actual
  • En el contexto de la operación en modo de compatibilidad se habla del modo IE, pero es mejor verlo como un puente para la retrocompatibilidad
  • No es recomendable adoptarlo como tecnología de base para un desarrollo nuevo

La decisión también requiere tener en cuenta el eje temporal. La aplicación de escritorio IE11 ya se ha retirado, y el punto de apoyo que queda hoy es el modo IE de Microsoft Edge. Sobre ese modo IE, Microsoft ha anunciado la política de que lo mantendrá al menos hasta 2029 y, si decide retirarlo, lo anunciará con un año de antelación. Es decir, 2029 no es «el plazo hasta el que se puede dejar el asunto sin tocar», sino el plazo hasta el que hay que haber terminado de retirarlo, y conviene calcular hacia atrás a partir de esa fecha. El procedimiento para retirarlo está desarrollado por separado en Guía para dejar atrás los sistemas dependientes del modo IE.

En el lado web, es más realista pensar en el ActiveX en términos de «desde dónde retirarlo» que de «cómo prolongar su vida».

La dependencia de ActiveX / OCX en el escritorio

Aquí se puede juzgar con un enfoque algo más pragmático.

  • Funciona de forma estable dentro del host existente
  • El destino de distribución es limitado
  • Hay perspectivas de mantenimiento, ya sea por parte del proveedor o de la propia empresa
  • Se conocen las condiciones de registro, las DLL de dependencia y la arquitectura de bits

Si se dan estas condiciones, la decisión de mantenerlo es perfectamente razonable.

Por otro lado, si:

  • Quiere cargar un OCX de 32 bits directamente en el lado de 64 bits
  • Quiere migrar a .NET solo la parte periférica
  • El despliegue y el registro fallan cada vez
  • Aún queda dependencia del navegador

en esos casos, es más seguro distinguir entre mantener / envolver / reemplazar.

Lo que se plantea en la práctica actual no es si ActiveX es malo por el mero hecho de serlo, sino dónde se traza el límite. Resulta más manejable si se ve no tanto como una tecnología antigua, sino como la superficie de conexión de un sistema existente.

11. Errores comunes

Error 1: COM = ActiveX

No es así. COM es la base, y ActiveX es el contexto de los controles que se usan sobre ella.

Error 2: ActiveX = Internet Explorer

No es así. Es cierto que se hizo famoso a través de IE, pero ActiveX no es exclusivo del navegador.

Error 3: ActiveX = OCX

En la práctica se usan con un significado bastante cercano, pero en sentido estricto son distintos. ActiveX trata del contexto y del componente, mientras que OCX es la materialización con la que se topa como extensión de archivo.

Error 4: OCX no es más que un DLL

Dicho de forma imprecisa, se le parece, pero en la investigación conviene no ser impreciso. Solo con .dll no se puede deducir el rol, mientras que .ocx tiene un olor bastante claro a control.

Error 5: COM ya es una tecnología muerta

Al menos en el mundo de Windows, decirlo así es una simplificación excesiva. Solo parece haberse retirado un poco del primer plano; en el contexto del diseño y la interoperabilidad, sigue apareciendo hoy en día.

12. Puntos de verificación al investigar

Si se encuentra con COM, ActiveX u OCX, confirmar estos puntos en orden ayuda a no perderse.

  1. De qué componente se trata
    • ¿Es un control de UI?
    • ¿Es un visor?
    • ¿Es de integración con dispositivos?
    • ¿Es de integración con Office / Access?
  2. Dónde se ejecuta
    • ¿Access / VBA?
    • ¿VB6 / MFC?
    • ¿WinForms?
    • ¿IE / modo IE?
  3. Qué archivo e identificadores tiene
    • .ocx / .dll / .exe
    • ProgID
    • CLSID
    • Type Library
  4. Cómo son el registro y la distribución
    • ¿Necesita regsvr32?
    • ¿Tiene DLL de dependencia?
    • ¿Necesita permisos de administrador?
  5. Si coincide la arquitectura de bits
    • ¿32 bits?
    • ¿64 bits?
    • ¿Necesita ejecutarse en el mismo proceso?
  6. Cómo tratarlo en el futuro
    • ¿Se mantiene tal cual?
    • ¿Se envuelve creando un límite?
    • ¿Se reemplaza?

12.1. Qué herramientas usar para investigar

Los 6 puntos anteriores tratan de «qué mirar», así que aquí dejamos también «dónde abrir». Sin saber esto, aunque se tenga la lista de verificación, uno se queda parado en el primer paso.

Lo que se quiere averiguar Herramienta o lugar a consultar
Si ese .dll / .ocx es un servidor COM autorregistrable Con dumpbin /exports nombre_de_archivo, incluido en Visual Studio, si DllRegisterServer aparece exportada, es un servidor COM autorregistrable. regsvr32 llama precisamente a esta función
Cómo registrar y anular el registro Se registra con regsvr32 nombre_de_archivo y se anula con regsvr32 /u nombre_de_archivo. Requiere permisos de administrador. En Windows de 64 bits, %SystemRoot%\System32\regsvr32.exe es la versión de 64 bits y %SystemRoot%\SysWOW64\regsvr32.exe es la de 32 bits; se elige según la arquitectura del componente
Obtener el archivo real a partir del CLSID El valor predeterminado de HKEY_CLASSES_ROOT\CLSID\{CLSID}\InprocServer32 en el registro es la ruta del servidor en proceso (DLL / OCX). Para un componente fuera de proceso, consulte LocalServer32
Obtener el CLSID a partir del ProgID El valor predeterminado de HKEY_CLASSES_ROOT\nombre_de_ProgID\CLSID es el CLSID. A la inversa, también se puede consultar la subclave ProgID desde el lado del CLSID
Dónde se registra un componente de 32 bits En Windows de 64 bits, el registro correspondiente a 32 bits se guarda bajo HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID. Evite concluir que «no está registrado» mirando solo el lado de 64 bits
Listar las interfaces expuestas Si dispone del OLE/COM Object Viewer (oleview.exe) incluido en el Windows SDK, puede listar las clases registradas y las bibliotecas de tipos. Según la versión del SDK puede no estar incluido; si no lo tiene, siga la pista a través del registro y de la configuración de referencias del entorno de desarrollo
Arquitectura de bits del host En la pestaña «Detalles» del Administrador de tareas, haga clic con el botón derecho en los encabezados de columna y añada la columna «Plataforma» para ver si cada proceso es de 32 o de 64 bits. Un OCX de 32 bits no se puede cargar directamente en un proceso de 64 bits
El registro o la resolución de una DLL de dependencia está fallando Si sigue el acceso al registro y a los archivos con Process Monitor, puede ver qué clave o qué DLL se buscó sin éxito. El modo de uso está reunido en Guía práctica de Process Monitor (ProcMon)

Si se lanza a decir como hay ActiveX, lo reimplemento todo desde cero sin revisar estos puntos, caerá de lleno en trampas del pasado. Es más seguro completar primero la correspondencia entre los 6 puntos anteriores y las herramientas, y solo después decidir entre «mantener / envolver / reemplazar», como se explica en el capítulo 10.

13. Resumen

Si hay que expresar la diferencia entre COM, ActiveX y OCX de la forma más directa, pero útil en la práctica, es así:

  • COM es la base
  • ActiveX es el contexto de los componentes incrustables basados en COM
  • OCX es el archivo que se ve habitualmente en los controles ActiveX

Cuando se logra pensar estos tres elementos por separado, se ve con mucha más claridad:

  • ¿Es simplemente un .ocx?
  • ¿Es un problema de COM en su conjunto?
  • ¿Es un ActiveX con dependencia del navegador?
  • ¿Es un componente que se puede mantener en el escritorio?

Una tecnología legada no es difícil porque su nombre suene antiguo, sino que resulta enrevesada porque la base, el componente y el archivo aparecen en la misma conversación. Sin embargo, en cuanto se ve la estructura, se convierte en un problema sorprendentemente manejable.

14. Referencias

Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.

Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.

El artículo está directamente relacionado con los siguientes servicios.

Preguntas frecuentes

Preguntas habituales en las consultas sobre el tema del artículo.

¿Qué es un archivo OCX?
OCX es una extensión de archivo muy utilizada en la implementación de controles ActiveX. Si en un entorno Windows encuentra un archivo .ocx, puede sospechar en primer lugar que se trata de un componente COM del tipo control incrustable. Suele aparecer como material distribuido en un SDK de proveedor, en proyectos antiguos de VB6, Access o MFC, como archivo sujeto a registro dentro de un instalador, o como componente que requiere regsvr32. Conviene tener presente que OCX es una forma de archivo, no un concepto en sí mismo; eso ayuda a evitar confusiones.
¿En qué se diferencian COM y ActiveX?
COM es el contrato binario, es decir, la base, que permite que los componentes se comuniquen entre sí en Windows. ActiveX es un componente de software reutilizable construido sobre COM y, en la mayoría de los casos, se refiere al contexto de un control que se incrusta en un host o contenedor. Resulta más claro entenderlo como "COM = mecanismo, ActiveX = contexto de componente, OCX = archivo". La base de ActiveX es COM, pero ActiveX no es COM en sí mismo.
¿Es ActiveX una tecnología exclusiva de Internet Explorer?
No. Es cierto que se hizo famoso a través de IE, pero los controles ActiveX son una tecnología de componentes que también se ha usado durante mucho tiempo en aplicaciones Windows: formularios de Access, aplicaciones VB6, contenedores MFC, el entorno de Office / VBA, o el uso de envoltorios COM desde WinForms, entre otros. En la práctica resulta más adecuado verlo como una tecnología de componentes incrustables de Windows que como una tecnología exclusiva del navegador. Además, hoy en día conviene abordar la dependencia de ActiveX en el navegador pensando más en "desde dónde retirarla" que en "cómo prolongar su vida".
¿En qué se diferencian OCX y DLL?
.ocx es una extensión que sugiere con bastante fuerza que se trata de un control ActiveX, mientras que .dll puede ser una biblioteca común, un servidor COM o una DLL de dependencia relacionada con ActiveX. En la práctica es habitual encontrar un patrón en el que vendorcontrol.ocx tiene el papel principal y DLL como vendorhelper.dll lo respaldan en un papel secundario. Si le preguntan si OCX es un tipo de DLL, la sensación es que sí se le parece, pero en el trabajo de investigación o migración es más seguro distinguir sus roles.

Perfil del autor

Página de presentación del autor del artículo.

Go Komura

Representante de KomuraSoft LLC

Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.

Volver al blog