viernes, 27 de diciembre de 2013

Herramientas de la línea de comandos de ASP.NET

ASP.NET incluye herramientas de la línea de comandos que facilitan el trabajo con sitios web.
Para que estas herramientas funcionen correctamente, es necesario configurar correctamente las variables de entorno PATHINCLUDE y LIB. Recomendamos utilizar el símbolo de sistema de Visual Studio, que abre una ventana de línea de comandos y establece estas variables automáticamente. Para utilizar el símbolo de sistema de Visual Studio, en el menú Inicio, elija Todos los programasMicrosoftVisual Studio <versión>Visual Studio Tools y, por último, haga clic en Símbolo del sistema de Visual Studio.

Sitios web ASP.NET para dispositivos móviles

El desarrollo de páginas ASP.NET para exploradores de dispositivos móviles no difiere sustancialmente del desarrollo de páginas para los exploradores de escritorio. Con objeto de ayudarle a crear aplicaciones para dispositivos móviles, ASP.NET proporciona un espacio de nombres System.Web.Mobile dedicado específicamente al desarrollo Web móvil.
Puede crear una página Web a partir de la clase base MobilePage y agregar controles del espacio de nombres System.Web.Mobile. Este espacio de nombres define una serie de controles de servidor Web y adaptadores que resultan especialmente útiles al crear aplicaciones que deben estar disponibles para muchos dispositivos móviles diferentes, como los teléfonos móviles.
ASP.NET también proporciona una arquitectura adaptable de controles que permite crear adaptadores de dispositivos personalizados para los controles de servidor web ASP.NET. Estos adaptadores pueden crear una representación personalizada de un control en función del explorador que realiza la solicitud. Con la arquitectura adaptable, puede crear adaptadores personalizados para los controles de servidor Web de ASP.NET para representar resultados específicos en los dispositivos que tienen acceso a la aplicación en exploradores de escritorio.
Tanto en los exploradores de escritorio como en los dispositivos móviles, el desarrollo sigue el modelo orientado a eventos de .NET estándar en el que la aplicación responde a las solicitudes del usuario, a los clics en los botones, etc.
Esta información general contiene las siguientes secciones:
Aunque ASP.NET integra tecnología para que el desarrollo de aplicaciones Web ASP.NET Mobile siga el mismo modelo que el desarrollo de aplicaciones Web tradicional, el objetivo principal de la arquitectura no es permitirle crear páginas únicas que se puedan procesar en exploradores de dispositivos de escritorio o de dispositivos móviles. Las limitaciones de los exploradores en los dispositivos móviles a menudo implican que las páginas diseñadas en los exploradores de escritorio no se puedan traducir en los exploradores de dispositivos móviles.
Por ejemplo, si crea una página Web ASP.NET que incluye un encabezado de sitio, una barra de navegación en la parte superior de la página, una estructura de navegación secundaria a lo largo de la página y contenido en el resto de la página, ésta se representará tal como se ha diseñado en un explorador de escritorio. En este caso, normalmente hay bastante espacio para representar todos los controles y proporcionar un área de contenido desplazable. Sin embargo, en muchos exploradores de dispositivos móviles, este diseño no sería posible. Una gran cantidad de dispositivos móviles disponen de un área de pantalla más pequeña que los monitores de escritorio, por lo que incluso la navegación se convierte en un proceso de varios pasos en el que el usuario debe hacer clic en varios controles para obtener el contenido de la página.
La lógica de la presentación sigue un modelo similar. Por ejemplo, cuando el usuario rellena un formulario Web Forms utilizando un explorador de escritorio, puede ver muchos controles en la pantalla al mismo tiempo. Cuando el formulario se valida en el servidor, los errores de validación se pueden mostrar junto a los controles. Con un dispositivo móvil, la especificación de datos en los formularios y la validación de los mismos pueden ser mucho más difíciles de mostrar en un formato que sea utilizable. Además, en los dispositivos móviles podría optar por proporcionar accesos directos que permitan al usuario rellenar información escribiendo menos, ya que es posible que resulte más difícil escribir en esos dispositivos.
Por estas razones, debe crear páginas independientes en la aplicación Web ASP.NET para su uso en exploradores de escritorio y de dispositivos móviles. Una página desarrollada específicamente para los exploradores de dispositivos móviles permite dividir la lógica de presentación en partes más pequeñas que funcionen mejor para el área de presentación y el hardware de entrada de datos del dispositivo.
El espacio de nombres System.Web.Mobile de ASP.NET está diseñado específicamente para el desarrollo web móvil. La página Web móvil se crea a partir de la clase base MobilePage y se agregan controles de servidor Web móviles desde el espacio de nombres System.Web.Mobile. Los controles de servidor Web móviles disponen de varios adaptadores especializados en .NET Framework y, por consiguiente, están especialmente orientados al desarrollo de aplicaciones Web móviles para una amplia gama de dispositivos móviles.

