Share via


Recomendaciones de administración de estado de ASP.NET

Actualización: noviembre 2007

La administración de estado es el proceso por el cual se conserva el estado y la información de la página a través de múltiples solicitudes de la misma página o de páginas diferentes. Al igual que la tecnología basada en HTTP, los formularios Web Forms no tienen estado, lo que significa que no indican de manera automática si todas las solicitudes que se realizan en secuencia provienen del mismo cliente ni si una instancia del explorador todavía está viendo una página o un sitio de manera activa. Además, las páginas se destruyen y se vuelven a crear con cada recorrido de ida y vuelta al servidor, lo que significa que la información de una página no se conservará fuera de la duración de la página. Para obtener más información sobre los recorridos de ida y vuelta del servidor y la duración de las páginas de formularios Web Forms, vea Información general sobre el ciclo de vida de una página ASP.NET.

ASP.NET ofrece distintas maneras de conservar el estado entre acciones de ida y vuelta al servidor. La elección de una de estas opciones depende en gran medida de la aplicación y debe hacerse conforme a los criterios siguientes:

  • ¿Qué cantidad de información debería almacenar?

  • ¿El cliente aceptará cookies persistentes o en memoria?

  • ¿Desea almacenar la información en el cliente o en el servidor?

  • ¿Se trata de información confidencial?

  • ¿Qué criterios de rendimiento y ancho de banda tiene para la aplicación?

  • ¿Cuáles son las capacidades de los exploradores y dispositivos que está utilizando como destino?

  • ¿Necesita almacenar información de cada usuario?

  • ¿Cuánto tiempo necesita almacenar la información?

  • ¿Tiene una batería de servidores Web (varios servidores), una matriz de procesos Web (varios procesos en un equipo) o un único proceso que se ocupa de la aplicación?

Opciones de administración de estado en el cliente

Las opciones en el cliente para almacenar la información de página no utilizan recursos de servidor. Estas opciones normalmente ofrecen poca seguridad pero proporcionan un rendimiento rápido del servidor porque la demanda de recursos del servidor es pequeña. Sin embargo, puesto que se debe enviar información al cliente para su almacenamiento, existe un límite práctico para la información que puede almacenarse de esta forma.

A continuación se muestran las opciones de administración de estado en el cliente que admite ASP.NET:

  • Estado de vista

  • Estado de control

  • Campos ocultos

  • Cookies

  • Cadenas de consulta

Estado de la vista

Las páginas de formularios Web Forms proporcionan la propiedad ViewState como una estructura integrada para conservar automáticamente valores entre varias solicitudes de una misma página. El estado de vista se mantiene en la página en forma de campo oculto. Para obtener más información, vea Información general sobre la administración de estados de ASP.NET.

Puede utilizar el estado de vista para almacenar los valores específicos de su propia página entre recorridos de ida y vuelta, cuando la página se envía de nuevo a sí misma. Por ejemplo, si la aplicación mantiene información específica del usuario (es decir, información que se utiliza en la página pero que no forma parte necesariamente de ningún control), se puede almacenar en el estado de vista.

Las ventajas de utilizar el estado de vista son:

  • No se requieren recursos del servidor   El estado de vista está incluido en una estructura dentro del código de la página.

  • Implementación sencilla   El estado de vista no requiere que se utilice una programación personalizada. Se habilita de forma predeterminada para mantener los datos de estado en los controles.

  • Características de seguridad mejorada   Los valores en el estado de vista están fragmentados, comprimidos y codificados para implementaciones de Unicode, por lo que son más seguros que los campos ocultos.

