Aplicaciones Internet con Tecnologías Microsoft (ASP y ADO)
Download
Report
Transcript Aplicaciones Internet con Tecnologías Microsoft (ASP y ADO)
Aplicaciones Internet con
Tecnologías Microsoft
(ASP y ADO)
Resumen
Que es un Guión? (Script)
• Forma de añadir elementos programáticos
de control a HTML
• Averiguar datos útiles
– Navegador que se esta usando
– Validación de datos
• Trabajar con applets y controles
• Interactuar con el usuario
Lenguajes de Guiones
• Los más populares son:
– ECMAScript (antes JavaScript, JScript).
Estándar ECMA-262
– VBScript
• Otros ejemplos
– Perl
– REXX
– SpeedScript (Servidor)
• Necesita soporte del navegador
ECMA - European Computer Manufacturers Association
Qué es ASP?
• Active Server Pages - ASP es un ambiente de
aplicaciones abierto, sin compilador, en el cual
se puede combinar HTML, guiones y
componentes servidor ActiveX reutilizables para
crear soluciones, basadas en Web, dinámica y
poderosas.
• Active Server Pages permite usar guiones en el
servidor IIS con soporte nativo tanto para
VBScript como para Jscript.
Compatibilidad
• Windows XP professional y server con Web
Services (IIS).
• Windows NT 4.0 o 2000 server con IIS.
• Windows NT 4.0 o 2000 workstation con Peer
Web Services.
• ChiliSoft ASP 3.6 con Apache o IIS en máquinas
Unix - Linux
• Windows 9x con Personal Web Server (puede
ser necesario bajar las componentes ASP de
Internet).
Ejecución de ASP
• Se procesa antes de enviar la página al
navegador.
• Se ejecuta cuando el navegador pide un
archivo .asp al servidor Web.
• Tecnología ASP construida directamente
en servidor Web (IIS).
• El servidor Web invoca ASP (asp.dll) para
procesar el archivo .asp (de arriba abajo).
Ejecución
• ASP ejecuta los guiones que encuentre en
el archivo .asp.
• ASP formatea la salida como una página
Web estándar (HTML).
• La salida HTML es entregada al servidor
Web.
• Servidor Web envía la salida al
navegador.
Utilización de ASP
• Cree un archivo con extensión .asp.
• Puede contener cualquier combinación de
HTML, guiones (VBScript o JScript),
llamados a componentes (controles
Activex o Applets).
• Se puede actualizar salvando el
contenido. Se interpreta a la siguiente
invocación.
Invocación ASP
• Dos formas de ejecutar un guión en el
Servidor:
– En línea. El motor de interpretación de
guiones en el servidor lo ejecuta en el orden
que aparece en la página ASP. Se invoca
mediante tags <% %>.
– Insertando el guión entre tags:
<SCRIPT></SCRIPT> con la opción
RUNAT=Server
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Bueno y qué? (CGI)
• Con CGI (Common Gateway Interface)
– se puede hacer lo mismo, pero:
• ASP es una ISAPI que:
– Corre como un servicio (proceso) del IIS.
– Utiliza tecnología multihilos optimizada.
– Optimizado para soporte a múltiples usuarios.
ISAPI - Internet Server Application Program Interface
Bueno y qué? (CGI)
• ASP vs CGI
– ASP es más rápido y fácil de implementar.
– Se puede separar el diseño de la
programación de acceso a base de datos y
aplicaciones.
– Programador: genera código.
– Diseñador: solo diseña sin preocuparse por
acceso a BD u otros detalles.
Modelo de Objetos ASP
• Siete Objetos estándar para uso global:
– Request - para pedir información al usuario.
Información HTTP enviada por el navegador a
una página ASP vía IIS.
– Response - información HTTP producida por
el servidor para ser enviada al navegador vía
IIS.
Modelo de Objetos ASP
– Server - para representar y controlar al
Internet Information Server (IIS).
– Session - almacenar y cambiar variables y
parámetros de la interacción del usuario con
la aplicación ASP en el servidor Web.
– Application -compartir información de
aplicación y de control durante el tiempo de
vida de la aplicación.
Modelo de Objetos ASP
– ObjectContext - representa el contexto del
un objeto registrado dentro de MTS (Micrsoft
Transaction Server).
– ASPError - Contiene la información sobre
una condición de error al ejecutar un guión
ASP.
VBScript.
• Visual Basic Script (VBScript): lenguaje de
guiones por omisión para ASP.
• VBScript es un subconjunto de Visual Basic
para Aplicaciones.
• Se implementa como un interpretador rápido
y portable.
• Para uso en navegadores Web y
aplicaciones que usan controles ActiveX™,
Java Applets, y servidores OLE Automation.
VBScript
• Se puede usar tanto para ejecución en el
Navegador (cliente) como en el Servidor.
– <SCRIPT Language=VBScript> (Cliente)
– <SCRIPT Language=VBScript
RUNAT=Server>
– <%@ Language=VBScript> (Servidor)
– <% %> (Servidor en línea)
VBScript
• El lenguaje permite definir:
– Variables (todas de tipo Variant).
– Constantes.
– Funciones.
– Procedimientos.
– Incrustar Objetos.
• El lenguaje es Orientado a Objetos.
OO en VBScript
• Permite la creación de clases (Class) e
instanciación de objetos de una clase (New).
• Permite la definición de propiedades privadas y
públicas.
• Permite definir métodos asociados a las clases.
• Define un evento Class_Initialize que se activa
al crear un objeto de una clase.
Limitaciones de VBScript
• Soporta explícitamente un solo tipo de datos
(Variant).
• Es un lenguaje interpretado.
• No puede usar directamente la API de Windows.
• Hay diferencias sintácticas en algunas funciones
internas.
• No se puede usar para crear controles ActiveX.
Tipos de Datos Variant
• Variant: tipo de dato especial que representa
todos los tipos de datos conocidos.
• Un Variant puede representar un String, un
Integer, un Object, etc.
• Versátil pero no permite la seguridad de tipo
la cual no existe en VBScript.
• El contenido determina el tipo de una variable
en un momento determinado.
• Cualquier variable puede ser de cualquier
tipo.
Definición de Variables
• Hay tres formas de definir variables:
– Declaración implícita: Se usa la variable
• i=1
– Declaración explícita: Se usa Dim
• Dim nombre
– En la definición de una Clase con las
palabras Public o Private
• Private DatoInterno
• Public DatoExterno
Instrucciones
• Hay instrucciones para:
– asignar valores.
– realizar operaciones matemáticas.
– que ejecuten otras instrucciones, etc.
• VBScript requiere:
– Una instrucción por línea.
– Se utiliza _ (underscore) al final de una línea
como carácter de continuación.
Comentarios
• VbScript toma como comentario todo texto
que este a continuación de un apostrofe (‘).
• Solo se pueden colocar comentarios en
líneas dentro de tags <SCRIPT> o de tags
<% ... %>
<SCRIPT LANGUAGE=VBScript>
‘Definir una variable
Dim x
</Script>
<% ‘Definir una variable
Dim x
%>
Asignación de Valor
• Se usa el signo igual (=)
DIM v
v=2
• Se puede asignar cualquier tipo de dato
(todas son Variant)
DIM v
v=2
v = “Antes era entero, ahora soy cadena”
VBScript - Cliente
• Realizar trabajo sin interacción con
Servidor
– Validación.
– Selección entre valores válidos.
– Cálculos.
– Ayudas al usuario.
• Usar siempre el subtipo.
Operadores Matemáticos
Operador
+
*
/
\
^
mod
&
Descripción
Suma
Resta
Multiplicación
División de Punto Flotante
Division Entera
Exponenciación
Residuo
Concatenación
Operadores Comparación
Operador
<>
<
<=
>
>=
Descripción
Distinto de (no igual a)
Menor a
Menor o igual a
Mayor a
Mayor o igual a
Operadores Lógicos
Operador
not
and
or
xor
eqv
imp
Descripción
Negación
Conjunción
Disyunción
Exclusión
Equivalencia
Implicación
Instrucciones Condicionales
• Ejecutan ciertas instrucciones
dependiendo del resultado de una
expresión:
• Instrucción If
– If...Then
– If...Then...Else
– If...Then...ElseIf...Else
• Las instrucciones If se terminan con
End If
Instrucciones Condicionales
• Instrucción Select Case
Select Case expresión_prueba
[Case lista_expresiones1
[bloqueInstrucciones1]]
[Case lista_expresiones2
[bloqueInstrucciones2]]
.
.
[Case Else
Concatenación de Cadenas
• El operador de concatenación es el &
c = “Hoy el día ” & “estuvo muy soleado”
• También se puede utilizar el signo +
c = “Hoy el día ” + “estuvo muy soleado”
• Cuidado: que sucede en:
c = “Hoy el día ” + 25 o en
c = “Hoy el día ” & 25
Arreglos e Iteraciones
• Un arreglo es un grupo de variables con el
mismo nombre.
• Cada miembro es un elemento.
• Se declara como cualquier variable
indicando entre paréntesis el número de
elementos.
Dim colores (2) ‘ Arreglo de 3 elementos
• El primer elemento tiene índice 0.
Arreglos e Iteraciones
• Función LBound determina el límite
inferior de un arreglo.
• Función UBound determina el límite
superior de un arreglo.
Dim PalosBaraja(3)
LBound(PalosBaraja) devuelve 0
UBound(PalosBaraje) devuelve 3
Arreglos e Iteraciones
• Instrucciones de Iteración en VBScript.
– Do [{While | Until} condición]
[instrucciones]
[Exit Do]
[instrucciones]
Loop
– Do
[instrucciones]
[Exit Do]
[instrucciones]
Loop [{While | Until} condición]
Arreglos e Iteraciones
• Instrucciones de Iteración en VBScript.
– For contador = inicio To fin [Step incremento]
[instrucciones]
[Exit For]
[instrucciones]
Next
– While condición
[instrucciones]
Wend
Arreglos e Iteraciones
<SCRIPT LANGUAGE=VBScript>
Sub Boton1_OnClick()
Dim PalosBaraja(2)
Dim i
Dim str
PalosBaraja(0) = “Oros”
PalosBaraja(1) = “Copas”
PalosBaraja(2) = “Espadas”
For i = 0 to UBound(PalosBaraja)
str = str & “ : “ + PalosBaraja(i)
texto.value = str
Next
End Sub
</Script>
Arreglos e Iteraciones
• Se puede re dimensionar un arreglo
mediante la palabra clave ReDim.
• Si no se utiliza la palabra Preserve se
borrará toda la información del arreglo.
Arreglos e Iteraciones
<SCRIPT LANGUAGE=VBScript>
Sub Boton1_OnClick()
Dim PalosBaraja(2)
Dim i
Dim str
PalosBaraja(0) = “Oros”
PalosBaraja(1) = “Copas”
PalosBaraja(2) = “Espadas”
ReDim Preserve PalosBaraja(3)
PalosBaraja(3) = “Bastos”
For i = 0 to UBound(PalosBaraja)
str = str & “ : “ + PalosBaraja(i)
Next
texto.value = str
End Sub
Procedimientos
• Un conjunto de instrucciones al cual se
asigna un nombre. Para ejecutar las
instrucciones se usa el nombre.
• En VBScript existen dos tipos de
procedimientos:
– Sub: no devuelve un valor al terminar la
ejecución
– Function: devuelve un valor al terminar la
ejecución.
Procedimientos
• Definición de un SUB
<SCRIPT LANGUAGE=VBScript>
Sub NombreProc()
...Instrucciones
End Sub
</SCRIPT>
• Definición de una Función
<SCRIPT LANGUAGE=VBScript>
Function NombreFunc()
...Instrucciones
End Function
</SCRIPT>
Procedimientos de Evento
• Procedimientos que el Navegador o IIS
ejecutan en forma automática.
• Nosotros realizamos la programación.
• Ejecutan en respuesta a un evento que
ocurre en un programa, objeto o página
web.
Sub NombreElemento_OnNombreEvento()
[ Instrucciones]
End Sub
Eventos en el Servidor
• Asociados con los Objetos Application y
Session hay dos eventos que ocurren en
el servidor ASP.
– OnStart se dispara cuando comienza una
aplicación ASP o una sesión ASP.
– OnEnd se dispara cuando termina la
aplicación o la sesión ASP.
Alcance de Variables
• VBScript admite alcance de variables.
• El tiempo de existencia y la visibilidad de
una variable dependen del lugar donde se
define.
• Existen dos tipos de alcance
– Variables locales
– Variables de guión
Alcance de Variables
• Variables locales:
– Se declaran dentro de un procedimiento (Sub
o Function).
– Existe mientras el procedimiento está activo.
– Se eliminan de memoria al terminar el
procedimiento.
– El valor que tenían asignado desaparece.
Alcance de Variables
• Variables de guión:
– Se declaran fuera de un procedimiento (Sub o
Function).
– Existen mientras la página está siendo
procesada.
– Se pueden ver desde cualquier otro lugar de
la página.
– Pueden referenciarse dentro de cualquier
procedimiento (Sub o Function)
Código Reutilizable
• Segmentos de Código genérico que
podemos usar en muchas páginas HTML
o ASP.
– P.ej. Función para verificar el dígito de control
de un NIT dado.
– Determinar que un valor ingresado este en
una lista de valores válidos.
• El código genérico se inserta en la página
donde se invoca.
Código Reutilizable
• Ventajas
– Menor esfuerzo de codificación.
– Código de mejor calidad.
– Construir librería de componentes Funciones o
Subprogramas (Function o Sub).
– Consistencia.
– Componentes depuradas.
• Dos mecanismos para hacerlo:
– Opción Include
– Retrollamada
Opción Include
• Clave para construir páginas ASP eficientes y
para tener porciones de código reutilizable.
<!--#include virtual=“/unarchivo.inc”-->
incluirá cualquier archivo del sitio (en este caso
unarchivo.inc está en el directorio raíz del servidor
web). Se debe dar el nombre de la trayectoria
(path) del archivo.
<!--#include file=“unarchivo.inc”-->
incluirá un archivo localizado en el directorio
donde esta el guión que contiene include.
Componentes ActiveX
• Se puede usar en el VBScript de páginas
ASP objetos localizados en librerías
ActiveX DLL y EXE.
• Estas librerías están en código compilado
(ejecutan más rápido).
• Proveen servicios que no se pueden
realizar en VBSript.
• IIS 5.0 incluye varios componentes
ActiveX.
Componentes ActiveX
• Creación
– Se utiliza la función CreateObject()
Dim obj ‘Variable para guardar el objeto
Set obj = CreateObject(“Libreria.Objeto”)
- Las propiedades y métodos del objeto ActiveX
se referencian en VBScript de la misma forma
que para Clases.
– Para usar CreateObject()
• Se debe utilizar la palabra clave SET.
• Librería.Objeto deben ir entre comillas por ser una
cadena de caracteres.
Objetos DOM
• El navegador y las páginas en él incluyen
una gran cantidad de objetos que se
pueden utilizar en guiones del lado
cliente.
• Son parte de DOM (Document Object
Model) definido por W3C (World Wide Web
Consortium).
• Soportado por Internet Explorer y por
Netscape Navigator.
Objetos DOM
• DOM es una representación de todos los
objetos en un navegador.
• DOM es voluminoso y parte de HTML
dinámico (DHTML).
• Objetos para muchas cosas desde el historial
hasta un campo de una página.
• Algunos Objetos Web importantes:
– Objeto Window
– Objeto Document
– Objetos de elementos individuales HTML
Objetos DOM
• DOM convierte los elementos HTML en
objetos propiamente dichos.
• Ejemplo.
Si tenemos un botón HTML definido por:
<INPUT type=“button” value=“Ejecutar” name=boton1>
entonces:
str = boton1.value
asigna “Ejecutar” a str
• Objetos DOM tienen métodos que se pueden
usar para dar comportamiento dinámico a las
páginas web.
Objetos en el Servidor
• Componente FileSystemObject (FSO)
– Componente ActiveX incluida en IIS 5.0
– Utiliza la sintaxis objeto.metodo con un rico conjunto
de propiedades, métodos y eventos para trabajar con
unidades de disco, carpetas y archivos
– Algunos usos:
• Determinar número, tipo tamaño y espacio libre de unidades
de un computador
• Crear y gestionar carpetas en el sistema de archivos
• Abrir archivos de texto para lectura y escritura
Utilización de ASP
Interacción Web
• Interacción Web esta conformada por:
– Conexión (usando el URL)
– Solicitud (Request).
– Procesamiento.
– Respuesta (Response).
– Terminación.
Comunicación
Cliente-Servidor
• Encapsulada en dos objetos diferentes
igualmente importantes
– Request := representa al navegador de
Internet en el computador del cliente.
– Response := representa al servidor y se
encarga de devolver la información
procesada de acuerdo con la petición del
cliente.
Configuración ASP
Servidor Web
Request
Navegador
Web
Response
H Servidor
T Web
T (IIS*)
P
Servidor de Aplicaciones
Active Server Pages
(Asp.dll)
(Aplicación)
Fuente de
Datos
ITP
Aplicaciones
Herramientas
de Desarrollo
Database Server
*Componentes ActiveX de IIS 5.0 (ADO, FSO, AdRotator, etc.)
Objeto Request
• Encapsula la información que el cliente envía a
un servidor en una interacción Internet.
• Contenedor con información muy variada
• Objeto exclusivo de IIS y ASP
• La información enviada es estándar W3C
Objeto Request
• Permite trabajar en forma más fácil y rápida con
CGI.
• Se asigna la información a variables de
ambiente:
• Especificación CGI completa:
– http://www.w3.org/CGI
Intercambio de Datos
• Elemento <FORM> de HTML
– Reúne y organiza la información
– Contiene campos definidos por el subtag
<INPUT>
– Se pueden definir campos de tipo:
•
•
•
•
•
•
Text
Checkbox
Hidden
Submit
Button
TextArea
Password
Radio
File
Reset
Image
Intercambio de Datos
• Sintaxis básica de <FORM>
<FORM Name=Nombre Action=URL
Method=POST|GET>
</FORM>
– Se envía el contenido con botón Submit o con
hipervínculos
Métodos Get y Post
• Get
– Añadido al final del URL
– Limitado en tamaño (255 caracteres)
– Se utiliza generalmente con la forma inicial
(vacía)
• POST
– Se envía en salida estándar y se recibe en
entrada estándar
– Pocas limitaciones de tamaño
– Se usa para formas diligenciadas
Pares Nombre=Valor
• Forma como HTML estructura la
información enviada al servidor
• El navegador conforma los pares, los
agrupa y los envía en una solo texto.
Obtención de Datos
• En ASP se usa la colección FORM del objeto
Request
str = Request.Form(NombreElemento)
• El nombre del elemento es el especificado en
atributo Name del tag <INPUT>
<FORM Name=MiForma>
Ingrese algo: <INPUT Name=MiCampo Type=Text>
</FORM>
• Para obtener el valor usamos:
s = Request.Form(“MiCampo”)
• Solo se envía una forma a la vez.
Aplicación ASP
• Grupo de Páginas ASP inter
dependientes.
• Puede estar conformada por páginas
estáticas (.html) o dinámicas (.asp)
• Las páginas conforman un todo mayor.
• Facilita el paso de información entre
páginas.
• Permite definir variables con un alcance
superior al de página.
Aplicación ASP
• Las variables definidas con alcance de
página desaparecen con ella.
• No pueden pasar de una página a otra.
• Dos niveles de alcance superiores a
página.
– Sesión
– Aplicación
• IIS asigna un número de identificación a
cada Sesión (Session.SessionID)
Alcance de Variables
Aplicación
Sesión
Página
Procedimiento
Global.ASA
• Archivo especial de una aplicación ASP.
• Permite declarar variables de sesión y de
aplicación con independencia de alguna
página.
• Las variables existen para cualquier
sesión o en toda la aplicación.
• ASP busca Global.ASA para obtener la
información global.
Procedimientos de Eventos
• Evento Start: Se ejecuta al comenzar una
aplicación o una sesión
• Pueden ser capturados y procesados en
Global.asa
• Application_OnStart: captura el evento
Start al comenzar la Aplic.
• Session_OnStart: Captura el evento Start
cuando se inicia una sesión con la Aplic.
Procedimientos de Eventos
• Evento End: Se ejecuta al terminar una
aplicación o una sesión
• Application_OnEnd: captura el evento
End al finalizar la Aplicación.
– Application termina cuando se detiene IIS
o al reemplazar Global.ASA
• Session_OnEnd: captura el evento
End cuando finaliza la Sesión.
– El usuario abandona.
– Se excede el tiempo permitido.
Estructura de Aplicación
• Basada en estructura directorio\
subdirectorio.
• El directorio raíz debe registrarse como
directorio virtual en IIS.
• Existe una estructura “estándar”
recomendada.
• Estructura consistente, clara y fácil de
usar.
Estructura de Aplicación
/Raiz_Aplicación
Default.htm (o Default.asp)
Global.ASA
/Clases
/Contenido
/Medios
/Temas
/Datos
/DLL
/ArchApoyo
Problema de “Estado”
• Interacciones Web no conservan Estado.
– “Estado”: capacidad de guardar información
al transcurrir el tiempo
• Una interacción Web:
– Cliente llama al servidor solicitando una
página
– Servidor procesa y devuelve la página
– La conexión se cierra
– Se pierde toda memoria en ambos.
Soluciones
• Estado entre páginas de una sesión
– Utilizando variables de Sesión:
Session(“CodCliente”) = 123456
• Estado para todos los usuarios de una
aplicación:
– Utilizando variables de Aplicación:
Application(“NomEmpresa”) = “Diplomado”
• Estado entre sesiones de un usuario
– Utilizando “Cookies”
Cookies
• Un paquete de información comprartido
entre un navegador y el servidor Web.
– Definidas en el estándar HTTP.
– Permite guardar un registro breve de
información en disco del equipo cliente.
– La página ASP (servidor) envía las “cookie”
en el encabezado.
– Pueden estar deshabilitadas en el navegador.
Cookies
• Continuación
– Tienen fecha de vencimiento (duración).
– Si el vencimiento se extiende mas allá de la
sesión se guarda en el disco (Cliente).
– Se guarda el URL del Servidor.
– El navegador envía todas las “cookies”
vigentes recibidas de un servidor en las
siguientes interacciones con él.
– Una página ASP puede tomar la información
que necesite.
Paquete HTTP puede contener
Cookies
Servidor Web
Página
HTML
Navegador
http://help.netscape.com/kb/client/970226-2.html
http://www.htmlgoodies.com/cookie.html
Uso de Cookies
Servidor Web
Aplicación
Response.Cookies
Request.Cookies
El viaje de las Cookies
HTTP
Response.Cookies
Página
HTML
Servidor
Web
Aplicación
Request.Cookies
Navegador
Página
HTML
Qué es ADO?
• ActiveX ™Data Objects - ADO es un conjunto de
objetos que permite a las aplicaciones acceder y
manipular datos en forma consistente por medio
de un proveedor OLE DB.
• ADO permite acceder a diferentes Fuentes de
Datos, no necesariamente Bases de Datos
• Ventajas: alta velocidad, facilidad de uso, bajo
consumo de memoria y poco consumo de disco.
Qué es ADO?
• Características
– Los objetos ADO se crean en forma
independiente.
• DAO (Data Access Object) y RDO (Remote Data
Objects) requerían moverse en una jerarquía.
• Solo se crean y controlan los objetos necesarios.
– Permite invocar a Procedimientos
almacenados con o sin parámetros.
Qué es ADO?
• Características (cont.)
– Diferentes tipos de cursores incluyendo
cursores específicos de la fuente.
– Soporta límite de filas leídas y otros objetivos
en consultas para optimizar desempeño.
– Soporta múltiples conjuntos de registros
retornados por procedimientos almacenados
– Objetos con libertad de enlaces para
aplicaciones web eficientes
ADO, ODBC y OLE DB
• Objeto Connection (ADO) necesita un
proveedor que le suministre los datos.
• Se usa un proveedor OLE DB.
• OLE DB es una tecnología nueva que
mejora a ODBC.
• ODBC (Open DataBase Conectivity)
estándar que permite que bases de datos
de diferentes fabricantes parezcan iguales
entre sí.
Administrador ODBC
OLE DB
• OLE DB empieza donde ODBC termina
– ODBC solo trabaja con bases de datos
• Existen otras Fuentes de Datos:
– Servidor de correo (e-mail)
– Servidor de índices
– Servidor de Directorios, etc
• Un dato es un dato sin importar su origen
y debe operarse sobre él de la misma
manera
• UNIVERSAL DATA (Visión Microsoft)
OLE DB
• Conjunto estandarizado de objetos y
métodos que expone una fuente de datos
específica.
• Se trabaja siempre con los mismos
objetos y métodos sin importar la fuente
de datos.
• Aísla de los detalles propios de cada
fuente de datos.
Proveedores OLE DB
• OLE DB interactúa con la fuente por
medio de un Proveedor OLE DB
• Es un mecanismo que traduce estructuras
de datos a un estándar común.
• Se requiere conocer la identificación o
cadena del proveedor OLE DB.
Acceso a Fuentes de Datos
Objetos ADO
• Connection – Información de conexión con el
proveedor de datos
• Command – Información sobre un comando, tal
como una consulta sql, definiciones de
parámetros, etc.
Objetos ADO
• Error – Información ampliada sobre una
condición de error detectada por el
proveedor.
• Field – Información sobre una sola
columna de un Recordset.
– El objeto Recordset tiene una colección
Fields para contener todos los objetos Field
Objetos ADO
• Parameter – Un parámetro para un objeto
Command.
• Property – Una característica de un
objeto ADO definida por el fabricante del
proveedor OLE DB.
• Recordset – Un conjunto de registros y
un cursor a esos registros retornados por
una consulta (query).
Trabajo con ADO
•
El proceso básico se resume en cuatro
pasos:
1.
2.
3.
4.
•
Conectarse a la fuente de datos.
Definir la información que se desea recuperar.
Recuperar y manipular los datos recibidos.
Visualizar la información.
Se trabaja básicamente con los objetos
Connection, Recordset y Command.
Conexión
• Se utiliza un objeto Connection.
• Se crea este objeto utilizando la función
CreateObject().
• Requiere un parámetro que es una
cadena identificando el objeto a crear
• Parámetro constituido por:
– Nombre de librería de Objetos.
– Un punto seguido por el nombre del objeto.
Conexión
• La librería ADO se llama ADODB
• La librería ADO reside en un ActiveX DLL o en
un ActiveX EXE.
• Para finalizar la conexión y el vínculo a la fuente
de datos se usa el método Close.
Conexión
• La cadena de Conexión le da al objeto
Connection la información necesaria para
vincularse a la fuente de datos.
• Compuesta por una serie de pares
Nombre=Valor separados por un punto y coma.
• Identifica la fuente de datos, el tipo de
proveedor OLE DB, identificación de usuario y
contraseña si es necesaria.
• Puede ser diferente o tener otros parámetros
según el proveedor OLE DB.
Acceso a Datos
• Accedemos a los datos por medio de un
objeto Connection con un vínculo abierto a
una fuente de datos.
• Los datos se devuelven en un objeto
Recordset el cual es una colección de
registros (filas).
• Cada registro esta compuesto por campos
(columnas).
Acceso a Datos
• Se debe ejecutar una instrucción SQL
sobre la fuentes vinculada al objeto
Connection.
• La instrucción SQL se pasa como
parámetro del método Open del objeto
Recordset.
Acceso a Datos
• Cinco pasos para extraer datos de una fuente y
visualizarlos en la página
– Crear un objeto Recorset con CreateObject.
– Crear una instrucción SQL para la información a
acceder.
– Declarar un objeto Connection como conexión activa
para el Recordset.
– Usar el método Open del Recordset pasando la
instrucción SQL.
– Recorrer el Recordset y crear el HTML para
formatear la salida al navegador .
Acceso a Datos
• La información de un Recordset está
organizada en campos (Fields).
• Para acceder a un campo específico de
un registro del Recordset se utiliza:
rs(“NombreDeCampo”)
Donde rs es un nombre de variable que
representa al Recordset
Acceso a Datos
• Para los ejemplos usaremos la base de
datos Neptuno.mdb que se instala con el
producto Access de Microsoft.
• La siguiente dispositiva muestra el
diagrama ER (Entidad-Relación) para esta
base de datos.
• Diagrama obtenido el producto ERwin de
Computer Associates.
Acceso a Datos
• ADO utiliza instrucciones SQL para
recuperar los datos.
• Se puede trabajar con datos obtenidos de
varias tablas en forma simultánea.
Escritura
• Se utiliza el Objeto Command de ADO
• Command representa una instrucción a
ejecutar en la fuente de datos.
• Sirve para añadir nueva información o
para modificar la existente.
• Se define la instrucción SQL y se asigna a
la propiedad CommandText del objeto
Command.
• Se llama al comando Execute.
Acceso a Tabla Completa
• Recordset.Open permite abrir una tabla
completa sin usar SQL.
– La sintaxis completa es:
Recordset.Open Origen, Conexión, TipoCursor,
TipoBloqueo, Opciones
Donde: es el origen de los datos cuando se
desea la tabla complete es el nombre de la
tabla.
Conexión: objeto Connection activo a una
fuente de datos.
Acceso a Tabla Completa
Tipo Cursor: Constante que indica el tipo de cursor a
usar así:
adOpenForwardOnly (por omisión)
adOpenKeySet
adOpenDynamic
adOpenStatic
TipoBloqueo: Constante VB que indica el tipo de
bloqueo de registro a usar así:
adLockReadOnly
adLockPessimistic
adLockOptimistic
adLockBatchOptimistic
Acceso a Tabla Completa
Opciones: Constante VB que indica como
interpretar el parámetro Origen así:
adCmdText = intrucción SQL.
adCmdTable = nombre de una tabla.
adCmdStoredProc = nombre de un procedimiento
almacenado.
adCmdUnknown = Comando específico del
proveedor OLE.
• Incluir: ADOVBS.INC
<!--
#INCLUDE VIRTUAL=“/ADOVBS.INC” -->
RDS-Remote Data Services
• Tecnología Microsoft para acceso a datos
remotos.
• RDS Permite:
– Llevar del servidor al cliente uno o mas Recordsets
ADO desconectados.
– Utilizando protocolos HTTP, HTTPS o DCOM.
– Añadir, modificar o eliminar registros en el recordset
local del cliente.
– Devolver los cambios al servidor remoto cuando el
usuario termina sus operaciones.
RDS-Remote Data Services
• RDS Permite (cont)
– Los cambios son aplicados a la fuente de
datos.
– En caso de error se avisa a la máquina
cliente.
– El usuario final puede resolver los conflictos
presentados.
Como Obtener RDS
• Es parte de Microsoft Data Access Components
(MDAC).
• MDAC incluye el núcleo de:
–
–
–
–
ADO
RDS
ODBC
OLEDB
• Además:
– ODBC Drivers
– OLEDB Providers
Como Obtener RDS
• Está contenido y se instala con:
– Aplicaciones de Microsoft que instalan MDAC
(P.ej.: Internet Explorer)
– Al instalar el sistema operacional Windows
2000
– Mediante el archivo ejecutable
MDAC_TYP.EXE se descarga desde
http://www.microsoft.com/data
Componentes Claves de RDS
• Del lado Cliente:
– RDS Data Control. Componente no visual,
unida a Datos (data binding).
– Se usa para obtener datos de un servidor
remoto mediante:
• Propiedad URL (llama a página ASP)
• Propiedades Server/Connect/Sql y opcionalmente
Handler. Usa RDS Data Space en cliente para
llamar RDS DataFactory en el servidor.
• Propiedad SourceRecordSet
Componentes Claves de RDS
• Del lado Servidor:
– RDS contiene un objeto de negocios del lado
servidor (ActiveX DLL) llamado
RDSServer.DataFactory.
• Envía comandos a una fuente de datos y devuelve
el resultado vía Internet o una Intranet
• RDSServer.DataFactory es la componente ActiveX
DLL por omisión que puede usarse para pasar
datos a una pagina web con poca programación
Instanciación RDS.DataControl
• En el guión ASP se incluye el siguiente
marcador:
<OBJECT ID="DC1" WIDTH="1" HEIGHT="1"
CLASSID="CLSID:BD96C556-65A3-11D0-983A00C04FC29E33">
</OBJECT>
Métodos:
Cancel, CancelUpdate, CreateRecordset, MoveFirst,
MoveLast, MoveNext, MovePrevious, Refresh, Reset,
SubmitChanges
Propiedades:
Connect, ExecuteOptions, FetchOptions, FilterColumn,
FilterCriterion, FilterValue, ReadyState,
Recordset, Server, SQL, SortColumn, SortDirection,
SourceRecordset
Instanciación
RDSServer.DataFactory
• En el guión ASP se incluye el siguiente
marcador:
<OBJECT ID="DS1" WIDTH="1" HEIGHT="1"
CLASSID="CLSID:BD96C556-65A3-11D0-983A00C04FC29E36"
</OBJECT>
Obtención de Datos
•
Con la instancia así creada se pueden
obtener datos de un servidor remoto
mediante:
1. Propiedad URL
With oRDC
.URL =
“http://Diplomado/VerClientes.asp?País=Alemania”
.Refresh
End With
Obtención de Datos
2. Propiedades Server/Connect/Sql
With oRdc
.Server = http://localhost
.Sql = “Select * From Clientes” & _
“Where” País = ‘Alemania’”
.Connect = "Provider=MSDASQL;” & _
“Data Source=Neptuno;” & _
“User Id=sa;Password=“
.Refresh
End With
Obtención de Datos
3. Propiedades Server/Connect/Sql y el RDS
default Handler
With oRdc
.Server = http://localhost
.Handler = “MSDFMAP.Handler”
.Connect = “Neptuno”
.Sql = “Clientes”
.Refresh
End With
Las secciones “Neptuno” y “Clientes” se definen en
el archivo MSDFMAP.ini
Obtención de Datos
• Archivo MSDFMAP.ini
– Localizado en el directorio \Winnt o en
\Windows.
[connect Neptuno]
Access = ReadWrite
Connect = "Provider=MSDASQL;Data Source=Neptuno;
User Id=sa;Password=“
[sql Clientes]
Sql = “Select * From Clientes Where País = ‘Alemania’”
Asociación a Datos
•
Se pueden usar los resultados del RDS
Data Control a componentes visuales.
(Por ejemplo una tabla html)
<table ID=“miTabla” DATASRC=“#oRDS”
DATAPAGESIZE=“15” bordercolor=“white”
bgcolor=“#DADFE0”>
Otros Aspectos ASP
• Existe una variedad de Objetos útiles
• Permiten mejorar la capacidad de
reutilización y la robustez del código.
– Objeto Dictionary.
– Otras propiedades y métodos del objeto
Server.
– Objeto Err para manejar situaciones de
excepción.
Objeto Dictionary
• Permite trabajo más fácil y simple con
pares Nombre=Valor.
• Comportamiento muy similar a objeto
Collection.
• A cada Valor que se asigne al objeto
Dictionary se le asigna una Clave para
referenciarlo fácilmente.
• El objeto Dictionary está en la Librería
Scripting.
Objeto Dictionary
• Debe crearse (instanciarse) el objeto
Dictionary asi:
Dim dct ‘ variable para Directory
Set dct = CreateObject(“Scripting.Dictionary”)
• Para crear una clave y su valor:
Dct.Add “Nombre”, “Jose”
• Para referenciar el valor asociado a una
Clave.
str = dct(“Nombre”) ‘str contendrá Jose
Objeto Dictionary
• Para recorrer el objeto Dictionary:
For Each VarClave In ObjetoDictionary
str = ObjetoDictionary(VarClave)
Next
• Dictionary tiene una colección Keys que
representa todas las entradas en el
diccionario.
• Se recorre de forma similar al objeto
Dictionary.
Objeto Server
• Además de las propiedades y métodos ya
utilizados hay otros muy útiles:
– Método Server.Transfer
– Método Server.Execute
– Método Server.HTMLEncode
– Método Server.MapPath
– Propiedad Server.ScriptTimeout
Server.Transfer
• Llama a otra página ASP y pasa todos los
objetos y variables de la página que llama.
• La página puede ser de otra Aplicación pero
debe residir en el mismo servidor
• Invocación:
Server.Transfer(NuevaPagina)
Donde NuevaPagina es URL de la página llamada
• El control no regresa a la página que llama.
Server.Execute
• Ejecuta código en otra página ASP y devuelve
control a la página que llama.
• Sirve para crear rutinas (guiones) que pueden
llamarse desde muchas otras páginas
(reutilización de código).
• Invocación:
Server.Execute(RutaPagina).
Donde RutaPagina es el URLde la página que contiene
el código.
• La página debe residir en el mismo servidor.
Transfer vs Execute
• Ambos métodos pasan los objetos y
variables a la página ASP invocada.
• Transfer no devuelve control a la página
que invoca; Execute sí.
• El código localizado en una página utiliza
transfer nunca se ejecutará.
• Execute permite crear Subrutinas y
Transfer aplicaciones.
Método HTMLEncode
• Permite enviar al navegador cadenas de
texto sin que este interprete los tags
HTML que contenga la cadena.
• Reemplaza los caracteres especiales
como “<” o “>” por sus equivalentes HTML
< y >.
• Convierte varios caracteres ASCII a su
representación HTML.
Método URLEncode
• Los URL tienen un formato específico.
–
–
–
–
Un URL no puede tener espacios
No puede tener signos +
No puede contener signos &
Etc.
• Se puede pasar información a otra página ASP
usando la cadena de consulta en el URL
(caracteres después de ?).
• URLEncode permite trabajar normalmente con
URLs y codificarlos antes de enviarlos.
Método MapPath
• Permite obtener la trayectoria física real de una
trayectoria relativa o virtual.
• Invocación:
Server.MapPath(ruta) donde ruta es la ruta relativa o
virtual cuya trayectoria queremos saber.
Si ruta empieza por / o \ se considera virtual y se busca
desde directorio raíz del servidor.
Si no se considera relativa a la carpeta donde reside la
página ASP que invoca MapPath.
Propiedad ScriptTimeout
• Por omisión una página ASP no se
ejecutará en el servidor por más de 90
segundos.
• El servidor finaliza todo guión que exceda
este tiempo y emite un mensaje de error.
• Un guión con acceso a BD podría exceder
este tiempo.
<% Server.ScriptTimeout = 150 %> permite incrementar
a 150 segundos
Manejo de Errores
• Los errores son inevitables y por lo tanto
debemos manejarlos adecua-damente.
• La capacidad de detectar y manejar un
error aumenta la confiabilidad de nuestro
código.
• Los errores en ASP se pueden identificar y
podemos escribir código para actuar
consecuentemente.
Objeto Err
• Es un objeto global interno de VBScript.
• Se llena cada vez que el guión provoca un
error.
• Propiedades:
– Description: Devuelve o establece una descripción
del error en lenguaje amigable.
– HelpContext: Devuelve o establece el número de
identificación de contexto que es la ubicación del
tema en el archivo de ayuda asociado.
Objeto Err
• Propiedades:
– HelpFile: Devuelve o establece la trayectoria
del archivo de ayuda que provee información
de ayuda al usuario. Archivo WinHelp o
HTML.
– Number: Devuelve o establece un número
específico que identifica el error.
– Source: Devuelve o establece el nombre del
objeto que crea el error.
Objeto Err
• Métodos:
– Raise: Permite generar un error.
Err.Raise(Number,Source,Description,HelpFile,Help
Context)
– Clear: Elimina todos los valores y datos del
objeto Err.
• Como capturar el objeto Err?
On Error Resume Next. Indica al motor de
guiones que ignore el error
El guión sigue ejecutando a pesar del error
Objeto Err
• La invocación es única. No permite
bifurcaciones. (No hay On Error GoTo
como en VB).
• La invocación está sujeta a las mismas
reglas de alcance de variables. (página o
procedimiento específico).
• Al invocar On Error Resume Next en un
procedimiento el objeto Err queda local a
ese procedimiento.
Objeto Err
• Solo capturaremos los errores que
ocurran en el procedimiento.
• Para hacer un procedimiento de manejo
de errores único necesitamos pasar el
objeto Err como argumento al
procedimiento.
• Pasamos entonces una instancia de Err y
el procedimiento puede detectar sus
propios errores.
Control de Acceso
• Tópico relacionado con Seguridad.
• Generalmente tenemos una página de
inicio de sesión donde:
–
–
–
–
–
Pedimos un código de Usuario
Solicitamos una Contraseña (password)
Validamos el usuario
Si es válido pasamos a la página principal
Si no lo es vamos a una página de error
• Problema. Después de enviar página de
inicio se ve el URL de la página principal.
Control de Acceso
• Si invalidamos la contraseña el usuario
podría entrar usando directamente el
URL de la página principal.
• Solución:
– Creamos una variable de Sesión que indique que
el usuario es válido. (Permanece activa durante
toda la sesión)
– Antes de mostrar una página miraremos esta
variable.
• Si no existe o tiene valor Nulo tenemos un usuario
inválido
– Al terminar la sesión la variable desaparece.
Control de Acceso
• En cada página ASP
<%
'Control de Seguridad
If Session("OkUsuario") = False THEN
Response.Redirect Application("ArchErrorAcceso")
End If
'*******************************************
%>
• En global.asa:
Sub Application_OnStart
Application(“ArchErrorAcceso”) = “EjErrorAcceso.htm”
End Sub
Que es ActiveX?
• Tecnología de empaquetamiento de
componentes para la Web.
• Unidades de código ejecutable basadas en la
especificación COM (Component Object Model)
(.exe, .dll, .ocx).
• Descendientes más compactos de VBX y OCX.
• Suministra una forma de empaquetar
componentes y utilizarlas en aplicaciones, en
particular navegadores Web
Beneficios
• Capacidad de acceder, mediante un guión
de servidor, a funcionalidad contenida en
componentes ActiveX.
• Permite aplicaciones más robustas al
ensamblarlas con componentes probados
y estandarizados.
• Existen miles de componentes disponibles
en el mercado.
Beneficios
• Permite acceso rápido a bases de datos
(hemos visto ADO).
• Se puede controlar otras aplicaciones
Microsoft por medio de guiones ActiveX.
Se podría insertar Excel en una pagina
Web.
• Pueden programarse en cualquier
lenguaje moderno (C++, VB, Java, etc).
Desventajas
• Actualmente ActiveX solo funciona en una
sola plataforma (Windows) y un solo
navegador (Internet Explorer).
• Se pierde la portabilidad de las
aplicaciones.
• Tecnología de dominio público desde
Octubre de 1996. (www.activex.org)
• Hay esfuerzos para llevarla a MAC y Unix.
Para que ActiveX?
• ASP es una gran tecnología pero tiene
limitaciones.
• Se pueden construir componentes ActiveX
para superarlas y extender ASP.
• Se ejecutan en el servidor (eficiencia)
• Se tiene un mayor grado de control de
tipos y de errores.
• Facilita la reutilización de software.
ActiveX
• Las componentes ActiveX se almacenan
en librerías de Objetos de dos clases: .dll
y .exe.
• .dll: librería que ejecuta en el mismo
espacio de trabajo del programa que la
usa.
• .exe librería que se ejecuta en su propio
espacio de trabajo(*).
(*) porción de memoria que pertenece a un programa
ActiveX
• Encapsulan todo su funcionamiento
interno.
• Interactuamos con las componentes por
medio de las propiedades, métodos y
eventos del objeto.
• Se pueden utilizar las componentes
ActiveX sin importar el lenguaje en que
estén escritas.
ActiveX
• Se puede invocar la ejecución de
componentes ActiveX desde una
interacción web del usuario.
• Se utiliza el tag <object></object> para
identificar el objeto. Sintaxis:
<OBJECT RUNAT=Server SCOPE APPLICATION|SESSION
ID= NombreInstancia
PROGID=“librería.objeto”></OBJECT>
• Podemos crear un objeto compartido por
toda la aplicación en Global.asa
Creación ActiveX con VB
• Objetivo: Crear una componente ActiveX
que podamos invocar desde ASP.
• Esta componente permitirá tomar un área
de texto convertirá los CRLF a tags <BR>
de HTML y viceversa.
• Se harán páginas ASP para probar el
funcionamiento del ActiveX.
Creación Activex con VB
• Proyecto (ActxDipl) y una clase
(ConvTextArea). Referenciar en ASP igual
a componentes Microsoft:
Set Obj = Server.CreateObject(“Proyecto.Clase”)
• En nuestro caso usaremos:
Set Obj = Server.CreateObject(“ActxDipl.ConvTextArea”)
Creación ActiveX con VB
1.- Creación Nuevo Proyecto Dll
Creación ActiveX con VB
2.- Definición del Referencia a Objetos ASP
Creación ActiveX con VB
3.- Definición del proyecto (componente)
Creación ActiveX con VB
4.- Definición de Clases
Creación ActiveX con VB
5.- Definición de Métodos y Propiedades
Creación ActiveX con VB
6.1- Creación de la Componente como DLL
Creación ActiveX con VB
6.2- Opciones Creación de la DLL
Registro de ActiveX
• Se debe registrar la componente ActiveX en el servidor
antes de utilizarla. (regsvr32)