11.05.2013 Views

La Cara Oculta de Delphi 6

La Cara Oculta de Delphi 6

La Cara Oculta de Delphi 6

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capítulo<br />

6<br />

Automatización OLE<br />

L<br />

A CHAPUZA MÁS ESPANTOSA DE LA PROGRAMACIÓN en Windows se <strong>de</strong>nomina<br />

Automatización OLE, y es una técnica que permite manejar métodos <strong>de</strong><br />

objetos mediante una interfaz <strong>de</strong> macros. ¿Su objetivo? Permitir que los lenguajes<br />

interpretados, a los que son tan adictos en Microsoft, puedan aprovechar una<br />

mínima parte <strong>de</strong> la potencia <strong>de</strong> COM. Veremos cómo esta técnica se amplia y mejora<br />

mediante el uso <strong>de</strong> interfaces duales. El plan <strong>de</strong> trabajo es sencillo: en la primera parte<br />

<strong>de</strong>l capítulo actuaremos cómo clientes, o como se dice en la jerga, controladores <strong>de</strong><br />

automatización. Y terminaremos <strong>de</strong>sarrollando servidores OLE.<br />

¿Por qué existe la Automatización OLE?<br />

<strong>La</strong> automatización OLE, OLE Automation en su idioma original, está basada en un tipo<br />

<strong>de</strong> interfaz pre<strong>de</strong>finido por COM, llamado IDispatch. Esta interfaz permite que sus<br />

clientes ejecuten macros complejas implementadas <strong>de</strong>ntro <strong>de</strong> objetos COM; <strong>de</strong> hecho,<br />

la automatización OLE sustituye al viejo mecanismo <strong>de</strong> ejecución <strong>de</strong> macros <strong>de</strong><br />

DDE. Pero, ¿no es obsoleto y peligroso recurrir a macros para el control <strong>de</strong> objetos?<br />

Por supuesto que sí: creo que a estas alturas a nadie se le ocurriría <strong>de</strong>fen<strong>de</strong>r la falta <strong>de</strong><br />

comprobación estática <strong>de</strong> tipos, excepto a los adictos a Visual Basic. Y fue principalmente<br />

por culpa <strong>de</strong> Visual Basic que Microsoft diseñó IDispatch. Cuando VB se<br />

actualizó para generar programas en 32 bits, Microsoft sustituyó el anterior mo<strong>de</strong>lo<br />

<strong>de</strong> componentes VBX por los recién estrenados controles OCX (todavía los publicistas<br />

no habían inventado la palabreja ActiveX), que se manejaban a través <strong>de</strong> la obligatoria<br />

interfaz IDispatch.<br />

En algún momento <strong>de</strong> su evolución, Visual Basic introdujo cambios que le permitieron<br />

trabajar directamente con las v-tables <strong>de</strong> COM... pero otros lenguajes recogieron<br />

el testigo y siguieron <strong>de</strong>pendiendo <strong>de</strong> IDispatch. En primer lugar, las mutaciones <strong>de</strong><br />

Visual Basic que utilizan las aplicaciones <strong>de</strong> Office. Pero también llegó VBScript,<br />

ampliamente utilizado para la creación <strong>de</strong> páginas ASP, y JScript, la versión <strong>de</strong> Java-<br />

Script <strong>de</strong> Microsoft. Todos estos son lenguajes interpretados, en los que sería <strong>de</strong>masiado<br />

complicado implementar el acceso directo a las interfaces v-tables <strong>de</strong> COM.<br />

He mencionado aplicaciones que actúan como clientes <strong>de</strong> automatización OLE;<br />

servidores que soportan esta forma <strong>de</strong> trabajo hay muchos. Están todas las aplicacio-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!