La mayoría de los controles de servidor web ASP.NET siguen el modelo de arquitectura de adaptador unificado. Esto significa que todos los controles se pueden comportar de forma diferente, según el dispositivo que realiza la solicitud, mediante una llamada a un adaptador personalizado que proporcione los comportamientos apropiados para dicho dispositivo, como la creación del lenguaje de marcado adecuado. Si se ha configurado un adaptador en el archivo de definición del explorador para el dispositivo o el explorador que realiza la solicitud, ASP.NET lo llamará en cada fase del ciclo de vida de un control de servidor Web. De esta manera, el adaptador podrá ajustar, por ejemplo, el resultado representado y controlar la lógica de estado de vista específica del dispositivo o las características individuales del dispositivo. Los archivos de definición del explorador se encuentran en la carpeta Browsers del directorio Config de .NET Framework o en la carpeta App_Browsers de una aplicación Web.
Actualmente, no se proporciona ningún adaptador para los controles de ASP.NET. Hay, sin embargo, un conjunto abundante de adaptadores de los controles de ASP.NET Mobile para una gran variedad de dispositivos y exploradores.
Puede crear adaptadores personalizados para cada dispositivo y hacer que el marco de trabajo de páginas ASP.NET los utilice cuando un dispositivo concreto tenga acceso a su página. Para obtener más información, vea Información general sobre la arquitectura del comportamiento adaptable de los controles.

Elegir adaptadores personalizados o controles móviles

Para páginas dirigidas a dispositivos móviles, debe utilizar los controles de servidor Web móviles y crear paginas que se hereden de MobilePage. Estos controles admiten muchos dispositivos móviles, como teléfonos móviles. ASP.NET incluye controles de servidor Web móviles para una amplia gama de necesidades específicas de los entornos móviles y de desarrollo Web en general. Además, ya existen adaptadores de dispositivos para controles móviles para los principales dispositivos y sus lenguajes de marcado.
Microsoft continuará proporcionando actualizaciones de los adaptadores para los controles de servidor Web móviles cuando evolucionen los principales lenguajes de formato. Esto le permitirá admitir nuevos lenguajes de formato con los mismos controles que está utilizando en la actualidad. Por ejemplo, si va a crear un sitio de comercio electrónico que admite exploradores de escritorio, así como una amplia gama de dispositivos móviles, tendría que crear un conjunto de páginas ASP.NET que hereden de la clase Page y otro conjunto de páginas que hereden de la clase base MobilePage y utilicen controles móviles.
Si es necesario, puede crear sus propios adaptadores personalizados o puede modificar los existentes si los nuevos dispositivos exigen requisitos de funcionamiento nuevos en los controles de servidor Web móviles.
Hay escenarios en los que tiene sentido el uso de controles de servidor Web ASP.NET y la escritura de adaptadores personalizados. Generalmente, éstos serán aplicaciones para exploradores de escritorio completos en los que son necesarias variaciones de comportamiento en función del explorador o aplicaciones orientadas a cierto tipo de dispositivos muy particulares para los que no se garantizan los controles móviles y su conjunto de características. Por ejemplo, imagine que crea una aplicación de reclamaciones de seguros que tiene una interfaz basada en explorador para su uso en la oficina y una interfaz para diversos dispositivos para su uso fuera de la oficina. Esta aplicación podría utilizar las mismas clases de página base para las páginas normales y las páginas para diversos dispositivos. Únicamente debería crear adaptadores personalizados para el dispositivo que se ha implementado fuera de la oficina

Administración de sitios web ASP.NET

