stringtranslate.com

Automatización OLE

En la programación de aplicaciones de Microsoft Windows , OLE Automation (posteriormente rebautizado simplemente como Automatización [1] [2] ) 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 que ahora lo utilizan 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 o llamar a métodos) objetos de automatización compartidos que son exportados por otras aplicaciones. Reemplaza al intercambio dinámico de datos (DDE), un mecanismo más antiguo para que las aplicaciones se controlen entre sí. [3] 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".

Al contrario de su nombre, los objetos de automatización no necesariamente usan Microsoft OLE , aunque algunos objetos de automatización se pueden usar en entornos OLE. La confusión tiene sus raíces en la definición anterior de OLE de Microsoft, que anteriormente era más o menos sinónimo de COM.

Ventajas y limitaciones

Para garantizar la interoperabilidad, las interfaces de automatización están limitadas a utilizar un subconjunto de todos los tipos COM. [4] [5] Específicamente, las interfaces de automatización deben usar SAFEARRAY en lugar de matrices COM sin formato.

Sin embargo, los servidores COM compatibles con la automatización pueden confiar en la implementación de clasificación OLE incorporada. [6] Esto evita la necesidad de proyectos proxy/stub adicionales para ordenar fuera de proceso.

Uso

La automatización se diseñó teniendo en cuenta la facilidad de las secuencias de comandos, 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 mediante secuencias de comandos. Los objetos de automatización a menudo se escriben en lenguajes convencionales como C++ , [7] donde los atributos de C++ se pueden usar para simplificar el desarrollo. [8] Los lenguajes como Visual Basic y Borland Delphi también proporcionan una sintaxis conveniente para la automatización que oculta la complejidad de los elementos subyacentes. implementación.

Bibliotecas de tipos

Para automatizar una aplicación, el desarrollador de un controlador de automatización debe conocer el modelo de objetos que emplea la aplicación de destino que exporta los objetos de activación. [9] Esto requiere que el desarrollador de la aplicación de destino documente públicamente su modelo de objetos. El desarrollo de controladores de automatización sin conocimiento del modelo de objetos de la aplicación de destino es "de difícil a imposible". [10] Debido a estas complicaciones, los componentes de automatización generalmente cuentan 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 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 del SDK de la plataforma 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, el SDK de .NET Framework incluye herramientas que pueden generar una DLL .NET proxy para acceder a objetos de automatización mediante el enlace temprano (con información sobre las interfaces extraídas de una biblioteca de tipos) y el enlace tardío (a través de IDispatch, asignado a .NET Reflection). API), con el puente integrado de .NET a COM llamado COM Interop . [11] Si bien Java carece de soporte COM integrado, conjuntos de herramientas como JACOB [12] y jSegue [13] 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 de Java ). de bibliotecas de tipos. Estas soluciones sólo funcionan en Windows. Otra biblioteca j-Interop [14] basada en Java que permite la interoperabilidad con componentes COM sin JNI , utilizando el protocolo de conexión DCOM (MSRPC) y también funciona en plataformas que no son Windows.

Microsoft ha documentado públicamente el modelo de objetos de todas las aplicaciones de Microsoft Office , [15] 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 .

Ayuda de idioma

La automatización está disponible para una variedad de idiomas, incluidos, entre otros:

Ver también

Referencias

  1. ^ Corporación Microsoft. "Automatización (MFC)". MSDN .
  2. ^ KruJ.; Wingo, Scott; Pastor, George (1998). "Capítulo 25: Automatización". Programación Microsoft Visual C++ 6.0 (5ª ed.). Redmond, WA: Microsoft Press . ISBN 978-1-57231-857-1.
  3. ^ Gordon McComb (1997). "Uso de la automatización OLE para controlar WordPerfect". Archivado desde el original el 15 de agosto de 2017 . Consultado el 20 de julio de 2006 .— McComb describe cómo utilizar OLE Automation en lugar de DDE para controlar WordPerfect
  4. ^ Microsoft MSDN: atributo de oleautomatización
  5. ^ Microsoft MSDN: tipos compatibles con la automatización
  6. ^ Microsoft MSDN: Detalles de clasificación (COM) Biblioteca de tipos Adiciones a la comunidad de clasificación
  7. ^ Chris Oakley. "Automatización OLE para programadores de C++".
  8. ^ Revista MSDN: Atributos de C++: haga que la programación COM sea muy sencilla con una nueva función en Visual Studio .NET
  9. ^ ab Yehuda Shiran y Tomer Shiran. "Automatización OLE en JavaScript". Referencia Web .— a pesar del título, el artículo trata sobre JScript en lugar de JavaScript
  10. ^ Bruce Armstrong (16 de enero de 2006). "OLE: Ampliación de las capacidades de PowerBuilder (Parte 2)". Diario de desarrolladores de PowerBuilder . 12 (11).
  11. ^ ab Appleman, Dan (2001). "Capítulo 15: Interoperabilidad COM y acceso a la API Win32". Pasar a VB.NET: estrategias, conceptos y código. Presione . ISBN 978-1-893115-97-2.
  12. ^ "El Proyecto JACOB". 2004-10-17.
  13. ^ "jSegue". 2005-12-14.
  14. ^ "Interoperabilidad j-Interop Java COM desde cualquier plataforma".
  15. ^ "Cómo buscar y utilizar la documentación del modelo de objetos de Office". Base de conocimientos . Corporación Microsoft.
  16. ^ "Soporte COM del compilador". MSDN . Microsoft.
  17. ^ "Automatización OLE con Delphi". Acerca de.com .
  18. ^ "Abrir objeto Rexx".
  19. ^ Jan Dubois (verano de 1998). "Win32::OLE". El diario Perl . 3 (2).
  20. ^ El grupo PHP (25 de julio de 2006). "PHP: COM y .Net (Windows)".
  21. ^ Mark Hammond. "Extensiones de Python para Windows".
  22. ^ Fuenteforja. "Paquete Comtypes Python".
  23. ^ Programadores de Tcl. "OLE desde la perspectiva de Tcl".
  24. ^ Stan Littlefield. "PROGRAMACIÓN OLE TUTORIAL WINBATCH".

Otras lecturas

enlaces externos