Muchos desarrolladores nunca consideran el concepto de estado antes de entregar aplicaciones a la Web. Como se mencionó anteriormente, la web es un entorno sin estado. Por lo tanto, debemos discutir qué es el estado y comprender los métodos que pueden evitar problemas.
Definición precisa de estado
En un programa de usuario único, al crear una aplicación ejecutable, como usar VB para crear un archivo .exe, puede declarar una variable global (o pública) y luego acceder a ella en cualquier lugar del código. El valor del momento siempre es válido y accesible en todo momento la aplicación se está ejecutando.
Para una solución tradicional de cliente/servidor, como un sistema en el que una aplicación basada en el cliente accede a un motor de base de datos basado en servidor, cada cliente establece una conexión con la aplicación de servidor y base de datos. Esta conexión generalmente se establece verificando al usuario.
El proceso de verificación es un proceso típico de identificación de un usuario, lo que demuestra si es un usuario legítimo a través de una combinación de nombre de usuario y contraseña.
Una vez autenticado, se establece una conexión entre el cliente y la aplicación basada en servidor, que sigue siendo válida durante todo el tiempo que el usuario ha utilizado la aplicación. Esto sucede cuando el usuario se registra en el servidor Windows 2000 fermentado. Siempre que un administrador use la utilidad de los usuarios y computadoras de Active Directory (haga clic en el elemento de administración del directorio en la opción Herramientas administrativas en el menú Inicio) para observar las conexiones de usuario activas. Este proceso es el mismo en muchos sistemas, como Microsoft SQL Server.
Esta conexión permanente significa que cuando un usuario envía instrucciones o solicitudes al servidor, el servidor identifica fácilmente a cada usuario. La misma respuesta del servidor o cualquier otra información del usuario también se puede devolver directamente al usuario. Se observa además que el servidor puede almacenar valores e información relacionados con cada cliente más fácilmente y proporcionarlos al cliente correspondiente cuando sea necesario. Por supuesto, las aplicaciones del servidor pueden tener variables globales principales para que los usuarios accedan cuando sea necesario.
Esta capacidad de identificar solicitudes de cada cliente y guardar los valores del usuario relevante en la memoria constituye el estado. Se puede considerar que el estado representa el valor, el entorno y las variables internas de la aplicación del usuario y se ejecuta a través de todo el proceso de la aplicación y la conexión del usuario.
La importancia del estado
Si tiene la intención de crear una aplicación basada en el sitio web que interactúe con el usuario, en lugar de un sitio web que solo muestra páginas independientes, debe poder proporcionar un estado separado para cada usuario. Esto puede recordar su nombre, o también puede ser almacenar referencias de objetos o diferentes registros para cada usuario. Si no puede hacer esto, la página web de ASP no puede hacer más, porque cuando se ejecuta la página, se destruyen las variables y otra información relacionada en la página. Cuando el usuario solicite la página siguiente, se perderá toda la información proporcionada por esta página.
Por lo tanto, es necesario encontrar una manera de guardar el estado de cada visitante. Es muy importante poder almacenar valores globales para todos los usuarios. Por ejemplo, un contador de acceso de estilo Web o una página que no proporciona a cada usuario su propio mostrador, y los usuarios generalmente desean ver el número total de visitantes, no solo la cantidad de visitas que visitan. El número de visitantes debe almacenarse con el estado a nivel de aplicación, no con el estado a nivel de usuario.
Este no es un problema que acaba de surgir. Por lo tanto, hay muchas soluciones tradicionales para almacenar el estado en la web. Los administradores del sitio web quieren saber si los visitantes han visitado su sitio web antes y, de ser así, ¿cuántas veces han visitado? También visite otros sitios web regularmente. Esto hará que sea mejor establecer sus objetivos publicitarios. Todo esto requiere una forma de almacenar información sobre las solicitudes de la página web generadas por el usuario durante el acceso o entre cada visita.
Crear un estado en la web
Una forma común de proporcionar estado entre las solicitudes de página y el acceso al sitio es a través de cookies. Hemos visto en los capítulos anteriores cómo almacenar los valores correspondientes en la computadora del cliente, que se envían junto con cada solicitud de página al dominio que es válido para esta cookie. Al verificar y actualizar las cookies con ASP, es posible mantener un estado hasta cierto punto. La información incluida se puede utilizar para identificar al usuario y luego conectar al usuario a un conjunto de valores correspondientes almacenados.
Por ejemplo, se puede detectar si una solicitud de usuario contiene una cookie especificada por el sitio. Si no se incluye, se le asigna al usuario un cierto tipo de identidad, especificando un número y se almacena en una cookie con un largo período de validez. Cada vez que el usuario visita este sitio en el futuro, podrá detectar cookies y actualizar la información contenida en él. Los datos sobre el número y la duración de las visitas también se pueden recopilar y almacenar en el servidor para uso futuro.
Pero, ¿qué sucede si un usuario transfiere a otra computadora, o elimina una cookie, o su navegador se niega a recibir la cookie enviada a ellos? En este caso, el estado no se puede mantener porque no serán reconocidos la próxima vez. Si abre la opción de advertencia antes de aceptar las cookies en su navegador y luego deambula por algunos sitios grandes, comprenderá el significado.
1. Visitantes anónimos y visitantes autorizados
Si cree que las cookies son una solución un poco descuidada, puede usar un enfoque más sencillo. Un enfoque que usan muchos sitios es aparecer en un cuadro de diálogo de inicio de sesión cuando un visitante hace clic en un sitio, o cuando una página que requiere verificación de identidad. Los visitantes primero deben registrarse y obtener un cierto tipo de combinación de nombre de usuario/contraseña para permitir el acceso al sitio o página correspondiente.
Para demostrar que el visitante es un usuario conocido y legítimo, una cookie colocada en la computadora del visitante guarda datos de registro detallados o una clave que indica que la identidad ha sido verificada. Al mismo tiempo, los datos detallados del visitante se guardan permanentemente en el servidor y están listos para usarse al acceder nuevamente. Si el visitante tiene una cookie así en su navegador, puede acceder libremente al sitio web porque ha sido verificado.
Si la cookie no tiene período de validez (expira), el valor de la cookie desaparecerá automáticamente cuando el navegador esté cerrado y debe volver a registrarse y verificarse nuevamente en la próxima visita. Por supuesto, si se niega a recibir cookies o eliminar cookies, solo puede volver a obtener el diálogo de registro. De esta manera, si no se reconoce, no se puede acceder al sitio.
Al obligar a los usuarios a registrarse en un servidor web como registrarse en su propia red, el rendimiento general de seguridad de Windows 2000 proporciona a IIS capacidades de verificación más fuertes y seguras. Sin embargo, esto solo puede funcionar con navegadores con Internet Explorer 3.0 y superior. IIS también puede usar una verificación básica para permitir que los navegadores no Microsoft registren un servidor web.
2. No más visitantes anónimos
Al usar ASP en un servidor web IIS, los usuarios pueden rastrearse en la sesión actual a menos que el usuario salga del sitio a otro sitio web o cierre el navegador. Más adelante en este capítulo, verá cómo se utiliza esta característica para identificar a un visitante, almacenar la información local del usuario y proporcionar estado. La siguiente es una discusión de cómo funciona en comparación con las soluciones ya discutidas.
ASP y IIS propusieron conjuntamente un concepto de sesiones de usuario, interactuando a través de objetos de sesión ASP. Cuando cada visitante acceda por primera vez a una página web ASP en el servidor, cree un objeto de sesión nuevo e independiente para él, asigne un número de identificación de sesión a la sesión y agregue una versión especializada del identificador de sesión.
La ruta de la cookie (consulte el capítulo anterior para la descripción de los atributos de la cookie) se establece en la ruta raíz de la aplicación ASP que se ejecuta en el servidor. Es probable que esto esté en el directorio raíz del sitio web predeterminado (es decir, /), pero también puede ser otro valor (ver más adelante). El valor expirado no se proporciona en la cookie, por lo que cuando el navegador está cerrado, el valor de la cookie desaparece.
Cada vez que este usuario visita esta página web de ASP, el ASP buscará esta cookie. Llamado AspSessionIDXXXXXXXXX, donde cada x es un carácter alfabético. Desde la colección ServerVariables que se muestra en la Figura 2-7 en el Capítulo 2, puede verla en el encabezado HTTP.
Sin embargo, esta cookie no aparece en la colección request.cookies o Response.cookies, que ASP oculta, pero aún se guarda en el navegador. Para cada solicitud de página web de ASP, el ASP debe ver el valor. El valor contenido en esta cookie indica la sesión del usuario. Por lo tanto, el contenido del objeto de sesión correspondiente (que se ha procesado en la memoria y siempre contiene todos los valores que funcionan durante el proceso de solicitud de página anterior) se puede entregar al script en la página web ASP.
Por supuesto, como se mencionó anteriormente, si el navegador del cliente no recibe o admite estas cookies, este procesamiento fallará. En este caso, no se puede crear una sesión de ASP y el estado de este visitante no se mantiene automáticamente.