[Indice]


Nociones de ASP

Algunos conceptos previos

Se consideran como partes de la aplicación todos aquellos ficheros que residan en el directorio virtual declarado en la consola del IIS, incluidos los ficheros de inclusión (.inc), donde no deben ponerse otros ficheros, ni por supuesto, dos aplicaciones distintas en el mismo directorio. Esto no quiere decir que toda la aplicación tiene que estar escrita en un mismo fichero; pueden utilizarse los que sean precisos.

Existe un fichero especial, que tiene que estar en el directorio donde resida la aplicación, llamado global.asa y tiene que llamarse así para que funcione. Sobre este fichero se pueden detectar algunos eventos de los objetos Application y Session. He aquí un ejemplo de fichero global.asa:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
End Sub

Sub Session_OnEnd
End Sub

Sub Application_OnStart
End Sub

Sub Application_OnEnd
End Sub

</SCRIPT>

Como puedes ver, no tiene más que cuatro rutinas que sirven para detectar cuando está activa la aplicación y cuando un usuario abre o termina una sesión, que aunque no lo parezca, son cuatro sucesos clave para la buena marcha del servidor. En efecto: el suceso (o evento, es lo mismo) Application_OnStart, sólo se disparará cuando el primer usuario solicite una página contenida en el directorio virtual de la aplicación (uno cualquiera, no importa cual), y a continuación se dispara Session_OnStart. Cuando otros usuarios soliciten otras páginas, o la misma, ya no se disparará el primer evento, sino sólo el Session_OnStart, que se activará tantas veces como usuarios haya conectados a la aplicación. Cuando un usuario cierra la aplicación voluntariamente, o bien transcurre un tiempo predefinido sin hacer ninguna transacción, se disparará Session_OnEnd, y cuando se haya desconectado el último usuario, lo hará Application_OnEnd.

Las páginas ASP exigen mucho más trabajo al servidor, y es fundamental conocer cuantas sesiones hay abiertas, ya que hay que asignarles recursos de sistema, y estos recursos son finitos. Además de los recursos, como memoria, tiempo de proceso, etc., que se asigna a cada sesión, el servidor necesita tener cierta información de cada cliente, para, de forma inequívoca, poder asegurar que los datos que envia son los de ese cliente y no los de otro cualquiera. Recuerda que aquí, normalmente, no estamos enviando páginas de contenido estático, en cuyo caso no importaría si se dialoga con un cliente u otro, ya que todos reciben lo mismo, sino que se trata de un diálogo personalizado, y cada transacción termirá en una base de datos.

Además de controlar las conexiones, el fichero global.asa puede utilizarse para generar variables de sesión o de aplicación que serán invocadas en diversos momentos del proceso. Por ejemplo, si queremos mostrar un mensaje de advertencia a los usuarios del navegador IE 5.0, sobre su prestación de memorizar el contenido de los formularios, podríamos generar una variable de sesión, para invocarla en el inicio de la aplicación :


Sub Session_OnStart
navegador = InStr( 1, Request.ServerVariables("HTTP_USER_AGENT"), "MSIE" )
If navegador > 0 Then
   If InStr( navegador, Request.ServerVariables("HTTP_USER_AGENT"), " 5." ) > 0 Then
      Session("IE5") = "si"
   End If
End If
End Sub
Ahora sólo tenemos que escribir un fichero de inclusión parecido a este:

ATENCIÓN:
El navegador que está utilizando puede dejar sus datos a la vista de otros usuarios de este ordenador debido a la propiedad AutoCompletar.

Y para que aparezca (o no), escribir en la página inicial de la aplicación algo así:

<% If Session("IE5") = "si" Then %>
   <!--#include virtual="/miaplicacion/includes/ie.inc"-->
<% End If %>

Al igual que hemos creado la variable Session("IE5") podemos crear todas las que sean necesarias, y que requieran estar ya disponibles en el momento de dialogar con el cliente, distinguiendo bien entre las que afectan a cada sesión y las generales para toda la aplicación. Las variables, tanto de sesión como de aplicación, no es necesario definirlas previamente como suele hacerse en programación. En el momento de asignarles un valor ya estan creadas y disponibles. Otra particularidad, es que no tienen tipo de datos (como numérico, texto, etc.) y siempre son del tipo llamado en Visual Basic Variant, lo que significa que la variable tiene el tipo del dato que se le asigna sin necesidad de ninguna definición adicional.

Lo que hasta aquí se ha llamado "variables", en realidad son dos de los siete objetos de que dispone ASP. Veamos cuales son.


[Indice]