Con las características del sistema de configuración de ASP.NET puede configurar un servidor entero, una aplicación ASP.NET o páginas individuales de subdirectorios de la aplicación. Puede configurar características, como modos de autenticación, almacenamiento en caché de páginas, opciones del compilador, errores personalizados, opciones de depuración y seguimiento, etc.
El sistema de configuración de ASP.NET ofrece una infraestructura extensible que le permite definir las opciones de configuración en archivos XML que se implementan fácilmente. Estos archivos, cada uno de los cuales se denomina Web.config, pueden existir en varias ubicaciones de una aplicación ASP.NET. Puede agregar o revisar en cualquier momento las opciones de configuración con un impacto mínimo sobre las aplicaciones y los servidores Web que haya en funcionamiento.
Para obtener más información acerca de cómo configurar aplicaciones cliente de .NET Framework, veaConfigurar aplicaciones y Esquema de los archivos de configuración de .NET Framework.
NotaNota
Las características del sistema de configuración de ASP.NET sólo se aplican a los recursos de ASP.NET. Por ejemplo, la autenticación mediante formularios sólo restringe el acceso a los archivos de ASP.NET, pero no a los archivos estáticos ni a los archivos clásicos de páginas Active Server (ASP), a menos que dichos recursos estén asignados a extensiones de ASP.NET. Utilice las características de configuración de Microsoft Internet Information Services (IIS) para configurar los recursos que no son de ASP.NET. Para obtener más información, vea Working with the Metabase (IIS 6.0) y IIS Metabase Properties.

Servicios Web ASP.NET

Este tema forma parte de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse mediante Windows Communication Foundation.
Los servicios Web son componentes de un servidor web a los que puede llamar una aplicación cliente realizando solicitudes HTTP a través de Internet. ASP.NET permite crear servicios Web personalizados o utilizar servicios de aplicación integrados y llamar a estos servicios desde cualquier aplicación cliente.Sugerimos el siguiente orden de la documentación para ayudarle a desplazarse por los temas relacionados.

Seguridad de ASP.NET

La seguridad es un aspecto muy importante de las aplicaciones web ASP.NET. Los temas de esta sección proporcionan información adicional sobre los problemas de seguridad que se producen en las aplicaciones web. Se incluye información sobre cómo mitigar las amenazas de seguridad habituales, cómo proteger los recursos en una aplicación web, y cómo autenticar y autorizar a los usuarios individuales.
Los temas de esta sección proporcionan consejos para mejorar la seguridad de su aplicación a través de la autenticación de usuarios, la autorización, el cifrado de datos, etc.
NotaNota
Existen muchas amenazas y medidas que se pueden tomar contra ellas al proteger una aplicación ASP.NET. Se recomienda encarecidamente que revise y aplique la guía y las listas de comprobación proporcionadas en los artículos Improving Web Application Security: Threats and Countermeasures yBuilding Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication en el sitio web Microsoft Patterns and Practices.

Acceso a datos de ASP.NET

ASP.NET contiene características que permiten agregar acceso a datos a las páginas Web ASP.NET con muy poco código o nada en absoluto. Puede conectarse a bases de datos, datos y archivos XML, y objetos comerciales para utilizarlos como orígenes de datos. A continuación, puede mostrar los datos mediante diversos controles que proporcionan gran flexibilidad para la presentación de los datos en la página.Sugerimos el siguiente orden de la documentación para ayudarle a navegar por los temas relacionados.

ASP.NET modelos de programacion

