Articulo de referencia

Automatización OLE

En la programación de aplicaciones de Microsoft Windows , OLE Automation (posteriormente renombrado simplemente como Automation [ 1 ] [ 2 ] ) es un mecanismo de comunicación ent...

En la programación de aplicaciones de Microsoft Windows , OLE Automation (posteriormente renombrado simplemente como Automation [ 1 ] [ 2 ] ) es un mecanismo de comunicación entre procesos creado por Microsoft . Se basa en un subconjunto de Component Object Model (COM) que fue diseñado para su uso por lenguajes de scripting —originalmente Visual Basic— pero que ahora utilizan varios lenguajes en Windows. Todos los objetos de automatización deben 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 en) objetos de automatización compartidos que son exportados por otras aplicaciones. Reemplaza a Dynamic Data Exchange (DDE), un mecanismo anterior 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".

Contrariamente a lo que sugiere su nombre, los objetos de automatización no necesariamente utilizan Microsoft OLE , aunque algunos pueden usarse en entornos OLE. La confusión tiene su origen en la definición anterior de OLE de Microsoft, que antes era prácticamente sinónimo de COM.

Ventajas y limitaciones

Para garantizar la interoperabilidad, las interfaces de automatización están limitadas a usar 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 procesar.

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

Uso

La automatización se diseñó teniendo en cuenta la facilidad de la programación mediante scripts, por lo que los controladores suelen proporcionar lenguajes como Visual Basic para Aplicaciones a los usuarios finales, lo que les permite controlar los objetos de automatización mediante scripts. Los objetos de automatización suelen escribirse en lenguajes convencionales como C++ [ 7 ] , donde se pueden usar atributos de C++ para simplificar el desarrollo [ 8 ] . Lenguajes como Visual Basic y Borland Delphi también proporcionan una sintaxis conveniente para la automatización que oculta la complejidad de la implementación subyacente.

Bibliotecas de tipos

Para automatizar una aplicación, el desarrollador de un controlador de automatización debe conocer el modelo de objetos que utiliza la aplicación de destino que exporta 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 "difícil a imposible". [ 10 ] Debido a estas complicaciones, los componentes de automatización suelen proporcionarse 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 interfaz de Microsoft . Las bibliotecas de tipos se pueden ver utilizando varias herramientas, como el Visor de objetos OLE/COM de Microsoft ( oleview.exeparte del SDK de la plataforma 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 código de patrón proxy / stub para la interoperabilidad 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 Automation usando tanto enlace temprano (con información sobre interfaces extraída de una biblioteca de tipos) como enlace tardío (a través de IDispatch, mapeado a la API de reflexión de .NET), con el puente .NET a COM integrado 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 un código fuente C++ para una DLL de interfaz nativa de Java ) a partir de bibliotecas de tipos. Estas soluciones solo funcionan en Windows. Otra biblioteca basada en Java, j-Interop [ 14 ] , que permite la interoperabilidad con componentes COM sin JNI , usando el protocolo de cable 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 .

Soporte de idiomas

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

Véase también

Referencias

  1. Microsoft Corporation (3 de agosto de 2021). "Automatización (MFC)" . MSDN .
  2. KruJ.; Wingo, Scott; Shepherd, 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 del original el 15 de agosto de 2017. Consultado el 20 de julio de 2006 . McComb describe cómo usar la automatización OLE en lugar de DDE para controlar WordPerfect.
  4. Microsoft MSDN: atributo oleautomation
  5. Microsoft MSDN: Tipos compatibles con la automatización
  6. Microsoft MSDN: Detalles de serialización (COM) Biblioteca de tipos Adiciones de la comunidad de serialización
  7. Chris Oakley. "Automatización OLE para programadores de C++" .
  8. Revista MSDN: Atributos de C++: Simplifica la programación COM con la nueva función de Visual Studio .NET.
  9. 1 2 Yehuda Shiran y Tomer Shiran. "Automatización OLE en JavaScript" . WebReference . a pesar del título, el artículo trata sobre JScript en lugar de JavaScript.
  10. Bruce Armstrong (16 de enero de 2006). "OLE : Ampliando las capacidades de PowerBuilder (Parte 2)" . PowerBuilder Developers' Journal . 12 (11). Archivado del original el 19 de febrero de 2008. Recuperado el 21 de julio de 2006 .
  11. 1 2 Appleman, Dan (2001). "Capítulo 15: Interoperabilidad COM y acceso a la API de Win32". Migrando a VB.NET: Estrategias, conceptos y código . Apress . ISBN 978-1-893115-97-2.
  12. "El Proyecto JACOB" . 17 de octubre de 2004.
  13. "jSegue" . 14-12-2005.
  14. "j-Interop Interoperabilidad Java COM desde cualquier plataforma" . Archivado del original el 1 de febrero de 2009. Consultado el 20 de diciembre de 2013 .
  15. "Cómo encontrar y usar la documentación del modelo de objetos de Office" . Base de conocimientos . Microsoft Corporation.
  16. "Compatibilidad con COM del compilador" . MSDN . Microsoft. 3 de agosto de 2021.
  17. "Automatización OLE usando Delphi" . About.com . Archivado del original el 9 de noviembre de 2005. Consultado el 26 de julio de 2006 .
  18. "actxserver - Documentación de MATLAB" .
  19. "Open Object Rexx" . Archivado del original el 7 de febrero de 2005. Consultado el 20 de marzo de 2009 .
  20. Jan Dubois (verano de 1998). "Win32::OLE" . The Perl Journal . 3 (2).
  21. The PHP Group (25/07/2006). "PHP: COM y .Net (Windows)" .
  22. Mark Hammond (20 de enero de 2018). "Python para extensiones de Windows" .
  23. Sourceforge (17 de febrero de 2014). "Paquete Python Comtypes" .
  24. Programadores de Tcl. "OLE desde la perspectiva de Tcl" .
  25. Stan Littlefield. "TUTORIAL DE OLE: PROGRAMACIÓN OLE EN WINBATCH" .

Lecturas adicionales

  • Microsoft Corporation (diciembre de 1993). OLE 2 Programmer's Reference: Creating Programmable Applications with OLE Automation v. 2. Programmer's Reference Library. Microsoft Press . ISBN 978-1-55615-629-8.
  • Kraig Brockschmidt (1995). Dentro de OLE . Prensa de Microsoft .
  • Microsoft Corporation (1996). OLE Automation Programmer's Reference . Programmer's Reference Library. Microsoft Press . ISBN 978-1-55615-851-3.
  • Microsoft Corporation (1999). Referencia del lenguaje Visual Basic para Aplicaciones de Microsoft Office 2000. Microsoft Press . ISBN 978-1-57231-955-4. Documentación impresa completa del modelo de objetos de Microsoft Office
  • Automatización OLE. Documento general sobre la introducción y los problemas de la implementación de OLE.
  • " VOLE - Un controlador COM/Automatización C++ eficiente " — una biblioteca de controladores COM Automation C++ de código abierto e independiente del compilador, para usar cuando se necesita controlar IDispatch directamente. VOLE es muy robusto, encapsula completamente todos los aspectos de "bajo nivel" de IDispatch y es muy flexible, ya que acepta y devuelve tipos C++ estándar.