Las desventajas de utilizar el estado de vista son:

  • Consideraciones sobre el rendimiento Dado que el estado de vista se almacena en la propia página, el almacenamiento de valores de gran tamaño puede hacer que la página se muestre y se envíe de forma más lenta para los usuarios. Esto es especialmente relevante para los dispositivos móviles, donde el ancho de banda constituye a menudo una limitación.

  • Limitaciones de dispositivos   Los dispositivos móviles pueden carecer de una capacidad de memoria suficiente para almacenar una gran cantidad de datos del estado de vista.

  • **Posibles riesgos de seguridad   **El estado de vista se almacena en uno o varios campos ocultos de la página. Aunque el estado de vista almacena los datos fragmentados, se puede manipular. Se puede ver la información de un campo oculto si se obtiene acceso al código fuente de la página directamente, lo que supone un problema de seguridad potencial. Para obtener más información, vea Seguridad de aplicaciones Web ASP.NET y Procedimientos de seguridad básicos para aplicaciones Web.

Estado de control

El marco de trabajo de la página ASP.NET proporciona la propiedad ControlState como medio para almacenar los datos de control personalizados entre los recorridos del servidor. Por ejemplo, si ha escrito un control personalizado que tiene varias fichas en las que se muestra distinta información, para que ese control funcione tal y como se espera, dicho control debe saber qué ficha se selecciona entre los recorridos de ida y vuelta. El estado de vista se puede utilizar con este propósito, pero los programadores pueden desactivar el estado de vista en el nivel de la página, interrumpiendo su control eficazmente. A diferencia del estado de vista, el estado de control no se puede desactivar, por lo que proporciona una manera más confiable de almacenar los datos del estado de control.

Las ventajas de utilizar el estado de control son:

  • No se requieren recursos del servidor   De forma predeterminada, el estado de control se almacena en campos ocultos de la página.

  • Confiabilidad   Como el estado de control no se puede desactivar, como ocurre con el estado de vista, es un método más confiable para administrar el estado de los controles.

  • Versatilidad   Se pueden escribir adaptadores personalizados que controlen el modo y el lugar en el que se almacenan los datos del estado de control.

Las desventajas de utilizar el estado de control son:

  • Requiere programación   Aunque el marco de trabajo de la página ASP.NET proporciona una base para el estado de control, este estado es un mecanismo personalizado de persistencia de estados. Para utilizar todas las funciones del estado de control, debe escribir el código que guarde y cargue el estado de control.

Campos ocultos

Puede almacenar información específica de una página en un campo oculto de la página como forma de conservar el estado de la misma. Para obtener más información sobre los campos ocultos, vea Recomendaciones de administración de estado de ASP.NET.

Si utiliza campos ocultos, es mejor almacenar sólo cantidades pequeñas de datos que cambian con frecuencia en el cliente.

Nota:

Si utiliza campos ocultos, deberá enviar las páginas al servidor mediante el método HTTP POST, en lugar de solicitar la página mediante su dirección URL (es decir, mediante el método HTTP GET).

Las ventajas de utilizar campos ocultos son:

  • No se requieren recursos del servidor   El campo oculto se almacena y se lee desde la página.

  • Compatibilidad generalizada   La mayoría de los exploradores y dispositivos de cliente admiten formularios con campos ocultos.

  • Implementación sencilla   Los campos ocultos son controles HTML estándar que no requieren una lógica de programación compleja.