Actualmente, ASP.NET soporta tres modelos de programación: ASP.NET Web Forms, ASP.NET MVC y ASP.NET Web Pages. Aunque los tres modelos de programación se ejecutan sobre la misma base de ASP.NET, cada uno de ellos estructura la aplicación de maneras completamente distintas, promueve metodologías de desarrollo diferentes y se adapta a perfiles de desarrolladores distintos. Algunas características que son virtudes en unos modelos de programación, pueden ser consideradas debilidades en el otro. ¿Qué es más importante, desarrollar a un gran nivel de abstracción o tener control total cada uno de los aspectos de la aplicación? Simplicidad vs. Control. Flexibilidad vs. Eficiencia. Estas son las compensaciones que hay que baremar a la hora de elegir. En esta serie de artículos repasaremos las diferencias entre los tres modelos de programación, y los escenarios favorables a cada uno de ellos.
Es importante recalcar que el hecho de elegir uno de los modelos de programación al comenzar un proyecto de ASP.NET no excluye necesariamente a los otros, sino que es posible tener aplicaciones “híbridas” y en muchos casos tendrá todo el sentido desarrollar ciertas partes de la aplicación con un modelo de programación y otras partes con otro modelo distinto.
ASP.NET Web Forms fue el primero de los tres modelos de programación en existir, y proporciona un gran nivel de abstracción con un modelo de programación familiar basado en eventos y controles que favorece la productividad mediante la programación declarativa reduciendo la cantidad de código necesaria para implementar una determinada funcionalidad.
ASP.NET MVC se concibió como alternativa a Web Forms y proporciona un modelo de programación basado en el popular patrón de arquitectura MVC. Entre sus principales características destacan su completa integración con pruebas unitarias y su separación más clara entre la lógica de presentación, la lógica de negocio y la lógica de acceso a datos.
Comunidad ASP.NET MVC en español: https://groups.google.com/d/forum/mundoaspnetmvc
ASP.NET Web Pages es el más reciente de los tres modelos de programación, y fue creado como respuesta a una creciente demanda de desarrolladores web sin experiencia previa con ASP.NET, cuya iniciación en ASP.NET Web Forms o MVC les suponía una inversión inicial de tiempo demasiado grande. Web Pages proporciona un modelo de programación más simple y rápido de aprender, sin renunciar a toda la funcionalidad y flexibilidad de ASP.NET.

estructura de directorios

Estructura de directorios[editar · editar código]

En general, la estructura de directorios de ASP.NET puede ser determinada por las preferencias del desarrollador. Aparte de unos pocos nombres de directorios reservados, el sitio puede expandirse a cualquier número de directorios. La estructura es típicamente reflejada directamente en lasurls.
Los nombres de directorios especiales (a partir de ASP.NET 2.0 son):16
App_Browsers
Contiene archivos de definición específicos para navegadores.
App_Code
Es un directorio para códigos. El servidor ASP.NET automáticamente compilará los archivos (y subdirectorios) en esta carpeta en un ensamblado que es accesible desde cualquier página del sitio. App_Code es típicamente usada para código de acceso a datos, código de modelo o código de negocios. También cualquier manejador http específico para el sitio e implementación de módulos y servicios web van este directorio. Como alternativa a utilizar App_Code el desarrollador puede optar por proporcionar un ensamblado independiente con código precompilado.
App_Data
Directorio por defecto para las base de datos, tales como archivos mdb de Microsoft Access y archivos mdf de Microsoft SQL Server. Este directorio es usualmente el único con permisos de escritura en la aplicación.
App_LocalResources
Contiene archivos de recursos localizados para páginas individuales del sitio.
App_GlobalResources
Contiene archivos resx con recursos localizados disponibles para cada página del sitio. Este es donde el desarrollador ASP.NET típicamente almacenara mensajes que serán usados en más de una página.
App_Themes
usado para temas alternativos del sitio.
App_WebReferences
Usado para archivos de descubrimiento y archivos WSDL para referencias a servicios web para ser consumidos en el sitio.
Bin
Contiene código compilado (archivos .dll) para controles, componentes, y otro código que pueda ser referenciado por la aplicación. Cualquier clase representada por código en la carpeta Bin es automáticamente referenciada en la aplicación. Son archivos o librerias que tienen como principal acción ejecutar una función cuando estas son llamadas o se invocan.

Evolución respecto al ASP clásico[editar · editar código]

