[Indice]


El objeto Application

El objeto Application sirve para compartir, almacenar y recibir información en respuesta a las llamadas recibidas desde los clientes de los usuarios de la aplicación. Cualquier información que se almacene en este objeto estará disponible para TODOS los usuarios de la aplicación.

El objeto Application tiene 2 colecciones, 4 métodos y 2 eventos:


COLECCIONES

Application.Contents()

Contiene (de ahí su nombre) una colección de todos los items que han sido creados y añadidos al objeto Application. Los items se pueden añadir a la lista mediante asignación directa de variables, o bien con el objeto Server y su método CreateObject.

Puede obtenerse una lista completa mediente un bucle del tipo For Each item in ... Next. Veamos como funciona:

<%
Application("Variable") = "Esto no es un objeto"
Set Application("Objeto") = Server.CreateObject("ADODB.Connection")
 
For Each Item in Application.Contents
    If IsObject(Application.Contents(Item)) Then
      Response.Write Item & " = Esto es un objeto.<BR>"
    Else
      Response.Write Item & " = " & Application.Contents(Item) & "<BR>"
    End If
Next
%>

Y este sería el resultado:

Nombre del item     Contenido
-----------------------------------------
     Variable    =  Esto no es un objeto
     Objeto      =  Esto es un objeto.

Application.StaticObjects()

Esta es una colección de todos los items creados en el objeto Application utilizando un elemento HTML: <OBJECT>    En este caso, la asignación de valores a los items no se hace desde código ASP, sino en HTML y desde el fichero global.asa

Al igual que en la colección anterior, puede mostrarse su contenido mediante un bucle For Each item in ... Next.

'---fichero global.asa
<OBJECT RUNAT=Server SCOPE=Application ID=MiConexion PROGID="ADODB.Connection">
</OBJECT>

'---fichero.asp
<%
For Each Item In Application.StaticObjects
Response.Write Item & "<BR>"
Next
%>

Y este sería el resultado:
MiTexto
MiConexion


METODOS

Application.Contents.Remove()

Versión 3 o superior.

Este método se utiliza para eliminar un item específico de la colección Application.Contents. El item que se desea eliminar puede referenciarse de dos maneras: por su nombre o por su número dentro de la colección, teniendo presente que la numeración comienza en el 1. Si se referencia por su nombre, éste deberá escribirse entre comillas dobles("). Por ejemplo:

<%
Application("Variable") = "Esto no es un objeto"
Set Application("Objeto") = Server.CreateObject("ADODB.Connection")

Application.Contents.Remove(1)
Application.Contents.Remove("Variable")

For Each Item in Application.Contents
    If IsObject(Application.Contents(Item)) Then
      Response.Write Item & " = Esto es un objeto.<BR>"
    Else
      Response.Write Item & " = " & Application.Contents(Item) & "<BR>"
    End If
Next
%>

Y este sería el resultado:

Nombre del item     Contenido
-----------------------------------------
     Objeto      =  Esto es un objeto.

Application.Contents.RemoveAll()

Versión 3 o superior.

Como su nombre indica, este método elimina TODOS los items de la colección Application.Contents().

En este caso no hay que referencia ningun nombre ni número.

<%
Application.Contents.RemoveAll( )
%>


Application.Lock    Application.Unlock

El método Application.Lock previene que el objeto Application cambie de valor mientras está siendo utilizado. En efecto, si el objeto ha recibido un valor, que por ejemplo es necesario para hacer un cálculo matemático, y otro usuario de la aplicación lo cambia antes de que se lleven a cabo todas las operaciones, el cálculo fallaría. Una vez concluidas las operaciones hay que volver a liberarlo con el método Application.UnLock

Salvo en muy especiales ocasiones, no es recomendable utilizar el objeto Application para que contenga valores variables para cada usuario. Es preferible dejar este objeto para valores fijos, y utilizar el objeto Session para los valores variables, ya que no se interfiere con los de otros usuarios.

<%
Application.Lock
Application.UnLock

%>


EVENTOS

Application_OnStart     Application_OnEnd

Estos eventos se controlan en el fichero global.asa, y debe existir uno por cada aplicación que se ejecute en el servidor, cada uno en el directorio virtual donde ésta resida. El evento Application_OnStart ocurre antes de comenzar cualquier sesión de usuario.

'---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, contiene cuatro rutinas que sirven para detectar cuando está activa la aplicación y cuando un usuario abre o termina una sesión. 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, 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.

Dentro de las rutinas que controlan los eventos del objeto Application, Application_OnStart y Application_OnEnd puede programarse cualquier acción que convenga realizar en ese momento. Por ejemplo, asignar valores fijos para toda la aplicación, declarar el texto de algunos mensajes en función de la fecha o la hora, etc., etc... o simplemente no hacer nada.


[Indice]