ASIGNATURA: HERRAMIENTAS WEB PARA LA INVESTIGACIÓN
RESUMEN
TRABAJO 3: (
ActiveX)
Autor: (Hernán José León Acosta)

 

 

En el desarrollo de software se ha intentado introducir elementos propios de la ingeniería a fin de aprovechar el esfuerzo que supone la construcción de sistemas informáticos. Una de las áreas en las que más se ha avanzado en este sentido es la que intenta convertir el proceso de construcción de programas en un proceso de conjunción de elementos ya existentes.

Este objetivo de crear software a base de combinación de elementos preexistentes se ha plasmado en la gestión de librerías de funciones y más recientemente en el uso de lenguajes de programación orientados a objetos . Estos sistemas intentan aprovechar al máximo los componentes reutilizables de una aplicación para ser utilizados por un gran número aplicaciones similares.

 

 

Los antecedentes

 

El origen de OLE (Object Linking and Embedding) está en el proyecto de un grupo de desarrollo de Microsoft que intentaba establecer un mecanismo para visualizar gráficos de MS-Graph dentro de Power Point. Cuando avanzaron en el desarrollo vieron que lo que estaban haciendo podía ser útil para más proyectos y propusieron crear un protocolo estándar para interconectar aplicaciones Windows. Hicieron una rápida presentación con la aplicación CardFile a Bill Gates, y OLE 1.0 se conviritió en el eje de la conexión entre aplicaciones en Windows.

 Partiendo desde el DDE (Dinamic Data Exchange), OLE 1.0 permitía visualizar un documento compuesto por documentos procedentes de distintos orígenes. Así podíamos tener un documento MS-Word que incluyera un gráfico en MS-Graph, una parte de una hoja de cálculo y una imagen de Corel Draw.

OLE 1.0 tenía grandes limitaciones, pero Microsoft no se detuvo ahí, y pensó que este sistema podía ser el eje de toda una estrategia de desarrollo y diseño de software de Windows. Así Bod Atkinson y Tony William con un gran grupo de desarrollo crearon OLE 2.0 y la especificación COM (Component Object Model), es decir el modelo de desarrollo orientado a componentes de Microsoft.

Cuando Microsoft presentó OLE 2.0 y COM a finales de 1993, ya anunciaba que esta sería la base para su estrategia de futuro. En ese momento fueron pocos los que vieron la importancia de este anuncio. Cuando en 1998 aparezca CAIRO, una versión de Windows NT totalmente orientada a objeto, se habrá cerrado un gran ciclo y dispondremos de un sistema operativo basado en OLE 2.0. COM y DCOM (Distributed COM).

 

 

 

 

 

 

 

Objetos OLE

 

OLE es un entorno unificado de servicios basados en objetos con la capacidad de personalizar esos servicios y de ampliar arbitrariamente la arquitectura a través de servicios personalizados, con la finalidad permitir una integración entre los componentes.

 

 OLE proporciona un estándar consistente que permite a los objetos, aplicaciones y componentes ActiveX, comunicarse entre sí con la finalidad de usar el código de los demás. Los objetos no necesitan conocer por anticipado en qué objetos se van a comunicar, ni lenguaje en que esta escrito.

 

Las aplicaciones ActiveX están conceptualmente divididas en:

Servidores, objetos que sus métodos y propiedades estén disponibles para los demás

Clientes, aplicaciones que usan objetos de servidores, métodos y propiedades.

Algunos tipos de servidores, por ejemplo controles ActiveX, pueden disparar eventos que pueden ser después respondidos por el código de un cliente.

 

 

La interfaz OLE

 

Los objetos OLE:

Deben aplicar una interfaz estándar.

Pueden tener tantas interfaces como desee su diseñador

Una interfaz determinada mostrará una "tabla de contenido", o índice alfabético, de las funciones que contiene y proporcionará un medio de ejecutar esas funciones.

 

 El examinador de objetos utiliza la interfaz expuesta de los objetos ActiveX para mostrar los miembros, propiedades, métodos y eventos, de los componentes o de la aplicación. Los programas de los clientes sólo necesitan utilizar la sintaxis familiar Object.Method y Object.Property para acceder a los miembros de servidor ActiveX.

 