En el modelo de desarrollo web basado en páginas activas, la programación ASP actual tiene diversas limitaciones:
  • Para que todo ocurra en una página web, es habitual escribir una gran cantidad de código para resolver necesidades sencillas. ASP.NET incorpora un modelo declarativo a la programación web: los controles de servidor funcionan en una página Web simplemente declarándolos. Cuando se carga la página ASP.NET, se instancian los controles listados en la página ASP y es responsabilidad del control emitir código HTML que el navegador pueda entender.
  • ASP clásico es un tanto desorganizado. En una página ASP podemos incluir casi todo: HTML plano, código script, objetos COM y texto. No hay una distinción formal entre el contenido de una página y su comportamiento: simplemente, insertamos código en la página, y a ver qué pasa. ASP.NET impone un cierto orden sobre el modelo de programación estándar ASP. En cierto modo, esta "desorganización" puede evitarse fácilmente usando el sentido común y algunas de las nuevas tecnologías. Por ejemplo, podemos escribir en nuestras páginas ASP únicamente código VBScript. Dicho código generaría un mensaje XML, que luego seria interpretado por un archivo XSLT. De esta forma conseguimos evitar el llamado "código spaguetti", aumentando la claridad del código y la velocidad de ejecución de las páginas ASP. Sin embargo, en la medida en que el programador deba trabajar con código escrito por otros, se enfrentará a menudo con las malas prácticas que son en gran medida acentuadas por la permisividad del ASP clásico.
  • La tercera limitación en el desarrollo con ASP es que con el tradicional utilizamos lenguajes de scripting no tipados como VBScript o JScript. Podemos instalar otros motores de scripting que impongan verificación de tipos; sin embargo, no son universalmente conocidos o utilizados como los anteriores. ASP.NET claramente separa la porción basada en script de una página web de su contenido.
  • ASP.Net, puede decirse que es un nuevo nivel de abstracción en la construcción de sitios web, por que se pueden crear rápidamente aplicaciones web, basándose en los controles incluidos en el frameWork o muchos gratuitos que hay en la red, ocultando el código de mucho Ej: Puedes crear fácilmente un grid o tabla, y ésta se auto-ordena, página, etc, obteniendo sus datos desde cualquier base de datos. Incluye una gran herramienta para la construcción de reportes, y esto incluyen medios automáticos para exportarlos a XLS o PDF, y de igual forma incluye CristalReport. Además permite separar completamente la interfaz de la lógica de negocio. Excelente para desarrollo de aplicaciones multicapas.
  • Es muy sencilla la creación de páginas con AJAX, sólo incluyendo unos controles, así como descargar gratuitamente el ToolKit de ASP.Net Ajax.

características de asp.net

Páginas[editar · editar código]

Las páginas de ASP.NET, conocidas oficialmente como "web forms" (formularios web), son el principal medio de construcción para el desarrollo de aplicaciones web.8 Los formularios web están contenidos en archivos con una extensión ASPX; en jerga de programación, estos archivos típicamente contienen etiquetas HTML o XHTML estático, y también etiquetas definiendo Controles Web que se procesan del lado del servidor yControles de Usuario donde los desarrolladores colocan todo el código estático y dinámico requerido por la página web. Adicionalmente, el código dinámico que se ejecuta en el servidor puede ser colocado en una página dentro de un bloque <% -- código dinámico -- %> que es muy similar a otras tecnologías de desarrollo como PHPJSP y ASP, pero esta práctica es, generalmente, desaconsejada excepto para propósitos de enlace de datos pues requiere más llamadas cuando se genera la página.

ASP.NET sólo funciona sobre el servidor de Microsoft IIS, lo que supone una desventaja respecto a otros lenguajes del lado de servidor, ejecutables sobre otros servidores más populares como Apache. Ejemplos de esto son PHPPerl o Python.

Formulario web de ejemplo[editar · editar código]

Este es un ejemplo que utiliza código "en línea", opuesto al código independiente (code-behind).
<%@ Page Language="C#" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<script runat="server">
 
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = DateTime.Now.ToLongDateString();
    }
 
</script>
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Página de Ejemplo</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label runat="server" id="Label1" />
    </div>
    </form>
 
</body>
</html>

El modelo Code-behind[editar · editar código]

Microsoft recomienda que para realizar programación dinámica se use el modelo code-behind, o de respaldo, que coloca el código en un archivo separado o en una etiqueta de script especialmente diseñada. Los nombres de los archivos code-behind están basados en el nombre del archivo ASPX tales como MiPagina.aspx.cs o MiPagina.aspx.vb (esta práctica se realiza automáticamente en Microsoft Visual Studio y otros entornos de desarrollo). Cuando se usa este estilo de programación, el desarrollador escribe el código correspondiente a diferentes eventos, como la carga de la página, o el clic en un control, en vez de un recorrido lineal a través del documento.
El modelo code-behind de ASP.NET marca la separación del ASP clásico y alienta a los desarrolladores a construir aplicaciones con la idea de presentación y contenido separados en mente. En teoría, esto permite a un diseñador web, por ejemplo, enfocarse en la creación del diseño con menos posibilidades de alterar el código de programación mientras lo hace. Esto es similar a la separación en el Modelo Vista Controlador