Las desventajas de utilizar campos ocultos son:

  • Posibles riesgos de seguridad   El campo oculto se puede manipular. Se puede ver la información de un campo oculto si se obtiene acceso al código fuente de la página directamente, lo que supone un problema de seguridad potencial. Puede cifrar y descifrar el contenido de un campo oculto de forma manual, pero esto requiere una codificación y una sobrecarga adicionales. Si le preocupa la seguridad, considere la posibilidad de utilizar un mecanismo de estados basado en servidor para que no se transfiera información confidencial al cliente. Para obtener más información, vea Seguridad de aplicaciones Web ASP.NET y Procedimientos de seguridad básicos para aplicaciones Web.

  • Arquitectura de almacenamiento sencilla   El campo oculto no admite los tipos de datos enriquecidos. Los campos ocultos sólo ofrecen un campo de valor de cadena en el que se introduce la información. Para almacenar múltiples valores, debe implementar cadenas delimitadas y que el código analice estas cadenas. Puede serializar manualmente tipos de datos enriquecidos en los campos ocultos y puede deserializarlos desde estos campos. Sin embargo, esto requiere código adicional. Si necesita almacenar tipos de datos enriquecidos en el cliente, considere la posibilidad de utilizar en su lugar el estado de vista. El estado de vista tiene la función de serialización integrada y almacena los datos en campos ocultos.

  • Consideraciones sobre el rendimiento   Puesto que los campos ocultos se almacenan en la propia página, el almacenamiento de valores de gran tamaño puede hacer que la página se muestre y se envíe de forma más lenta a los usuarios.

  • Limitaciones de almacenamiento   Si la cantidad de datos de un campo oculto llega a ser muy grande, algunos servidores proxy y algunos firewall impedirán el acceso a la página que incluye estos campos ocultos. Dado que el volumen máximo admitido puede variar en cada implementación del servidor proxy o del firewall, los campos ocultos de gran tamaño pueden constituir en ocasiones un problema. Si necesita almacenar muchos elementos de datos, considere las opciones siguientes:

    • Coloque cada elemento en un campo oculto diferente.

    • Utilice el estado de vista con la función de agrupamiento activada, lo que automáticamente separa los datos en varios campos ocultos.

    • En lugar de almacenar los datos en el cliente, conserve los datos en el servidor. Cuantos más datos envíe al cliente, más lento será el tiempo de respuesta de la aplicación porque el explorador necesitará descargar o enviar más datos.

Cookies

Las cookies son útiles para almacenar pequeñas cantidades de información que cambia con frecuencia en el cliente. La información se envía al servidor con la solicitud. Para obtener información detallada acerca de cómo se crean y se leen las cookies, vea Información general sobre las cookies en ASP.NET.

Las ventajas de utilizar cookies son:

  • Reglas de expiración que se pueden configurar   La cookie puede expirar cuando se cierre la sesión del explorador o puede existir indefinidamente en el equipo cliente, en función de las reglas de expiración del cliente.

  • No se requieren recursos del servidor   La cookie se almacena en el cliente y el servidor la lee después de que se produzca un envío.

  • Simplicidad Una cookie es una estructura ligera y basada en texto que simplemente utiliza pares clave-valor.

  • Persistencia de los datos   Aunque la duración de la cookie en un equipo cliente está sujeta a los procesos de expiración de cookies y a la intervención del usuario, las cookies generalmente son el formulario más duradero para la persistencia de los datos en el cliente.

Las desventajas de utilizar cookies son:

  • Limitaciones de tamaño   La mayoría de los exploradores establecen un límite de 4096 bytes para el tamaño de una cookie, aunque la compatibilidad con cookies de 8192 bytes se está generalizando en los últimos exploradores y las últimas versiones de dispositivos de cliente.

  • Rechazo configurado por el usuario Algunos usuarios deshabilitan la capacidad de recibir cookies del explorador o dispositivo de cliente, limitando así esta funcionalidad.

  • Posibles riesgos de seguridad   Las cookies se pueden manipular. Los usuarios pueden manipular las cookies de su equipo, lo que puede comprometer la seguridad o producir un error en la aplicación que depende de la cookie. Además, aunque las cookies sólo son accesibles por el dominio que las envía al cliente, los piratas informáticos han hallado el modo de tener acceso a las cookies de otros dominios de un equipo de usuario. Puede cifrar y descifrar las cookies manualmente, pero esto requiere una codificación adicional y puede afectar al rendimiento de la aplicación debido al tiempo que llevan las operaciones de cifrado y descifrado. Para obtener más información, vea Seguridad de aplicaciones Web ASP.NET y Procedimientos de seguridad básicos para aplicaciones Web.

    Nota:

    Las cookies se utilizan a menudo para tareas de personalización, donde el contenido se personaliza para cada usuario. En la mayoría de estos casos, la identificación supone un problema mayor que la autenticación. Normalmente puede proteger una cookie que se utiliza para la identificación; para ello, almacene el nombre de usuario, el nombre de cuenta o un identificador de usuario exclusivo (como un GUID) en la cookie y utilice la cookie para tener acceso a la infraestructura de personalización del usuario de un sitio.