Los eventos que pueden ser disparados por un objeto, como un control ActiveX, se muestran en el marco del controlador del evento en la ventana de código del cliente. El posible agregar código para responder a los eventos disparados por el componente ActiveX.

 

ActiveX, se puede ver como la evolución de OLE, de la siguiente forma:

·        OLE + Internet = ActiveX

·        Controles OLE + Internet = Controles ActiveX

·        Documentos OLE + Internet = Documentos ActiveX

·        Modelo de objeto OLE + Internet = Modelo de objetos ActiveX 

 

 

Definición del objeto ActiveX

 

ActiveX es un estándar desarrollado por Microsoft que permite la interacción de componentes de software en un ambiente de red independientemente del lenguaje en el cual fueron creados. se logra que los sitios Web tengan efectos multimedia, objetos interactivos y aplicaciones sofisticadas. El estándar ActiveX incluye los controles ActiveX, que son componentes de software que corren en páginas Web, y proveen funciones interactivas controlables por el usuario.

 

  Un objeto que cumpla con este modelo tiene las siguientes características:

·        Los ActiveX están compilados en código binario, por esto, puede estar escrito en cualquier lenguaje, y ofrecen un marco de reutilización de código, ya que son independientes del lenguaje.

·        El objeto está encapsulado en un archivo ejecutable o en una biblioteca de vinculo dinámico. 

·        El objeto contiene datos de dos tipos: datos de presentación, que se requieren para presentar la pantalla o para imprimir, y datos internos. Puede considerar los dos tipos de datos como propiedades que son privadas para el objeto.

·        El objeto contiene también funciones para manipular sus datos.

·        El objeto proporciona una interfaz estándar para que otros objetos se comuniquen con él.

·        El objeto participa en la disposición en formación, proceso de pasar argumentos de funciones y valores de retorno entre procesos y máquinas.

 

 

Que hace un objeto ActiveX

 

Espera sin hacer nada, hasta que es llamado como servidores, o llamando a otros objetos servidor como los clientes. En general, se espera que los objetos OLE acepten varios protocolos y proporcionen varios servicios.

 

 Los objetos OLE aceptan la Transferencia uniforme de datos (Uniform Data Transfer, UDT), que es un mecanismo para el manejo del intercambio de estructuras de datos con formato entre aplicaciones. Las transferencias UDT se realizan llevando información del puntero en lugar de los datos mismos, de forma que no es necesario leer en la memoria grandes cantidades de datos.

 

En el contexto de los documentos compuestos, se supone que los objetos OLE:

Se incrustan ellos mismos de forma adecuada dentro de un documento manejador y presentan sus datos en forma apropiada en la pantalla o en la impresora. 

Mantienen vínculos entre objetos incrustados, comparables al vínculo automático DDE, de forma que pueden ser actualizados automáticamente los datos.

 

 

Acceso a Archivos

 

Los controles ActiveX pueden acceder a archivos del ordenador cliente. Un control ActiveX podría guardar los resultados de una consulta a una base de datos en el disco duro, como fuente de futuras referencias.

 

 El acceso a archivos es una alternativa cómoda, pero también peligrosa. Para paliar este problema, existe una solución. Antes de cargar ningún control ActiveX, el navegador Web lo explora en busca de una secuencia encriptada de octetos. Esta secuencia, o firma digital, es creada en un proceso conocido como firma de código. Si encuentra esta secuencia el navegador podrá determinar quién escribió el código y quién lo distribuyó y, por lo tanto, conocerá la identidad del responsable. Cuando no detecta la secuencia, advierte al usuario que el control puede ser peligroso y le da la opción de no cargarlo.

 

 

Código heredado

 

 Los controles ActiveX, ofrecen un soporte muy completo para el código heredado. El proceso de conversión de programas existentes a controles ActiveX es bastante sencillo. Aparte del código heredado, se pueden recuperar controles heredados. Los controles OLE son totalmente compatibles con ActiveX. En consecuencia, será posible seguir perfeccionando el código de los programas con los últimos controles ActiveX.

 

La estructura del tag de inserción de objetos ActiveX, en la forma <OBJECT..> ....... </OBJECT>, es:

<OBJECT ID=......

