Your SlideShare is downloading. ×
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
20001020 Programación ASP y WML
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

20001020 Programación ASP y WML

3,462

Published on

Artículo publicado en 2000 en el site WMLClub sobre el desarrollo de páginas WML usando tecnología ASP para aplicaciones WAP.

Artículo publicado en 2000 en el site WMLClub sobre el desarrollo de páginas WML usando tecnología ASP para aplicaciones WAP.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,462
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Publicado en el WMLClub en Octubre de 2000PROGRAMACION ASP y WMLPor Santiago Márquez Solís 1.- INTRODUCCIÓN A LA PROGRAMACIÓN EN ASP Y WML Hola amigos, en este nuevo artículo dejamos de lado los entornos de desarrollo que hemos estado viendo en las últimas semanas para adentrarnos en aspectos más prácticos y sin lugar a duda mucho más interesantes dentro del mundo WAP. En este artículo vamos tratar de establecer los conocimientos necesarios para adentrarnos en la programación de páginas WML mucho más interactivas y todo ello gracias a una tecnología sumamente fácil de utilizar y que ha demostrado ser lo suficientemente potente a la par que versátil para ser usada dentro de los desarrollos móviles, estamos hablando de ASP o Active Server Pages. El objetivo de este mini curso es que cualquier persona con conocimientos de WML sea capaz de usar ASP para aprovechar sus características básicas en sus propios proyectos por lo que principalmente este artículo supondrá conocimientos de WML centrándome fundamentalmente en las características que hacen de ASP tan especial para nosotros, según esto hablaremos en primer lugar de las características de ASP, pasando a ver posteriormente la configuración del servidor Web Internet Information Server (en este artículo vamos a centrarnos exclusivamente en tecnología Microsoft por motivos obvios) para finalizar con las posibilidades avanzadas que tenemos con el Microsoft Transaction Server (aquí encontrarás el componente necesario para desarrollar este apartado) y el registro de componentes. 2.- INTRODUCCIÓN A ASP La definición que vais a encontraros en multitud de lugares sobre ASP es algo muy similar a lo siguiente: entorno para crear y ejecutar aplicaciones dinámicas e interactivas en la Web es decir, mediante el uso de ASP pasamos a mostrar en los navegadores distinto contenido en función de las acciones/preferencias del usuario, el ejemplo más claro de uso lo tenemos en las consultas a bases de datos donde en función de los datos que el usuario selecciona en su terminal obtiene unas respuestas u otras o por poner otro ejemplo una aplicación de comercio electrónico en la que se implemente un carrito de la compra y se vaya llenando con los productos que vamos seleccionando de las diferentes listas de productos que mostremos. Como veis la potencia que tenemos es enorme aunque su mecanismo de funcionamiento es básicamente muy sencillo: las páginas ASP comienzan a ejecutarse cuando un usuario solicita un archivo .asp al servidor Web a través del navegador, seguidamente el propio servidor web llama a una parte de su arquitectura que implementa ASP, en ese momento es cuando se lee el archivo solicitado, se ejecuta las secuencias de comandos contenidas en el fichero y se envía los resultados al explorador del cliente. Como veis por la explicación anterior todas las secuencias de comandos se ejecutan en el servidor, y no en el cliente, de este modo descargamos al navegador cliente de hacer trabajo innecesario liberando el canal de comunicación de datos superfluos e innecesarios para el usuario (fundamental en las comunicaciones en general pero en telefonía móvil mucho más), además dado que todo se realiza en el lado servidor (que generalmente suele ser un equipo potente) se mejora el rendimiento y conseguimos nuestro propósito inicial que comentábamos al principio, obtener páginas dinámicas en el terminal del usuario, en el cuadro 1 tenéis un pequeño resumen de las características fundamentales de las páginas ASP algunas de ellas las comentaremos más adelante. Los ficheros se identifican por .ASP Las secuencias de comandos se ejecutan en el servidor Las secuencias de comandos nunca se visualizan en el explorador del cliente solo sus resultados Los archivos .ASP son ficheros normales de texto que contienen código ASP y se comportan como ficheros WML normales cuando los devuelve el servidor Web. Pueden mezclar en una misma página diferentes secuencias de comandos de lenguajes distintos por ejemplo VBScript y Jscript (aunque esta práctica no es muy 1
  • 2. recomendable) Mejora del rendimiento y eficiencia de la red Aumento de la interactividad de las páginas Fácil de aprender Cuadro 1. Características de ASPBien con lo visto hasta ahora tenemos una primera idea de lo que es ASP antes de continuarvamos a ver como funciona Internet Information Server y que opciones de configuracióntenemos disponibles dentro del mismo para trabajar con ASP.3.- CONFIGURACIÓN DE INTERNET INFORMATION SERVER PARA TRABAJAR CON ASPComo todos sabéis IIS se puede decir que es el software estándar de Microsoft para crear sitiosWeb en Windows NT , hay que distinguir entre dos versiones distintas de este programa, unapara NT Server que recibe el nombre propiamente dicho de Internet Information Server o IIS yla versión para NT Workstation denominada Personal Web Server (PWS) y que es un IISrecortado en el sentido de que solamente admite un sitio Web por máquina y las opciones deadministración y configuración son muy limitadas, como es lógico nosotros vamos a centrarnosen IIS en este artículo (en la figura 1 tenéis el aspecto general del programa). Figura 1. Internet Information ServerActualmente la última versión disponible para NT es la 4. (está disponible la versión 5.0 paraWindows 2000) que podemos conseguir desde Microsoft descargando el Option Pack, una suitede programas orientados todos a implementar servicios de Internet de una manera muysencilla. Para descargar el Option Pack podéis hacerlo desde esta dirección:http://www.microsoft.com/ntserver/nts/downloads/recommended/NT4OptPk/default.aspNo olvidéis leer el acuerdo de licencia antes de descargar el programa así como toda lainformación adicional que tenéis en el Web. Una vez que tengáis el software bajado e instalado(no entramos en estos detalles por que se aleja de nuestro tema) dispondremos de los serviciosbásicos siguientes: WWW, FTP, Correo y NEWS y el soporte nativo de páginas ASP, además lainterfaz que presenta el IIS es una interfaz estándar que Microsoft ha desarrollado bajo elnombre de MMC o Microsoft Management Console, que se basa en el uso de una interfaz común(consola) para las distintas aplicaciones pero que a la vez están personalizadas para acceder alas distintas opciones particulares que cada aplicación presenta, con esto tenemos la ventajaque bajo el mismo programa (la MMC) podemos tener diferentes aplicaciones ejecutándose conlo que las labores de administración, aprendizaje y acceso a los distintos programas se 2
  • 3. simplifica mucho, por ejemplo, dos programas que hacen uso de la MMC son el IIS y la últimaversión de SQL Server.Las opciones que Internet Information Server utiliza para la configuración de las páginas ASP seencuentran dentro de las propiedades del sitio Web que estemos desarrollando, de esta manerapodemos configurar diferentes opciones de ASP para distintos sites. Según esto para acceder aestas características solamente tenemos que posicionarnos sobre uno de los nodos querepresentan un sitio Web y dar al botón de Action (Acción) situado en la parte superior de laconsola y seleccionar la opción de Properties (Propiedades), se nos abrirá un cuadro de dialogosimilar al siguiente (figura 2): Figura 2. Cuadro de Propiedades en IISA continuación debemos de seleccionar la pestaña de Directorio Particular y una vez aquí hacerclic en el botón de Configuración dentro de la sección de Configuración de la Aplicación, una vezhecho esto tendremos el cuadro de la figura 3 que posee tres pestañas diferentes dos de lascuales son las que contienen la información de configuración de ASP en IIS. 3
  • 4. Figura 3. Configuración de ASP desde IISDesde la pestaña de Opciones de Aplicación accedemos a las siguientes características: o Habilitar estado de sesión: Sirve para indicar la duración del contenido generado por nuestras secuencias de comandos o Habilitar Buffer: Indica si nuestras páginas van hacer uso o no del buffer, si indicamos aqui que si se activa, el efecto se aplica para todas las páginas de nuestra aplicación aunque si queremos activarla a nivel de página particular podemos hacerlo mediante <% Response.Buffer = True %> o Habilitar rutas de acceso primarias o Lenguaje ASP predeterminado: Sin comentarios por defecto VBScript pero puede ser cualquiera para el cual tengamos el interprete Iinstalado. o Tiempo limite de archivo de comandos ASP: Tiempo que puede tardar un archivo ASP en generarse completamente, se puede modificar con Server.ScriptTimeout.Desde la pestaña Depuración de Aplicaciones se accede a las opciones siguientes sobre: o Habilitar depuración de secuencia de comandos en el servidor: Indica que la depuración de la secuencia de comandos en caso de error se realizará en el servidor. o Habilitar depuración de secuencia de comandos en el cliente: Como la opción anterior pero en el cliente. o Enviar mensajes de error detallados al cliente: Al producirse un error enviará al cliente el mensaje de error que haya sucedido de manera detallada. o Enviar este mensaje de error al cliente: Al producirse un error se enviará siempre el mismo mensaje sea cual sea el error.En el cuadro 2 tenéis algunas recomendaciones sobre el manejo de IIS que pueden seros deutilidad: IIS 4.o utiliza la seguridad de Windows NT y se recomienda usar el sistema de archivos NTFS de NT. Cuando se instala IIS se crea automáticamente en NT el usuario anónimo con el nombre IUSR_Nombre del equipo y con la misma contraseña aleatoria que en IIS y el derecho de Inicio de Sesión en Local. Conviene revisar los derechos de los grupos que tienen los grupos Todos e Invitados a los que pertenece el 4
  • 5. usuario anónimo. Para que el usuario anónimo funcione correctamente debemos activar Permitir Anónimos en las propiedades del servicio Web. Cuadro 2. Consejos sobre IIS3.1.- CONFIGURACION DE LOS MIME TYPES EN INTERNET INFORMATION SERVERNo podemos finalizar el estudio de la configuración de IIS para trabajar con ASP sin hacer unapequeña referencia a la configuración de los MIME TYPES necesarios para trabajar con WML,como todos sabéis los MIME TYPES son un conjunto de extensiones necesarias que hayconfigurar en el servidor Web para indicar a los terminales (browsers) que tipo de documentoses capaz de proporcionar el servidor Web, en WML los tipos que debemos de añadir (de sobraconocidos por todos vosotros) son los siguientes: MIME TYPE Tipo de contenido Mime Type Extensión Fichero WML text/vnd.wap.wml wml Bitmap image/vnd.wap.wbmp wbmp WML Compilado application/vnd.wap.wmlc wmlc Fichero WMLScript text/vnd.wap.wmlscript wmls WMLScript compilado application/vnd.wap.wmlscriptc wmlscDesde el Internet Information Server tenemos que realizar la siguiente secuencia de pasos parasu inclusión: o 1. - En primer lugar debemos de abrir el cuadro de dialogo de las propiedades del sitio Web en el cual queremos configurar los MIME TYPES de WML, al igual que sucedía con la configuración de las páginas ASP que veíamos antes, los MIME TYPES se configuran por cada site que estemos desarrollando lo cual nos proporciona una gran independencia de unos sitios frente a otros aunque aumenta el trabajo de administración. o 2. - En segundo lugar tenemos que seleccionar la pestaña de Encabezados HTTP y una vez aquí tenemos una sección llamada Mime Types (o Tipos Mime) con un botón que nos permitirá incluir los distintos tipos que necesitemos indicando el tipo de extensión y el tipo de contenido asociado, en la figura podéis ver el aspecto que presentaría dicha pantalla después de haber incluidos los tipos necesarios para WML. 5
  • 6. Figura 4. MIME TYPES en Internet Information Server4.- DESARROLLO DE APLICACIONES EN ASPSi hemos seguido los pasos anteriores no deberíamos de tener ningún problema para quenuestras páginas ASP funcionen correctamente en conjunción con WML, a continuación vamos acontar las características básicas que debemos saber cuando desarrollamos con ASP, antes decontinuar queremos indicar que el lenguaje de secuencia de comandos que vamos a utilizar a lolargo de todo el artículo es VBScript debido a su sencillez y potencia. No obstante no quieroconvertir esta mini guía de ASP/WML en un curso sobre VBScript pero dado que necesitamosalgún lenguaje de secuencia de comando para los ejemplos contaremos brevemente en lospuntos siguientes los fundamentos básicos sobre VBScript que necesitaremos para podertrabajar.Una pagina ASP mezcla en el mismo archivo secuencias de comandos con código WMLstandard. Las secuencias de comandos se distinguen del resto del texto del archivo mediantedelimitadores que vienen representados por los símbolos "<%" y "%>" para enmarcar lassecuencias de comandos.Por ejemplo en el siguiente programa devolvemos la hora actual haciendo uso de una funciónde Vbscript llamada Now que nos da la hora: <% Response.ContentType = "text/vnd.wap.wml" %> <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="Principal" title="Principal"> <p><b><u>EJEMPLO 1 </u></b></p> <p>Son las: <%= Now () %></p> </card> </wml> 6
  • 7. Cuando el servidor Web procese la pagina nos devolverá el siguiente resultado en nuestroterminal y como podemos ver por la figura no se recibe el código asp, sino el resultado de laejecución de dicho código. Figura 5. Ejemplo 1Dentro de los delimitadores ASP se puede incluir cualquier instrucción, expresión,procedimiento u operador válido para el lenguaje de programación que estemos usando.4.1.- FUNDAMENTOS BASICOS DE VBSCRIPTASP viene de forma nativa con dos motores de secuencia de comandos: Microsoft Visual BasicScriptig Edition (VBScript) y Microsoft Jscript aunque se puede instalar y utilizar motores deotros lenguajes, por ejemplo Perl. El mecanismo para establecer el lenguaje principal desecuencia de comandos depende de si lo que queremos es activarlo en una única página o entoda la aplicación, en caso de ser en toda la aplicación podemos hacerlo como veíamos antes enel apartado de configuración de IIS para uso de ASP, si lo que queremos es establecer ellenguaje principal de secuencia de comandos en una única página, hay que agregar la directiva<%@ LANGUAGE%> al principio del archivo .asp con una sintaxis similar a la siguiente:<%@ LANGUAGE=Lenguaje_secuencia_comandos %>en donde Lenguaje_secuencia_comandos es el lenguaje principal de secuencia de comandosque va a establecer en esa página concreta. Es importante señalar que el valor de la página (elasignado por la directiva Language) invalida el valor global dado a todas las páginas de laaplicación. En el cuadro 3 se resumen algunas de las características básicas de VBScript. VBScript acepta comentarios marcados con apóstrofes que se eliminan al procesarse la secuencia de comandos y no se envían al explorador. VBScript no distingue entre mayúsculas y minúsculas. Es muy similar a Visual Basic por lo que su aprendizaje es muy sencillo. Solo tiene un tipo de datos, el tipo Variant aunque existen subtipos implícitos dentro de él para manipular la información de manera más precisa. No es necesario declarar las variables que usemos (si conveniente) Restricciones del los nombres de variables: Debe comenzar con un carácter alfabético No puede contener un punto No debe superar los 255 caracteres Cuadro 3. Características básicas de VBScript4.1.1.- TIPOS DE DATOS, VARIABLES Y ARRAYS EN VBSCRIPTVbscript solo tiene un tipo de datos llamado Variant, este tipo es un es una clase especial dedatos que puede contener diferentes tipos de información, de modo que su comportamientovaria en función de la información que se encuentra almacenada en él, solo hay una excepcióna esta regla y es cuando forzamos de manera explícita que los números se comporten comocadenas poniéndolos entre comillas (" "). 7
  • 8. Un aspecto importante que existe en VBScript es que las variables en no necesitan dedeclaración explícita para poder usarla, aunque yo recomiendo su declaración para prevenirposibles errores, si habéis programado alguna vez en Visual Basic sabéis que existe laposibilidad de forzar la declaración de variables incluyendo la sentencia Option Explicit alprincipio de un módulo de código, en VBScript se admite esta sintaxis al principio de la página.asp de manera que sea obligado la declaración de variables, en este caso si queremos haceruso de Option Explicit no debemos olvidar incluirlo dentro de los delimitadores <% %>.Para declarar una variable se utiliza una sintaxis similar a la siguiente:<% Dim Mivariable %>El operador de asignación es el = y puede usarse para dar a la variable valores numéricos(MiVariable = 4), de cadena (MiVariable = "Hola") y fecha (MiVariable=#12-1-1999# )Para finalizar con las variables en VBScript vamos a hacer un pequeño comentario acerca de laposibilidad existente en el lenguaje de hacer uso de arrays, para declarar una variable de estetipo solo tenemos que posponer al nombre de la variable unos paréntesis dentro de los cualesse sitúa el número de elementos de los que constará el array, en caso de tener múltiplesdimensiones se separan por comas (en VbScript el límite está en 60 dimensiones distintas unnúmero lo suficientemente alto como para poder trabajar con comodidad).Por ejemplo:Dim A (5) -> Declara un array de una dimensión de 5 elementosDim B (4,3) -> Declara un array de dos dimensiones (tabla) de 4 y 3 elementosrespectivamentePara asignar un valor a una posición del array simplemente nos referiremos al indice del arrayque queremos actualizar:A(2) = 12 ->Actualiza el elemento 2 del arrayY de igual modo si queremos recuperar un valor almacenado:Valor = A(2)Existen además dos operadores que son muy útiles y que vienen heredados del mundo deVisual Basic, estamos hablando de Redim y Preserve que son utilizados para crear lo que sedenomina arrays dinámicos, son muy útiles cuando no sabemos el número de dimensiones quenuestro array puede tener a priori. Para hacer uso de ellos lo que hacemos es que en ladeclaración del array lo que hacemos es no especificar ninguna dimensión (Dim A()) yposteriormente con Redim indicaremos que dimensiones queremos darle (por ejemplo RedimA(5), de este modo asignamos una dimensión al array A y le indicamos que dicha dimensióntiene 5 elementos), sucede que al hacer uso de Redim se produce el borrado de los elementosque el array contuviese, es decir si ahora hacemos Redim A(10) y el array (el que tenia 5elementos) hubiese contenido algún valor almacenado dicho valor se perdería, para evitar estopodemos hacer uso de Preserve a continuación de Redim de manera que no se pierde elcontenido previo del array (salvo que no estemos poniendo menos elementos en el array omenos dimensiones, por ejemplo Redim Preserve A(3) los elementos A(4) y A(5) se perderían)4.1.2.- CONTROL DE FLUJO EN VBSCRIPTEn VBScript los elementos de control de flujo para nuestros programas son los típicos decualquier lenguaje de programación, solo hacemos una pequeña alusión a los mismos porquelos usaremos más adelante, tenemos: o Sentencia condicionales: representadas por el conjunto de expresiones siguientes: IF Condicion THEN .... Acciones ELSE .... Acciones END IF Si se cumple la condición el flujo del programa nos llevará por la primera rama del IF y sino por la segunda. o Bucles: Tenemos dos fundamentalmente, el bucle DO WHILE y el bucle FOR, con una sintaxis como sigue: 8
  • 9. DO WHILE Condicion .... Acciones LOOP o En este caso las acciones que hay dentro del bucle se ejecutan mientras la condicion sea verdadera. FOR Variable=ValorInicio TO ValorFIn ..... Acciones NEXTY en este otro caso las acciones se ejecutan hasta que la Variable alcanza el valor de ValorFin,en cada iteraccion se incrementa su valor en 1 comenzado en el valor marcado por ValorInicio.Un tipo de bucle FOR especial en VBScript es el que nos permite recorrer colecciones (objetoscontenedores de otros objetos), la sintaxis es similar: FOR EACH Elemento IN Coleccion …. Acciones NEXTEste bucle nos recorre todos los elementos que haya dentro de la coleccion indicada. Los buclesy las sentencias condicionales pueden anidarse unas con otras tantas veces como se quiera.Veamos un ejemplo que hace uso de este tipo de estructuras de control y bucles en un pequeñoprograma WML que nos va indicar desde 1 hasta 10 que números son par y cuales impares,fijaros en el uso de la expresión <%= Indice %> para devolver el valor del indice del bucle for,ya que esta es la forma de devolver un valor de una variable de secuencia de comandos anuestra aplicación. El código del programa es el siguiente: <% Response.ContentType = "text/vnd.wap.wml" %> <?xml version="1.0"? > <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml" > <wml > <card id="Principal" title="Principal" > <p ><b ><u >EJEMPLO 2 </u ></b ></p > <% Dim Indice FOR Indice=1 TO 10 IF (Indice MOD 2)=0 THEN % > <p >El <%= Indice % > Es un numero par </p > <% ELSE % > <p >El <%= Indice % > Es un numero impar </p > <% END IF % > <% NEXT % > </card > </wml >En pantalla tenemos el siguiente resultado: Figura 6. Ejemplo 2 9
  • 10. 4.2.- OBJETOS INTEGRADOS EN ASPDentro de ASP existen una serie de objetos integrados que aportan funcionalidad añadida y quepueden ser utilizados dentro de nuestros desarrollos. Estos objetos son los siguientes:Objeto Session: el objeto Session permite almacenar la información necesaria para unadeterminada sesión de usuario. Las variables almacenadas en el objeto Session no se descartancuando el usuario pasa de una página a otra dentro de la aplicación, si no que dichas variablespersisten durante todo el tiempo que el usuario tiene acceso a las páginas de la aplicación.También puede utilizar los métodos de Session para terminar explícitamente una sesión yestablecer el periodo de tiempo de espera de inactividad de las sesiones. Las variables deSession de un cliente solo pueden ser accedidas por ese cliente. El servidor creaautomáticamente el objeto Session cuando un usuario que no tenga actualmente una sesiónsolicita una pagina Web de la aplicación.El mecanismo para crear variables dentro del objeto Session es sencillo y sigue un esquemacomo el siguiente:<% Session("Nomvariable")= valor %><% Session (“Marca”)=”FORD” %> pudiendo recuperar el valor almacenado en dicha variabledel modo siguiente:<% MarcaF = Session(“Marca”) %>Generalmente las variables de este objeto se declaran dentro del fichero Global.ASA.El método más usado de este objeto es Abandom que destruye todos los objetos y variablesalmacenados en el objeto Session (<% Session.Abandon %>)Objeto Application: se utiliza para compartir información entre todos los usuarios de unaaplicación. Este objeto dispone de dos métodos básicos que se utilizan para asegurar laintegridad cuando múltiples usuarios están accediendo a a sus propiedades. Estos métodos sonLock y Unlock. El método Lock bloquea el objeto Application de manera que sólo un clientepuede modificar/acceder a las propiedades de este objeto al mismo tiempo. El método Unlocktiene el efecto contrario y desbloquea el objeto Application para que pueda ser modificado porotro cliente después de haberse bloqueado mediante el método Lock. Si no se llama a estemétodo de forma explícita, el servidor Web desbloquea el objeto Application cuando el archivo.asp termina o transcurre su tiempo de espera. Un ejemplo muy claro de uso de Application essuponiendo definida un propiedad llamada Nvisitas (declarada dentro del archivo Global.asa, lasvariables del objeto Application se declaran del mismo modo que el objeto Session) quecontiene el número de visitantes de la página queremos que cuando se actualice dichaactualización se realice de manera exclusiva por cada usuario cliente de manera que quede alfinalizar el proceso la propiedad en un estado consistente, para asegurar esto podemos haceruso de Lock y Unlock del modo siguiente:<% Application.Lock<br>Application(“Nvisitas”) = Application(“Nvisitas”)+1<br>Application.Unlock %>Objeto Request: sirve para tener acceso a la información que se pasa en las peticiones HTTP,como son los parámetros que se pasan desde los documentos WML mediante los métodos POSTy GET de HTTP o las cookies. El objeto Request se caracteriza por disponer de variascolecciones que se utilizan para acceder a la información pasada por el terminal de manera quedependiendo de la forma en que enviemos los datos al servidor tendremos que utilizar unas uotras. Las mas útiles son: o FORM que recupera datos enviados desde un formulario mediante el método POST. o QUERYSTRING recupera datos enviados como cadena de consulta HTTP. o COOKIES recupera los valores de las Cookies. oObjeto Response: el objeto Response se utiliza para controlar la información que se envía alusuario. Esto incluye el envío de información directamente al terminal, la redirección delexplorador a otra dirección URL o el establecimiento de valores de las cookies (más adelantehablamos con más detalle sobre este tema). Entre los métodos mas interesantes del objetoResponse están los siguientes: o Write: Escribe una cadena de resultado en el terminal del cliente. Como curiosidad decir que cuando hacemos uso de la expresión <%=variable%> para devolver el valor de una variable estamos usando el método Response.Write implicitamente. Por ejemplo si hacemos algo similar a lo siguiente: 10
  • 11. <% response.write “ Curso de WML/ASP “ %> obtendriamos en el display de nuestro terminal el mensaje Curso de WML/ASP. o Redirect: Este método hace que el terminal se conecte con una dirección diferente. Su uso y sintaxis son también muy sencillos: <% response.redirect <a href://www.cocotero.com>www.cocotero.es</a>%> nos mandaria a la página de cocotero Objeto Server: Da acceso a los métodos y las propiedades del servidor. De este objeto conviene destacar lo siguiente: o Con respecto a las propiedades tenemos a ScriptTimeout que especifica la cantidad maxima de tiempo que puede tardar la ejecución de una secuencia de comandos, conviene tener este parámetro muy en cuenta ya que muchos errores que podemos obtener en ASP se deben a falta de tiempo en la ejecución del script (pocos recursos, acceso a base de datos muy complicados etc) y que pueden volvernos locos ante un script aparentemente correcto. El tiempo asignado a esta propiedad viene dado en segundos, siendo su sintaxis similar a: Server.ScriptTimeout = nº de segundos o El método más comunmente usado con el objeto Server es el método CreateObject que sirve para crear una instancia de un componente ActiveX en el servidor. Su sintaxis es la siguiente: Server.CreateObject (Objeto) Donde Objeto es el tipo de instancia que queremos crear, por ejemplo para una conexión contra una base de datos podriamos utilizar objetos ADO del modo siguiente: Server.CreateObject (ADO.Connection) En la tabla siguiente tenéis una relación de todos los métodos, colecciones y eventos que forman parte de los objetos anteriormente explicados y que puede serviros como referencia: OBJETO Application Session Server Request Response Client Certificate Cookies Contents Contents Script Formcolecciones Static Cookies Satic Objects Timeout Query Objects String Server variables Add Header Append To Log Create Binary Write Object Lock Binary ClearMétodos Abandon Map path unlock Read End URL Flush Encode Redirect Write Session_On Application_On Start StartEventos - - - Application_On End Session_On End Buffer Cache Control Charset Code Page Content Type LCID ExpiresPropiedades - - Total Byte Session ID Expires Asolute Time Out Is Client Conect ed PICS Status 11
  • 12. EL ARCHIVO GLOBAL.ASADentro de ASP existe un fichero que se sitúa dentro del directorio raíz del site que estemosdesarrollando y cuyo nombre es Global.asa, la importancia de este fichero radica en quepermite la automatización de los cuatro eventos básicos de nuestro servidor sobre los objetosApplication y Session que veiamos antes. En el cuadro tenéis la estructura que presenta estefichero. <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart End Sub Sub Application_OnEnd End Sub Sub Session_OnStart End Sub Sub Session_OnEnd End Sub </SCRIPT> Cuadro 3. Estructura fichero Global.asaSi os fijáis en el fichero veréis que existen dos eventos asociados (OnStart y OnEnd) asociadosa dos objetos distintos (Application y Session), el objeto Session dentro del fichero Global.asaya vimos que se utiliza para establecer los parámetros que serán particulares para cada sesiónde usuario que se conecte a nuestro servidor, por otro lado el objeto Application se usa paraestablecer los parámetros que serán globales, es decir, compartidos para todas las sesiones quese inicien en nuestro servidor. Concretamente la ejecución de cada evento se produce en lossiguientes instantes: o Application_OnStart: Se ejecuta antes de que se cree nueva sesión por parte del primer cliente que se conecta al servidor. o Application_OnEnd: Se ejecuta justo cuando la aplicación termina. o Session_OnStart: Se ejecuta cuando el servidor crea una nueva sesión de manera que los comandos se ejecutan antes de enviar la página solicitada al cliente o Session_OnEnd: Se ejecuta cuando se abandona o se supera el tiempo de espera de una sesión.COOKIESDentro de nuestro viaje por el mundo de ASP solamente nos queda hablar de las cookies, estemecanismo nos permite guardar información relativa a un usuario a lo largo de sus distintosaccesos a nuestras páginas, no es muy recomendable basar nuestros desarrollos en ellas yaque no todos los dispositivos las soportan bien pero a veces resultan útiles. Las cookies sealmacenan en los terminales de los clientes y se transmiten en las cabeceras cuando se realizala comunicación http. En ASP las cookies se implementan como colecciones y se usan mediantelos objetos integrados Request y Response que vimos anteriormente. La sintaxis demanipulación de cookies es la siguiente: Response.Cookies(cookie)[(clave)|.atributo] = valor Request.Cookies(cookie)(clave)Ejemplos:Enviar una cookie simple: <% Response.Cookies (“IDUsuario”)=”12” %>Recuperar el valor de esa cookie : 12
  • 13. <% ID=Request.Cookies (“IDUsuario”) %>Veamos el código anterior dentro de un programa WML: < % Response.ContentType = "text/vnd.wap.wml" %> <% Response.Cookies ("IDUsuario")="12" %> <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="Principal" title="Principal">> <p><b><u>EJEMPLO 3 </u></b></p> <% DIM ID ID=Request.Cookies ("IDUsuario") %> <p> El ID de usuario es: <%= ID %> </p> </card> </wml>Si nos fijamos en el código anterior veremos que se envía al terminal del cliente una cookiellamada IDUsuario con un número identificativo, y en el cuerpo del programa se retorna dichacookie para mostrarla en el terminal (ver figura), un uso típico de las cookies podría ser acontinuación examinar en una base de datos las preferencias sobre nuestro site que dichousuario tenia y proceder a enviárselas pero esto queda ya como ejercicio para vosotros. Esimportante fijarnos en las cookies que tenemos almacenadas en nuestro terminal para ver quees lo que está pasando, si os fijáis en la figura podéis ver que tenemos una cookie llamadaIDUsuario y vemos que tenemos su tiempo de vida, el valor que tiene, la versión querepresenta (si tiene alguna), etc. Figura 7. Cookies enviadas 13
  • 14. Figura 8. Ejemplo 3Es importante que el envío de las cookies se realice previamente al envío de la página ya queesta información viaja dentro del encabezado HTTP por ese motivo veréis en el código que elenvío de la cookie se realiza fuera de la baraja.5.- MICROSOFT TRANSACTION SERVERUna de las posibilidades más interesantes que tenemos con el Option Pack y que podemosutilizar junto con el IIS es el Microsoft Transaction Server, este programa que actúa comoadministrador de recursos nos permite registrar recursos dentro de él de manera que podemosllamarlos desde nuestras páginas ASP, en la figura teneis el aspecto que presenta dichoprograma: Figura 9. Microsoft Transaction ServerLa teoría que hay detrás de MTS es muy sencilla y se basa en el concepto de transacción,entendiendo como tal a una unidad de trabajo que se completa o falla en su conjunto, no sepermite que algunas operaciones que componen la transacción se completen y otrasoperaciones no ya que el fundamento de la transacción es dejar el objeto sobre el que serealiza en un estado consistente, de este modo MTS actúa como un administrador de recursossiendo su modo de trabajo siempre el mismo y que se detalla a continuación: o Un cliente pide un objeto del Modelo de Objetos Componentes (COM) que se ejecuta bajo control de MTS. En nuestro caso particular esta petición viene dada como una llamada a una página ASP, la cual a su vez hace uso de un objeto (mediante un 14
  • 15. Server.CreateObject) que se encuentra registrado dentro del MTS. Por ejemplo podemos tener un componente para acceder a una base de datos y que contenga todos los métodos necesarios para manipularla, de esta manera desde nuestro código solo tendriamos que crear objetos de este tipo de componente y llamar a su métodos para que nos devuelva datos, inicie o cierre una conexión con el servidor, etc de una manera muy cómoda y a la vez abstrayendonos de este tipo de particularidades, ya que no perdemos el tiempo en la implementación de la conexión con la base de datos, e incluso podemos reutilizar módulos previamente diseñados. o MTS crea un contexto de objeto que asocia al objeto de manera que el cliente puede hacer uso de él o Cuando el objeto termina su tarea se llama a un método especial denominado SetComplete para indicar que termino de manera correcta o a SetAbort para indicar todo lo contrario que ha habido un error.6.1.- ASP Y MTS. ARQUITECTURA GLOBALCon la aparición de IIS versión 4.0 se produjo la integración de la tecnología ASP con MTS loque ha supuesto la posibilidad de poder aplicar el concepto transaccional con todas las ventajasque ello aporta. Concretamente la arquitectura que utiliza IIS y MTS para hacer uso de ASP noes demasiado complicada consiste en poner todo el código ASP junto con la interfaz deprogramación de aplicaciones del servidor Internet (lo que se conoce comumente como ISAPI)en un componente denominado Administrador de Aplicaciones Web o WAM que a su vez seregistra como un componente en el MTS de este modo todos los servicios que tenemosdisponibles desde MTS (Ver cuadro) se encuentran accesibles para la WAM. Los componentes que forman parte de MTS y que proporcionan servicios son los siguientes: Application Components MTS Executive Server Processes Resource Managers Resource Dispensers Microsoft Distributed Transaction Coordinator MTS Explorer Cuadro 4. Características de MTSPero, ¿como podemos crear nuestros propios componentes para usarlos dentro de nuestraspropias páginas?, el mecanismo es siempre el mismo y no es demasiado complicado, lo quetenemos que hacer es crear una DLL que contenga toda la funcionalidad que queremos incluirdentro de nuestro componente, por ejemplo esta DLL podemos hacerla en Visual Basic creandoun nuevo proyecto del tipo ActiveX DLL y creando un modulo de clase que contenga losmétodos.Bien esto sería la parte teórica, veamos a continuación como podemos usar estascaracterísticas dentro de nuestros desarrollos, para ello vamos a hacer uso de la dllBaseDatos.Dll. Esta dll es una dll que contiene una clase denominada CbaseDatos dentro de lacual sean implementados tres métodos distintos denominados BD_Conectar, BD_Desconectar yBD_EjecutarSQL. El primer metodo nos permite conectarnos a una base de datos a través deODBC pasandole los distintos parámetros que forman una cadena de conexión, esto es nombrede DSN, usuario y password. Una vez que la conexión con la base de datos se ha establecidopodemos usar el método BD_EjecutarSQL para lanzar contra ella cualquier sentencia quequeramos y que pasamos como argumento del método. Finalmente si queremos liberar laconexión con la base de datos podemos usar el método BD_Desconectar que no tiene ningúnparámetro.El paso siguiente es registrar el componente dentro de MTS para ello tenemos que seguir lasiguiente secuencia de pasos:1.- En primer lugar tenemos que ir a Packages Installed y haciendo clic en Action en la barrasuperior seleccionamos New/Package con lo que obtendremos la pantalla siguiente: 15
  • 16. Figura 10. Microsoft Transaction Server Wizard2.- En esta pantalla selecionamos Create an Empty Package (Crear paquete vacio) que serádonde almacenaremos nuestra dll. En esta pantalla tenemos la posibilidad de importar unpaquete que ya este creado (Install Pre-build packages) y que hayamos importadopreviamente, estos paquetes exportados se almacenan con la extensión .PAK (Si queremosexportar un paquete solamente tenemos que situarnos sobre el paquete que queremos exportarhacer clic en Action y seleccionar Export donde se nos indicara la ruta donde queremos exportarel paquete, el nombre con el que se exportara será el mismo que el nombre del paquete conextensión .PAK). En nuestro ejemplo el nombre del paquete que vamos a crear es BaseDatos(figura) Figura 11. Microsoft Transaction Server WizardEn este proceso se nos pide también que indiquemos bajo que cuenta el paquete va a poderejecutarse, MTS nos da dos opciones ejecutarla sobre el usuario que se encuentre actualmentelogado en la máquina (Interactive User ) o bien sobre una cuenta particular (This user) demodo que el paquete no podrá ser usado hasta que estemos logados como dicho usuario.3.- Una vez que tenemos el paquete creado tenemos que incluir en su interior el componenteque hemos creado anteriomente en este caso la dll. Para ello seleccionamos el paquete queacabamos de crear y acontinuación seleccionamos componentes, una vez hecho esto hacemos 16
  • 17. clic en el botón de Action y seleccionamos New/Component con lo que obtenemos la siguientepantalla: Figura 12. Microsoft Transaction Server WizardSi hacemos clic en Install New Component accederemos a una pantalla donde nos pedira la rutadonde tenemos la dll, por regla general os recomiendo que los componentes los guardeis en lasiguiente ruta: WinntSystem32Intsrv, suponiendo que está aquí la dll BaseDatos.dll laseleccionamos y ya tendremos registrado nuestro componente y podremos ver desde el MTS losmétodos que ha importado y de los que podemos hacer uso desde nuestras páginas (figura).Ya que tenemos configurado MTS para que trabaje con nuestra componente de base de datosvamos incluir un pequeño desarrollo en WML/ASP que haga uso de él, como vereís la dinámicade funcionamiento es muy sencilla. El objetivo será que desde nuestro terminal podemosestablecer una conexión con la base de datos devolviendonos como resultado si todo ha idobien o no, a continuación el programa realizará una inserción dentro de la base de datos parafinalizar liberando la conexión.El programa va a constar de una sola carta ya que el objetivo es que veáis lo sencillo queresulta la programación con componentes dentro de ASP y WML, posteriormente podéiscomplicar el desarrollo todo lo que queráis (incluyendo interactividad con el usuario porejemplo), es más podéis incluso implementar vuestros propios componentes de acceso a basede datos, para envío de mails, gestión de ecommerce, etc, las posibilidades son infinitas. En lainserción dentro de la base de datos vamos a suponer la existencia de una tabla llamada 17
  • 18. Clientes, en la cual solo hay dos campos, el Código de cliente (Codigo) y el Nombre del cliente(Nombre) , dado que la conexión con la base de datos se realiza mediante ODBC la base dedatos a la que enlacemos el DSN que creemos no va a influirnos en nuestra página, por tantopodríamos usar Access, SQL Server, Oracle, etc. En el caso de este ejemplo el DSN que usamos(BASEDATOS) está enlazado contra una base de datos SQL Server pero podría ser otra como yahemos dicho. El código completo finalmente es el siguiente: <% Response.ContentType = "text/vnd.wap.wml" %> <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="Principal" title="Principal"> <p><b><u>EJEMPLO COMPONENTES</u></b></p> <!-- En primer lugar establecemos la conexion con la base de datos --> <% Dim Resultado Nos sirve para obtener el codigo de error del componente Dim objBD Objeto para enlazar con el componente Dim SQL Sentencia SQL que vamos a ejecutar Set objBD=Server.CreateObject ("Proyecto1.CBaseDatos") Resultado=objBD.BD_Conectar ("BASEDATOS","SA","TORNILLOS","") If Resultado=0 Then %> <p> Conexion OK </p> % Else %> <p> Fallo Conexion </p> % End If %> <!-- A continuacion realizamos la ejecucion de la sentencia de insercion --> <% SQL="INSERT INTO Clientes (Codigo,Nombre) VALUES (01,Jesus Castilla)" Resultado=objBD.BD_EjecutarSQL(SQL) If Resultado=0 Then %> <p> Insert OK </p> <% Else %> <p> Fallo Insert </p> <% End If %> <!-- Finalmente liberamos la conexion con la base de datos --> <% Resultado=objBD.BD_Desconectar If Resultado=0 Then %>- <p> Desconexion OK </p> <% Else %> <p> Fallo Desconexion </p> <% End if %> </card> </wml>Y en el terminal quedaría del siguiente modo: 18
  • 19. º Aspecto en el UP simulator y en el ADK de Motorola7.- CONCLUSIONESBueno pues espero que después de leer este artículo os haya quedado mucho más claro lasposibilidades de ASP y su utilización con WML, como viene siendo costumbre os recuerdo que apartir de ahora es cuando empieza el trabajo duro, ya que queda de vuestra parte seguirinvestigando e indagando en aquellos aspectos que no hemos tocado en este mini curso deiniciación WML/ASP. Y nada más, hasta la próxima.Santiago Márquez Solís 19

×