Cadenas de consulta

Una cadena de consulta es información que se anexa al final de la dirección URL de una página. Para obtener más información, vea Información general sobre la administración de estados de ASP.NET.

Puede utilizar una cadena de consulta para enviar datos de vuelta a la página o a otra página a través de la dirección URL. Las cadenas de consulta proporcionan una manera sencilla pero limitada de mantener cierta información de estado. Por ejemplo, las cadenas de consulta constituyen un medio sencillo para transferir información de una página a otra, como transferir un código de producto de una página a otra en la que se procesará.

Las ventajas de utilizar cadenas de consulta son:

  • No se requieren recursos del servidor   La cadena de consulta está incluida en la solicitud HTTP de una dirección URL determinada.

  • Compatibilidad generalizada   Casi todos exploradores y dispositivos de cliente admiten el uso de cadenas de consulta para transferir valores.

  • Implementación sencilla ASP.NET es totalmente compatible con el método de cadenas de consulta, incluidos los métodos para leer cadenas de consulta mediante la propiedad Params del objeto HttpRequest.

Las desventajas de utilizar cadenas de consulta son:

  • Posibles riesgos de seguridad El usuario puede ver directamente la información de una cadena de consulta en la interfaz de usuario del explorador. Un usuario puede marcar la dirección URL o enviarla a otros usuarios, transfiriendo así la información de la cadena de consulta junto con la dirección URL. Si le preocupa que en la cadena de consulta se incluya algún dato confidencial, considere la posibilidad de utilizar campos ocultos en un formulario que utilice POST en lugar de utilizar cadenas de consulta. Para obtener más información, vea Seguridad de aplicaciones Web ASP.NET y Procedimientos de seguridad básicos para aplicaciones Web.

  • Capacidad limitada   Algunos exploradores y dispositivos de cliente establecen un límite de 2083 caracteres para la longitud de las direcciones URL.

Resumen de los métodos de administración de estado en el cliente

En la tabla siguiente se muestran las opciones de administración de estado en el cliente que están disponibles con ASP.NET y se incluyen también recomendaciones acerca de cuándo debe utilizarse cada opción.

Opción de administración de estado

Uso recomendado

Estado de vista

Utilice esta opción cuando necesite almacenar cantidades pequeñas de información de una página que se enviarán de vuelta a la misma página. Con la propiedad ViewState, se aporta seguridad básica a la funcionalidad.

Estado de control

Utilice esta opción cuando necesite almacenar cantidades pequeñas de información de estado de un control entre los recorridos de ida y vuelta al servidor.

Campos ocultos

Utilice esta opción cuando necesite almacenar cantidades pequeñas de información de una página que se enviará de vuelta a la propia página o que se enviará a otra página, y cuando la seguridad no sea un problema.

Nota:
Sólo puede utilizar campos ocultos en páginas que se envíen al servidor.

Cookies

Utilice esta opción cuando necesite almacenar cantidades pequeñas de información en el cliente y la seguridad no sea un problema.

Cadena de consulta

Utilice esta opción cuando transfiera cantidades pequeñas de información de una página a otra y la seguridad no sea un problema.

Nota:
Sólo puede utilizar cadenas de consulta cuando haga una solicitud de la misma página o una solicitud de otra página a través de un vínculo.

Opciones de administración de estado en el servidor

Las opciones para almacenar la información de la página en el servidor suelen proporcionar un mayor nivel de seguridad que las opciones del cliente, pero pueden hacer un uso mayor de los recursos del servidor Web, lo que puede afectar a la escalabilidad cuando el tamaño de la información almacenada sea grande. ASP.NET proporciona distintas opciones para implementar la administración de estado en el servidor. Para obtener más información, vea Información general sobre la administración de estados de ASP.NET.