Ejemplo[editar · editar código]

<%@ Page Language="C#" CodeFile="EjemploCodeBehind.aspx.cs" Inherits="SitioWeb.EjemploCodeBehind" 
AutoEventWireup="true" %>
La etiqueta superior es colocada al inicio del archivo ASPX. La propiedad CodeFile de la directiva @ Page especifica qué archivo (.cs o .vb) contiene el código code-behind mientras que la propiedad Inherits especifica la clase de la cual deriva la página. En este ejemplo, la directiva @ Page está incluida en EjemploCodeBehind.aspx y el archivo EjemploCodeBehind.aspx.cs contendrá el código para esta página:
using System;
 
namespace SitioWeb
{
 public partial class EjemploCodeBehind: System.Web.UI.Page
 {
  protected void Page_Load(object sender, EventArgs e)
  {
 
  }
 }
}
En este caso, el método Page_Load() será llamado cada vez que la página ASPX sea solicitada al servidor. El programador puede implementar manejadores de eventos en varias etapas del proceso de ejecución de la página..

Controles de usuario[editar · editar código]

ASP.NET permite la creación de componentes reutilizables a través de la creación de Controles de Usuario (User Controls). Un control de usuario sigue la misma estructura que un formulario web, excepto que los controles derivan de la clase System.Web.UI.UserControl, y son almacenados en archivos ASCX. Como los archivos ASPX, un ASCX contiene etiquetas HTML o XHTML, además de etiquetas para definir controles web y otros controles de usuario. También pueden usar el modelo code-behind.
Los programadores pueden agregar sus propias propiedades y métodos,9 y manejadores de eventos.10 Un mecanismo de eventos en burbuja proporciona la capacidad de pasar un evento disparado por un control de usuario a la página que lo contiene .

Administración del estado[editar · editar código]

Las aplicaciones ASP.NET son alojadas en un servidor web y se tiene acceso a ellas mediante el protocolo sin estado HTTP, que no guarda ninguna información sobre conexiones anteriores. Por lo tanto, si la aplicación requiere interacción entre conexiones, tiene que implementar su propia administración del estado. ASP.NET proporciona varias maneras de administrar el estado de las aplicaciones ASP.NET.

Estado de la aplicación[editar · editar código]

El estado de la aplicación (Application state) es una colección de variables definidas por el usuario que son compartidas por todas las invocaciones de una aplicación ASP.NET. Estas son establecidas e inicializadas cuando el evento Application_OnStart se dispara en la carga de la primera instancia de las aplicaciones y están disponible hasta que la última instancia termina. Las variables de estado o variables de sesión de la aplicación son identificadas por nombres.11

Estado de la sesión[editar · editar código]

El estado de la sesión (Session state) es una colección de variables definidas por el usuario, las cuales persisten durante la sesión de un usuario. Estas variables son únicas para diferentes instancias de una sesión de usuario, y son accedidas usando la colección Session. Las variables de sesión pueden ser preparadas para ser automáticamente destruidas después de un determinado tiempo de inactividad, incluso si la sesión no ha terminado. Del lado del cliente, una sesión de usuario es identificada por una cookie o codificando el ID de la sesión en la misma URL.11
ASP.NET proporciona tres modos de persistencia para variables de sesión:11
InProc
Las variables de sesión son mantenidas dentro del proceso. Sin embargo, en este modo, las variables son destruidas cuando el proceso ASP.NET es reciclado o terminado.
StateServer
En este modo, ASP.NET ejecuta un servicio de Windows separado que mantiene las variables de estado. Como esta administración de estado ocurre fuera del proceso ASP.NET, tiene un impacto negativo en el rendimiento, pero permite a múltiples instancias de ASP.NET compartir el mismo estado del servidor, permitiendo que una aplicación ASP.NET pueda tener su carga balanceada y escalada en múltiples servidores. También, como el servicio de administración del estado se ejecuta independiente de ASP.NET, las variables pueden persistir a través de las finalizaciones del proceso ASP.NET.
SqlServer
En este modo, las variables de estado son almacenadas en un servidor de base de datos, accesible usando SQL. Las variables de sesión pueden persistir a través de finalizaciones de procesos también en este modo.