Aplicaciones Internet con Tecnologías Microsoft (ASP y ADO) Resumen.

Post on 07-Mar-2015

9 views 4 download

Transcript of Aplicaciones Internet con Tecnologías Microsoft (ASP y ADO) Resumen.

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 navegadorECMA - 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 variableDim x

</Script>

<% ‘Definir una variableDim 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 CaseSelect Case expresión_prueba

[Case lista_expresiones1

[bloqueInstrucciones1]]

[Case lista_expresiones2

[bloqueInstrucciones2]]

.

.

[Case Else

[bloqueInstruccionesN]]

End Select

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 iDim strPalosBaraja(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)Nexttexto.value = strEnd Sub

</Script>

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 objetoSet 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.valueasigna “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

TTP

HNavegador

Web

ServidorWeb

(IIS*)

Fuente deDatos

ITPAplicaciones

(Aplicación)

Servidor Web Servidor de Aplicaciones

Database Server

Herramientasde Desarrollo

Active Server Pages(Asp.dll)

Request

Response

*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 Password• Checkbox Radio• Hidden File• Submit Reset• Button Image• TextArea

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

Procedimiento

Página

Sesión

Aplicación

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ónDefault.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áginaHTML

Navegador

http://help.netscape.com/kb/client/970226-2.htmlhttp://www.htmlgoodies.com/cookie.html

Uso de Cookies

Servidor Web

Aplicación

Response.Cookies

Request.Cookies

El viaje de las Cookies

AplicaciónServidor Web

HTTP

PáginaHTML

PáginaHTML

Navegador

Response.Cookies

Request.Cookies

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. Conectarse a la fuente de datos.2. Definir la información que se desea recuperar.3. Recuperar y manipular los datos recibidos.4. 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, OpcionesDonde: 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-983A-00C04FC29E33">

</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-983A-00C04FC29E36"

</OBJECT>

Obtención de Datos

• Con la instancia así creada se pueden obtener datos de un servidor remoto mediante:

1. Propiedad URLWith oRDC

.URL = “http://Diplomado/VerClientes.asp?País=Alemania”

.Refresh

End With

Obtención de Datos

2. Propiedades Server/Connect/SqlWith 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 HandlerWith 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 &lt y &gt.

• 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,HelpContext)

– 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 errorEl 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 SeguridadIf 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= NombreInstanciaPROGID=“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 VB1.- Creación Nuevo Proyecto Dll

Creación ActiveX con VB2.- Definición del Referencia a Objetos ASP

Creación ActiveX con VB3.- Definición del proyecto (componente)

Creación ActiveX con VB4.- Definición de Clases

Creación ActiveX con VB5.- Definición de Métodos y Propiedades

Creación ActiveX con VB6.1- Creación de la Componente como DLL

Creación ActiveX con VB6.2- Opciones Creación de la DLL

Registro de ActiveX

• Se debe registrar la componente ActiveX en el servidor antes de utilizarla. (regsvr32)