A continuación se muestran las opciones de administración de estado en el servidor que admite ASP.NET:

  • Estado de aplicación

  • Estado de sesión

  • Propiedades de perfiles

  • Compatibilidad con bases de datos

Estado de aplicación

ASP.NET proporciona el estado de la aplicación mediante la clase HttpApplicationState como un método para almacenar información global específica de la aplicación de forma que sea visible para toda la aplicación. Las variables del estado de aplicación son variables globales de una aplicación ASP.NET. Para obtener más información, vea Información general sobre el estado de aplicación de ASP.NET

Se pueden almacenar los valores específicos de la aplicación en el estado de aplicación, que administra el servidor. Para obtener más información, vea Información general sobre la administración de estados de ASP.NET.

Los datos que se comparten entre varias sesiones y que no experimentan cambios con frecuencia son el tipo ideal de datos que deberían insertarse en las variables del estado de aplicación.

Las ventajas de utilizar el estado de aplicación son:

  • Implementación sencilla   El estado de aplicación es fácil de usar, es coherente con otras clases de .NET Framework y los programadores de ASP lo conocen bien.

  • **Ámbito de la aplicación   **Dado que todas las páginas de una aplicación pueden tener acceso al estado de aplicación, si se almacena información en el estado de aplicación puede ocurrir que sólo exista una única copia de la información (a diferencia, por ejemplo, de si se guardan copias de la información en el estado de sesión o en páginas individuales).

Las desventajas de utilizar el estado de aplicación son:

  • Ámbito de la aplicación   El ámbito del estado de aplicación también puede ser una desventaja. Las variables que se almacenan en el estado de la aplicación son globales sólo para el proceso en el que se está ejecutando la aplicación y cada proceso de aplicación puede tener valores diferentes. Por lo tanto, no puede basarse en el estado de aplicación para almacenar valores únicos o para actualizar contadores globales en configuraciones de matrices de procesos Web y baterías de servidores Web.

  • Duración limitada de los datos   Como los datos globales almacenados en el estado de aplicación son volátiles, se perderán si se destruye el proceso de servidor Web que los contiene, por ejemplo si el servidor se queda bloqueado, se actualiza o se apaga.

  • Requisitos de recursos El estado de aplicación necesita memoria del servidor, lo que puede afectar al rendimiento del mismo así como a la escalabilidad de la aplicación.

Mediante un cuidadoso diseño y una buena implementación del estado de la aplicación puede mejorar el rendimiento de la aplicación Web. Por ejemplo, si se utiliza el estado de aplicación para guardar conjuntos de datos de uso común y relativamente estáticos, se puede aumentar el rendimiento del sitio mediante la reducción del número global de solicitudes a la base de datos. Sin embargo, existe una contrapartida relativa al rendimiento. Las variables de estado de aplicación que contienen grandes bloques de información reducen el rendimiento del servidor Web a medida que aumenta la carga del mismo. La memoria que ocupa una variable almacenada en el estado de la aplicación no se libera hasta que el valor es quitado o reemplazado. Por tanto, es mejor utilizar variables de estado de aplicación sólo con conjuntos de datos pequeños y cuya modificación sea poco frecuente. Para obtener más información, vea Información general sobre el rendimiento.

Estado de sesión

ASP.NET proporciona el estado de sesión, que está disponible mediante la clase HttpSessionState como método para almacenar información específica de la sesión de forma que sea visible sólo dentro de ésta. El estado de sesión de ASP.NET identifica las solicitudes recibidas desde el mismo explorador durante un período limitado de tiempo como una sesión y proporciona la capacidad de conservar los valores de las variables durante la duración de esa sesión. Para obtener más información, vea Información general sobre la administración de estados de ASP.NET y Información general sobre el estado de sesión de ASP.NET.

Se pueden almacenar los valores y objetos específicos de la sesión en el estado de sesión, que el servidor administra, y que está disponible para el explorador o el dispositivo cliente. Lo ideal es almacenar en las variables de estado de la sesión datos de duración corta, datos confidenciales para una sesión individual específica.