CLASSID=...
CODEBASE=...
ALIGN=...
BORDER=...
WIDTH=...
HEIGht=...
...
<PARAM NAME=... VALUE=...>
...

</OBJECT>

 

donde:

  • ID: Un identificador único, que podremos especificar según nuestra conveniencia (no puede contener espacios en blanco), que servirá para referirnos a los parametros y acceder a los valores de propiedades, cuando trabajemos con código script, Java u otros.
  • CLASSID: Contiene la clave del control ActiveX que ha de registrarse en el ordenador cliente, al estilo de CLASSID="CLSID:D7053240-CE69-11CD-A777-00DD01143C57". Este código de valor es el que está en el registro de Windows. Utilizando RegEdit, puede elucidarlo buscando la clave de registro CLSID para el archivo OCX que contenga el control ActiveX. El uso Microsoft ActiveX Control Pad facilita enormemente la labor, ya que lo incluye de forma automática.
  • CODEBASE: Aquí podremos indicar, en forma de una cadena URL, en que lugar se encuentra el control ActiveX, caso de necesitar el cliente descargarlo en su ordenador. Si no se especifica nada, se supone se encuentra en el URL base del documento.
  • WIDTH y HEIGHT: Fija el ancho y le alto que ocupará el control ActiveX en la página html.
  • ALIGN: Fija el modo de alinear el control, en la página html.
  • BORDER: Fija el tipo de borde que aparecerá en el contorno del Control ActiveX
  • Parametros/Propiedades: Aqui se fijan las propiedades (properties) características del control ActiveX. Hemos de disponer de la documentación técnica del control para conocer los tipos de datos y posibles valores. Si utiliza ActiveX Control Pad, se le mostrará una ventana flotante para definir todos estos parámetros y se creará automáticamente la referencia con la sintaxis correcta. El formato general es <PARAM NAME=... VALUE=...>.

 

En este ejemplo, se utiliza el ActiveX Control Pad para insertar un control ActiveMovie y configurar alguno de sus parámetros de funcionamiento, el más importante de los cuales es FileName, que almacena la URL del fichero a reproducir, en este caso, un vídeo MPEG.

 

 

 

<OBJECT ID="ActiveMovie1" WIDTH=267 HEIGHT=273

CLASSID="CLSID:05589FA1-C356-11CE-BF01-00AA0055595A">

<PARAM NAME="_ExtentX" VALUE="7038">

<PARAM NAME="_ExtentY" VALUE="7223">

<PARAM NAME="MovieWindowSize" VALUE="2">

<PARAM NAME="MovieWindowWidth" VALUE="262">

<PARAM NAME="MovieWindowHeight" VALUE="192">

<PARAM NAME="AutoStart" VALUE="-1">

<PARAM NAME="AutoRewind" VALUE="0">

<PARAM NAME="Appearance" VALUE="0">

<PARAM NAME="FileName" VALUE="/videos/bikes.mpg">

</OBJECT>

 

 

APPLETS Y ACTIVEX

 

Java es un lenguaje de programación orientado a objetos e independiente de la plataforma donde se ejecute diseñado por Sun Microsystems. Java permite generar componentes de software denominados "Applets" Java que son ejecutados en "browsers" Web. Estos "Applets" permiten crear páginas Web con contenido activo.

 

 

COMPARACIÓN ENTRE "APPLETS" JAVA Y CONTROLES ACTIVEX

 

Los componentes software por definición no pueden sobrevivir por si solos, requieren cierta clase de contenedor en el cual ejecutarse. Los "Applets" Java hoy en día son soportados principalmente por solo una clase de contenedores: "browsers" Web. Los "browser" Netscape Navigator y Microsoft Internet Explorer actualmente soportan "applets" Java. Los controles ActiveX, en cambio, son soportados por toda clase de contenedores. Muchas organizaciones ofrecen controles ActiveX, la mayoría no relacionados con las creación de páginas Web activas. Aunque estos controles ActiveX son creados con otros ambientes en mente, muchos pueden ser cargados y ejecutados en un "browser" compatibles con ActiveX (CHAPPELL D, 1996).

 

El problema de la transportabilidad

 

Los controles ActiveX han sido concebidos para sistema operativo Microsoft Windows. Los controles ActiveX no funcionan bien en otras plataformas. Este problema se agrava más, por el hecho que también dependen del navegador. Con la excepción de Internet Explorer, los navegadores han de ingeniarse para admitir el manejo de ActiveX. Los "applets" Java son independientes de la plataforma, el mismo "applet" puede correr en cualquier sistema que soporte el ambiente Java.

 

 

Seguridad

 

Java y ActiveX tienen modelos de seguridad radicalmente diferentes. Los modelos de seguridad en la Web deben asegurar los siguientes dos aspectos:

1. Proteger a los usuarios contra código desarrollado deliberadamente para hacer daño. Hasta ahora, esta clase de código es raro.

2. Proteger a los usuarios de errores de programación accidentales que pudieran causar daño.

Existen tres enfoques posibles para la seguridad en componentes bajados de servidores Web:

1. Confiar en el servidor: Se puede confiar en que algunos servidores Web bien administrados, como los de una intranet corporativa segura, no repartirán componentes que contengan virus o hagan otra clase de daño al sistema en el cual son cargados y ejecutados.

2. Limitar la capacidad de los componentes: haciendo imposible para los componentes ejecutar funciones que puedan causar algún daño al sistema local. "Sandboxing", como comúnmente se le denomina, puede garantizar seguridad, porque los componentes bajados están obligados a jugar solo en su propia caja de arena ("sandbox"). La desventaja es que los componentes "sandboxed" no pueden hacer cosas que pueden ser muy útiles, como por ejemplo, escribir a un archivo en el disco local de la máquina del cliente (CHAPPELL D, 1996).

3. Firma digital de los componentes: esta firma digital puede ser chequeada por el "browser" que recibe el componente. Si está correcto, el "browser" puede estar seguro de que el componente fue creado por un entidad confiable (como Lotus o Microsoft o el grupo de desarrollo interno de la organización) y que no ha sido modificado.

 

El modelo de seguridad de Java incluye seguridad intrínseca que protege al usuario de errores que pueden resultar de escogencia incorrecta de tipos o acceso ilegal a memoria. Además, un Manager de Seguridad provee seguridad a nivel de los recursos que restringe cosas como el acceso a disco y a la red del programa Java . Esto es importante porque el usuario está protegido contra códigos erróneos y hostiles.

Los controles ActiveX no están sujetos a chequeo intrínseco de seguridad ni chequeos de acceso a los recursos. En cambio, los controles corren con completo acceso a la máquina y sus recursos. El único mecanismo de seguridad es la firma digital, que permite verificar que un control llega inalterado desde la fuente. Para firmar el control, hay que presentarlo a una Autoridad de Certificación (CA) como Verisign, junto con una descripción y el nombre del desarrollador. La Autoridad de Certificación utiliza técnicas de encripción para generar una firma que verifica el control, el nombre y la descripción. Cuando un "browser" recibe un control firmado, éste usa su propia copia de las claves públicas CA para verificar que el control corresponde con la firma. Si es así, entonces se puede asegurar que el control está inalterado (HUGHES M, 1997).

 

 

Velocidad

 

En general, las aplicaciones interpretadas (como "applets" Java) corren aproximadamente 10 veces más lento que las aplicaciones compiladas (como controles ActiveX). La importancia de esto es relativa: a medida que la velocidad de los procesadores aumenta, esta diferencia podría ser cada vez menos significativa.

 

 

Tipos de ActiveX/OLE

 

En  la actualidad OLE / ActiveX nos permite un abanico de posibilidades, y en un futuro próximo con OLE / DB y OLE / DS este abanico se abrirá mucho más.

Actualmente con OLE 2.0 podemos hacer uso de tres servicios básicos:

 

  • OLE/ActiveX Document
  • OLE/ActiveX Control
  • OLE/ActiveX Automation.

 

Internamente estos servicios utilizan otros protocolos OLE/ActiveX como (Uniform Data Transfer) o Almacenamiento estructurado, pero estos son los servicios utilizados desde aplicaciones de alto nivel.

 

ActiveX Document

 

Permite insertar un documento, o parte de él, dentro de otro documento, creando un documento compuesto. Cuando editamos el documento anfitrión también podemos editar los documentos insertados, bien sea dentro del documento maestro o bien como documentos independientes, como nos sea más cómodo.

Para facilitar la creación de este tipo de documentos compuestos, Microsoft ideó en un primer momento una opción especial llamada pegado especial, para más adelante incluir la posibilidad de combinar documentos por medio de Arrastrar y Soltar (Drag and Drop) por medio del ratón.

 

 

ActiveX Control

 

Son controles visuales que extienden las posibilidades nativas de un entorno de desarrollo incluyendo nuevos tipos de botones, visualización de imágenes con un determinado formato, etc... Aun cuando se asocia la idea de ActiveX Control con controles visuales, estos pueden ser visuales u ocultos. Estos últimos permiten incorporar nuevas funcionalidades dentro de nuestra aplicación, con la importante capacidad de gestionar eventos, a diferencia de otro tipo de librerías.

 

 

ActiveX Automation

 

Es un mecanismo por el cual dos aplicaciones o componentes pueden comunicarse. Viene a sustituir a DDE, teniendo además un interfaz orientado a objeto. Con ActiveX Automation creamos por medio de órdenes sencillas un objeto del tipo deseado, es decir, una aplicación o componente, y podemos hacer uso de todos los métodos y propiedades que ese objeto nos haga públicos, aprovechando toda la funcionalidad que posea.

 

 

 

Ole / ActiveX con Visual FoxPro (VFP)

 

Tenemos dos posibilidades:

 

  • Usar VFP como servidor OLE lo cual nos permitiría controlar VFP desde otras aplicaciones.

 

VFP 5.0 ha dado un paso adelante, ya que ha pasado a ser un Servidor OLE, lo que significa que desde cualquier otra aplicación que pueda ser Cliente OLE se pueden crear instancias de VFP con el equivalente a la siguiente orden:

 

x1 = CreateObject("VisualFoxPro.Application")

? x1.application.name

 

y cambiar propiedades e invocar métodos.

 

  • Usar Servicio Ole de otras aplicaciones con VFP y dotarlo con otras características.

 

 En VFP 3.0, que es un cliente OLE, ya se podía invocar a servidores OLE con rutinas como la siguiente aplicada para Word:

 

ox = CREATEOBJECT("word.basic")
ox.ArchivoNuevoPredeter
ox.Insertar("Pepe")

 

Desde VB para Aplicaciones podríamos crear una instancia de VFP 5.0 con las siguientes órdenes:

 

Dim oFox as Object
Set o Fox = CreateObject("VisualFoxPro.Application")

 

El siguiente ejemplo nos permitiría hacer una consulta en un tabla de Fox y guardar los resultados en un hoja de Excel:

 

Sub FoxTest()
Dim oFox as Object
Set o Fox = CreateObject("VisualFoxPro.Application")
oFox.Docmd("USE Customer")
oFox.DoCmd("SELECT contact, phone FROM customer WHERE country = "+ CHR$(39) + España + CHR$(39) + "INTO CURSOSR cust")
oFox.DataToClip("cust")
Range("A1").Select
ScvtiveSheet.Paste
End Sub

 

 

Creando Aplicaciones Servidoras de OLE con VFP 5.0

 

1. Crear un nuevo proyecto.

2. Crear una clase formulario llamda miform basada en form.

3. Cambiar la propiedad ShowWindows a 2.

4. Establecer la clase miform como OLEPUBLIC

5. Escribir en el Init de la clase miform: Thisform.visible = .T.

6. Crear un archivo llamado INICIO.PRG en el escribir el siguiente código:

SET ECHO OFF

SET TALK OFF

7. Compilarlo como EXE

8. Desde VFP 3.0 escribir en la ventana de órdenes:

ox = CREATE("proj1.miform")

y ya se ve el resultado. Al haberlo definido con la propiedad ShowWindows = 2 podríamos minimizar VFP 3.0 y veríamos como nos aparece el formulario encima de la pantalla de Windows95.

Para hacer un ejemplo que sea más práctico. Vamos a vincularle una Base de Datos a nuestro ejemplo y vamos a ponerle unos cuantos botones....

9. Volver a abrir la clase y añadir un botón de comandos en cuyo método click se escribe:

SKIP
Thisform.refresh

10. Vincular una Base de Datos al Proyecto: por ejemplo, la que viene en Samples\Data\testdata.dbc

11. Para vincular una tabla a nuestra clase formulario bastará con arrastrar un campo de una de las tablas y soltarla encima del diseñador de clases en la que tendremos nuestro formulario.

12. Como suele haber bastante problema con los path, escribiremos en el Load correspondiente a la clase formulario:

set defa to d:\... <el que corresponda>

set path to d:\... <el que corresponda>

use customer (el nombre de la tabla)

Recompilamos como .EXE nuestro ejemplo y Tenemos un magnífica aplicación servidora OLE que puede ser invocada desde VFP 3.0 y veremos como navegamos en una tabla.

Nota: Suele haber bastantes problemas con los path debido a que cuando instancias el servidor, el path se queda en \WIN\SYSTEM32 y debes hacer algo para redirigirlo al lugar donde esta la tabla.

Si en vez de haber creado un .EXE hubiéramos creado una .DLL veríamos que no podríamos interactuar con el Servidor de la misma manera que hacemos con el .EXE ya que el ratón nos está indicando actividad. Aunque no se pueda interactuar con el formulario, se le puede tratar como un control ActiveX y darle órdenes desde la ventana del cliente como:

? ox.application.docmd("skip")

? ox.refresh()

Una vez creada la DLL vemos que junto a la .DLL se nos han creado otros dos ficheros: uno con la extensión .TLB y otro con la extensión .VBR. El TLB es una librería de tipo OLE (Typelibrary) que se puede examinar usando cualquier examinador de librerías OLE como el Examinador de Clases que viene con VFP. El archivo .VBR es un archivo plano con las entradas que se han puesto en el Registry y que es útil si se usa el Setup Wizard a la hora de registrar la librería OLE en otra máquina.

 

Infografía


ActiveX

Esta página  muestra un resumen de que son los ActiveX actualmente en el uso de la tecnología digital, conceptualiza y relaciona los objetos OLE con los ActiveX, da una explicación general de las funciones de los objetos ActiveX. Así como la ventaja del uso de estos, en donde los lenguajes compatibles ejecutan funciones de los programas de otras aplicaciones, ello con el fin de reutilizar lo existente para ahorrar tiempo.   http://geneura.ugr.es/~jmerelo/DegaX/activex.html      Local

 

Los Controles ActiveX

El artículo en esta página, define como se usan los ActiveX en las páginas Web para aumentar la interactividad y la capacidad de representación de los documentos, aclarando que solo son usados por los Sistemas Operativos de Microsoft. Se expone un ejemplo del uso de un ActiveX para mostrar videos digitalizados a través de la web llamado ActiveMovie.  http://cdec.unican.es/libro/ActiveX.htm             Local

 

Java Y Activex

La siguiente ruta URL presenta una pagina que da un concepto de lo que es Java, sus applets y los ActiveX, estudia las principales características y las diferencias entre los estándares Java y ActiveX, especialmente la utilización de ambos estándares para realizar aplicaciones multimedia en la WEB, utilizando los "Applets" Java y los Controles ActiveX. Así mismo sin dejar de señalar los problemas de seguridad al usar estos recursos.    http://neutron.ing.ucv.ve/revista-e/No1/JAVACTIV.htm               Local

 

Registro Automático de ActiveX

Este articulo muestra como detectar un error de falta de ActiveX, como hacer para detectar la falta de algún ActiveX en el Windows, donde corre nuestra aplicación. Da una fuente (un ejemplo) de cómo registrar los Active, en caso de no ser encontrado el Active.     http://www.fpress.com/revista/Num0010/art.htm                        Local

 

VFP 5.0 como servidor OLE

Este link tiene una breve historia de los Objetos OLE o ActiveX, da un concepto de que son los Objetos ActiveX, OLE o COM, Clasifica los tipos de ActiveX que hay según su uso, nos muestra un ejemplo de como pueden ser usados con Visual FoxPro o Visual Basic. Un ejemplo de cómo programar un objeto ActiveX, OLE o COM y finalmente como registrar el nuevo ActiveX en nuestro Windows.   

http://www.fpress.com/revista/num9701/ene97.htm                           Local

Hosted by www.Geocities.ws

1