ASIGNATURA:
HERRAMIENTAS WEB PARA
RESUMEN
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).
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.
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
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.
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
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.
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:
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
<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).
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
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.
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:
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:
VFP
x1 =
CreateObject("VisualFoxPro.Application")
?
x1.application.name
y cambiar propiedades e invocar métodos.
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
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
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.