Las ventajas de utilizar el estado de sesión son:

  • Implementación sencilla   El estado de sesión es fácil de usar, es coherente con otras clases de .NET Framework y los programadores de ASP lo conocen bien.

  • Eventos específicos de la sesión   Se pueden desencadenar eventos de administración de sesiones y utilizarlos en la aplicación.

  • Persistencia de los datos   Los datos guardados en variables de estado de sesión se conservan cuando se reinician Internet Information Services (IIS) y los procesos de trabajo sin que se pierdan datos de sesión, ya que éstos se almacenan en otro espacio de proceso. Además, los datos de estado de sesión pueden preservarse en varios procesos, como en una batería de servidores Web o una matriz de procesos Web.

  • Escalabilidad de la plataforma El estado de sesión se puede utilizar en configuraciones multisistema y multiproceso, optimizando así los escenarios de escalabilidad.

  • Compatibilidad sin cookies El estado de sesión funciona con los exploradores que no admiten las cookies HTTP, aunque se suele utilizar en combinación con éstas para proporcionar servicios de identificación de usuario a las aplicaciones Web. Si se utiliza el estado de sesión sin cookies, sin embargo, es necesario que el identificador de la sesión se sitúe en la cadena de consulta, que está sujeta a los problemas de seguridad que se tratan en la sección de las cadenas de consulta en este mismo tema. Para obtener más información sobre cómo utilizar el estado de sesión sin cookies, vea Administrar sitios web ASP.NET.

  • Extensibilidad   Puede personalizar y ampliar el estado de sesión escribiendo su propio proveedor de estados de sesión. Los datos del estado de sesión se pueden almacenar a continuación en un formato de datos personalizado en una variedad de mecanismos de almacenamiento de datos, como una base de datos, un archivo XML o incluso un servicio Web. Para obtener más información, vea Implementar un proveedor de almacén de estados de sesión.

Las desventajas de utilizar el estado de sesión son:

  • Consideraciones sobre el rendimiento Las variables de estado de sesión permanecen en la memoria hasta que se quitan o se reemplazan y pueden, por tanto, perjudicar al rendimiento del servidor. Las variables de estado de sesión que contienen bloques de información, como conjuntos de datos, pueden afectar negativamente al rendimiento del servidor Web a medida que aumenta la carga.

Propiedades de perfiles

ASP.NET proporciona una característica denominada "propiedades de perfiles" que permite almacenar datos específicos del usuario. Es similar al estado de sesión, salvo porque a diferencia de éste, el perfil de datos no se pierde cuando expira la sesión de un usuario. La característica propiedades de perfiles utiliza un perfil ASP.NET, que se guarda en un formato persistente y que se asocia con un usuario específico. El perfil ASP.NET permite administrar con facilidad la información sobre el usuario sin que sea necesario crear y mantener una base de datos propia. Además, el perfil hace que la información del usuario esté disponible mediante una API con establecimiento inflexible de tipos a la que puede obtener acceso desde cualquier punto de la aplicación. Puede almacenar objetos de cualquier tipo en el perfil. La característica perfil ASP.NET proporciona un sistema de almacenamiento genérico que permite definir y mantener casi todos los tipos de datos mientras éstos siguen estando disponibles de un modo seguro para los tipos. Para obtener más información, vea Información general sobre las propiedades de perfil de ASP.NET.

Las ventajas de utilizar propiedades de perfil son:

  • Persistencia de los datos   Los datos situados en las propiedades de perfiles se mantienen cuando se reinician Internet Information Services (IIS) y el proceso de trabajo sin que se pierdan datos, porque éstos están almacenados en un mecanismo externo. Además, las propiedades de perfiles pueden preservarse en varios procesos, como en una batería de servidores Web o una matriz de procesos Web.

  • Escalabilidad de la plataforma Las propiedades de perfiles se pueden utilizar en configuraciones multisistema y multiproceso, optimizando así los escenarios de escalabilidad.

  • Extensibilidad   Para utilizar las propiedades de perfiles, debe configurar un proveedor de perfiles. ASP.NET incluye una clase SqlProfileProvider que permite almacenar los datos del perfil en una base de datos de SQL, aunque también puede crear una clase propia de proveedor de perfiles que almacene los datos del perfil en un formato personalizado y disponga de un mecanismo de almacenamiento personalizado, como un archivo XML o incluso un servicio Web. Para obtener más información, vea Proveedores de perfiles de ASP.NET y Implementar un proveedor de perfiles.

Las desventajas de utilizar propiedades de perfil son:

  • Consideraciones de rendimiento   Las propiedades de perfiles normalmente son más lentas que el estado de sesión porque en lugar de almacenar los datos en la memoria, los datos se conservan en un almacén de datos.

  • Requisitos de configuración adicionales   A diferencia del estado de sesión, la característica Propiedades de perfiles requiere un volumen de configuración considerable. Para utilizar las propiedades de perfiles, no sólo debe configurar un proveedor de perfiles, sino que además debe configurar previamente todas las propiedades de perfiles que desee almacenar. Para obtener más información, vea Información general sobre las propiedades de perfil de ASP.NET y Definición de las propiedades de perfil ASP.NET.

  • Mantenimiento de los datos Las propiedades de perfiles requieren cierto mantenimiento. Dado que los datos de los perfiles se guardan en un almacén que no es volátil, debe comprobar que la aplicación llama a los mecanismos de limpieza adecuados, mecanismos que proporciona el proveedor de perfiles, cuando los datos quedan obsoletos.

Compatibilidad con bases de datos

En algunos casos, puede preferir utilizar la compatibilidad con las bases de datos para guardar el estado en el sitio Web. Generalmente, la compatibilidad con bases de datos se utiliza en combinación con las cookies o el estado de sesión. Por ejemplo, es muy frecuente que un sitio Web de comercio electrónico conserve la información de estado en una base de datos relacional por las siguientes razones:

  • Seguridad

  • Personalización

  • Coherencia

  • Extracción de datos

Las características típicas de un sitio Web con base de datos combinado con cookies:

  • Seguridad   El usuario escribe un nombre de cuenta y una contraseña en una página de inicio de sesión del sitio. La infraestructura del sitio hace una consulta en la base de datos con los valores de inicio de sesión para determinar si el usuario dispone de los permisos necesarios para utilizar el sitio. Si la base de datos valida la información del usuario, el sitio Web distribuirá una cookie válida que contenga un identificador único para ese usuario en el equipo cliente. El sitio concede el acceso al usuario.

  • Personalización   Si dispone de información de seguridad, el sitio puede distinguir a cada usuario leyendo la cookie en el equipo cliente. Normalmente, los sitios tienen información en la base de datos que describe las preferencias de cada usuario (identificado por un identificador único). Esta relación se conoce como personalización. El sitio puede investigar las preferencias del usuario utilizando el identificador único que contiene la cookie y, a continuación, poner el contenido y la información a disposición del usuario según sus deseos específicos e ir reaccionando a las preferencias del usuario.

  • Consistencia   Si ha creado un sitio Web de comercio electrónico, es posible que desee mantener los registros transaccionales de las compras de productos y servicios realizados en el sitio. Puede guardar esta información en la base de datos de un modo confiable y hacer referencia a ella mediante el identificador exclusivo del usuario. Puede utilizarla para determinar si una transacción de compra se ha completado y, en el caso de que se haya producido un error, para determinar el curso de las acciones que deben seguirse. También se puede utilizar para informar al usuario sobre el estado de un pedido realizado en el sitio.

  • Extracción de datos   La información sobre el uso del sitio, los visitantes o las transacciones de un producto se pueden almacenar de forma segura en la base de datos. Por ejemplo, el departamento de desarrollo de la empresa puede utilizar los datos recogidos del sitio para determinar la línea de productos o la política de distribución para el próximo año. El departamento de marketing puede examinar información demográfica sobre los usuarios del sitio. Los departamentos de ingeniería y soporte pueden analizar las transacciones y observar las áreas donde se podría mejorar el proceso de compra. La mayoría de las bases de datos relacionales a nivel empresarial, como, por ejemplo, Microsoft SQL Server, contienen un amplio conjunto de herramientas para la mayor parte de proyectos de extracción de datos.

Si se diseña el sitio Web para que consulte repetidamente a la base de datos mediante el identificador exclusivo durante cada una de las fases generales de la situación descrita, el sitio mantiene el estado. De esta manera, el usuario percibe que el sitio le recuerda y que reacciona de manera personalizada.

Las ventajas de utilizar una base de datos para mantener el estado son:

  • Seguridad   El acceso a las bases de datos requiere una autenticación y autorización rigurosas.

  • Capacidad de almacenamiento   Se puede almacenar en la base de datos tanta información como se desee.

  • Persistencia de los datos La información de la base de datos se puede almacenar durante el tiempo deseado, y no está sujeta a la disponibilidad del servidor Web.

  • Solidez e integridad de los datos   Las bases de datos suelen incluir diversas funciones para el mantenimiento de la corrección de los datos, entre ellas desencadenadores e integridad referencial, transacciones, etc. Si se guarda la información de transacciones en una base de datos (en lugar de en el estado de sesión), es más rápido recuperarse de los errores.

  • Accesibilidad   Un gran número de herramientas de procesamiento de la información pueden tener acceso a los datos almacenados en la base de datos.

  • Compatibilidad generalizada   Existe una gran variedad de herramientas de bases de datos y configuraciones disponibles.

Las desventajas de utilizar una base de datos para mantener el estado son:

  • Complejidad   Si se utiliza una base de datos para la administración de estado, las configuraciones del hardware y el software serán más complejas.

  • Consideraciones sobre el rendimiento   Una construcción deficiente del modelo de datos relacionales puede generar problemas de escalabilidad. También, el uso de demasiadas consultas a la base de datos puede afectar negativamente al rendimiento del servidor.

Resumen de los métodos de administración de estado en el servidor

En la tabla siguiente se muestran las opciones de administración de estado en el servidor que están disponibles con ASP.NET y también se incluyen recomendaciones acerca de cuándo debe utilizarse cada opción.

Opción de administración de estado

Uso recomendado

Estado de aplicación

Utilice esta opción cuando almacene información global que no se modifica con frecuencia y que utilizan muchos usuarios y cuando la seguridad no constituya un problema. No utilice el estado de aplicación para almacenar grandes cantidades de información.

Estado de sesión

Utilice esta opción cuando almacene información de corta duración que es específica de una determinada sesión y la seguridad no sea un problema. No utilice el estado de sesión para almacenar grandes cantidades de información. Tenga en cuenta que un objeto de estado de sesión se creará y se conservará durante el ciclo de vida de cada sesión de la aplicación. En aplicaciones que hospeden a muchos usuarios, esto puede ocupar un número significativo de recursos de servidor y afectar a la escalabilidad.

Propiedades de perfiles

Utilice esta opción cuando almacene información específica del usuario que debe conservarse después de que la sesión de usuarios haya expirado y que necesitará recuperar de nuevo en próximas visitas a la aplicación.

Compatibilidad con bases de datos

Utilice esta opción cuando almacene gran cantidad de información, administre transacciones o la información deba conservarse aunque se vuelva a iniciar la aplicación o la sesión. Suele utilizarse para la extracción de datos, y la seguridad es una cuestión importante a tener en cuenta.

Vea también

Conceptos

Información general sobre la administración de estados de ASP.NET

Información general sobre las cookies en ASP.NET

Información general sobre las propiedades de perfil de ASP.NET

Información general sobre el estado de sesión de ASP.NET

Información general sobre el estado de aplicación de ASP.NET

Otros recursos

Novedades de la administración de estados de ASP.NET