En la programación de aplicaciones de Microsoft Windows, OLE Automation (que más tarde se denominó simplemente Automatización) es un mecanismo de comunicación entre procesos creado por Microsoft. Se basa en un subconjunto del Modelo de objetos componentes (COM) que estaba destinado a ser utilizado por lenguajes de secuencias de comandos, originalmente Visual Basic, pero ahora es utilizado por varios lenguajes en Windows. Todos los objetos de automatización son necesarios para implementar la interfaz IDispatch. Proporciona una infraestructura mediante la cual las aplicaciones llamadas controladores de automatización pueden acceder y manipular (es decir, establecer propiedades de o llamar a métodos) objetos de automatización compartidos que son exportados por otras aplicaciones. Reemplaza el intercambio dinámico de datos (DDE), un mecanismo más antiguo para que las aplicaciones se controlen entre sí. Al igual que con DDE, en OLE Automation el controlador de automatización es el "cliente" y la aplicación que exporta los objetos de automatización es el "servidor".
Contrariamente a su nombre, los objetos de automatización no necesariamente utilizan Microsoft OLE, aunque algunos objetos de automatización se pueden utilizar en entornos OLE. La confusión tiene sus raíces en la definición anterior de Microsoft de OLE, que anteriormente era más o menos un sinónimo de COM.
Para garantizar la interoperabilidad, las interfaces de automatización se limitan a utilizar un subconjunto de todos los tipos de COM. Específicamente, las interfaces de automatización deben usar SAFEARRAY en lugar de matrices COM sin procesar.
Sin embargo, los servidores COM compatibles con la automatización pueden confiar en la implementación de clasificación OLE incorporada. Esto evita la necesidad de proyectos proxy / stub adicionales para calcular fuera de proceso.
La automatización se diseñó teniendo en cuenta la facilidad de la creación de scripts, por lo que los controladores a menudo proporcionan lenguajes como Visual Basic para aplicaciones a los usuarios finales, lo que les permite controlar los objetos de automatización a través de scripts. Los objetos de automatización a menudo se escriben en lenguajes convencionales como C ++, donde los atributos de C ++ se pueden usar para simplificar el desarrollo.Los lenguajes como Visual Basic y Borland Delphi también proporcionan una sintaxis conveniente para Automatización que oculta la complejidad de la implementación subyacente.
Para automatizar una aplicación, el desarrollador de un controlador de automatización debe conocer el modelo de objeto que emplea la aplicación de destino que exporta los objetos de activación. Esto requiere que el desarrollador de la aplicación de destino documente públicamente su modelo de objeto. El desarrollo de controladores de automatización sin el conocimiento del modelo de objeto de la aplicación de destino es "difícil o imposible". Debido a estas complicaciones, los componentes de Automatización generalmente se proporcionan con bibliotecas de tipos, que contienen metadatos sobre clases, interfaces y otras características expuestas por una biblioteca de objetos. Las interfaces se describen en el lenguaje de definición de interfaces de Microsoft. Las bibliotecas de tipos se pueden ver utilizando varias herramientas, como el Visor de objetos OLE / COM de Microsoft ( oleview.exe
parte de la plataforma SDK de Microsoft ) o el Explorador de objetos en Visual Basic (hasta la versión 6) y Visual Studio.NET. Las bibliotecas de tipos se utilizan para generar patrones de proxy / código auxiliar para interoperar entre COM y otras plataformas, como Microsoft.NET y Java. Por ejemplo,.NET Framework SDK incluye herramientas que pueden generar una DLL.NET proxy para acceder a los objetos de Automation utilizando tanto el enlace temprano (con información sobre las interfaces extraídas de una biblioteca de tipos) como el enlace tardío (a través de IDispatch, mapeado a.NET Reflection API), con el puente integrado de.NET a COM llamado COM Interop. Si bien Java carece de soporte COM incorporado, conjuntos de herramientas como JACOB y jSegue pueden generar código fuente proxy (que consta de dos partes, un conjunto de clases Java y una fuente C ++ para una DLL de interfaz nativa Java ) a partir de bibliotecas de tipos. Estas soluciones solo funcionan en Windows. Otra biblioteca j-Interop basada en Java que permite la interoperabilidad con componentes COM sin JNI, utilizando el protocolo de cable DCOM (MSRPC) y también funciona en plataformas que no son de Windows.
Microsoft ha documentado públicamente el modelo de objetos de todas las aplicaciones en Microsoft Office, y algunos otros desarrolladores de software también han documentado los modelos de objetos de sus aplicaciones. Los modelos de objetos se presentan a los controladores de automatización como bibliotecas de tipos, con sus interfaces descritas en ODL.
La automatización está disponible para una variedad de idiomas, incluidos, entre otros: