Variable estática en la página asp.net
static-variables (5)
Como ya mencionó Adeel: las variables estáticas (o compartidas en VB.Net) abarcan toda la aplicación. Eso significa que son iguales para todos los usuarios y existen hasta que se detiene el servidor web o se abandona la última sesión.
Podría usar la sesión para almacenar variables que pertenecen al usuario actual.
Si necesita acceder a numberOfReviews de otros usuarios (por ejemplo, como administrador o para estadísticas), puede usar la base de datos, asp.net-cache o un diccionario estático simple con el ID de usuario como clave.
Tengo una duda sobre el uso de la variable estática en las páginas de Asp.net.
Tengo una página que dice UserDetails.aspx. En esta página, tengo una variable estática para almacenar algunos datos específicos de un usuario. Entonces, ¿esta variable se compartirá entre varios usuarios o se creará una variable separada para cada usuario?
public partial class UserDetails : System.Web.UI.Page
{
static int numberOfReviews=0;
protected void Page_Load(object sender, EventArgs e)
{
numberOfReviews= GetReviews();
}
}
Aquí, ¿las revisiones de numberOfReviews serán específicas para cada usuario o serán compartidas?
numberOfReviews
El alcance de la variable estática es de aplicación amplia. numberOfReviews
se compartirán entre todos los usuarios. debe utilizar la Session
para almacenar por usuario, por lo que es accesible en todas las páginas. Por otro lado, si solo lo necesita en una página específica, puede guardarlo en ViewState
y volver a publicarlo .
Se compartirá en toda la aplicación al igual que la Aplicación ["some_id"].
Use la variable int normal para esto.
Usualmente para hacer esto se usa una base de datos.
Data Table
userId | UserViews
También puede usar la variable estática como lo está diciendo en ese caso, en el caso de que tenga que almacenar datos en el estado de la aplicación, el problema es que todos los datos se restablecerán cada vez que se reinicien.
Ámbito de la aplicación: las variables que tienen el alcance de la aplicación están disponibles en toda la aplicación, es decir, para todos los usuarios de las aplicaciones en todas las páginas.
Ámbito de la sesión: cuando muchos usuarios se conectan a su sitio, cada uno de ellos tendrá una sesión separada (vinculada a la identidad del usuario que reconoce la aplicación). Cuando la variable tenga un ámbito de sesión, tendrá una nueva instancia para cada sesión. aunque los usuarios accedan a la misma página. La instancia de variable de sesión está disponible en todas las páginas para esa sesión.
Ámbito de página: cuando tiene una variable de instancia en una página, es específica solo de esa página y solo de esa sesión.
Las variables estáticas tienen Application scope
. Todos los usuarios de la aplicación compartirán la misma instancia de variable en su caso.
Tenga en cuenta que aunque las variables estáticas tienen una instancia en el dominio de la aplicación. Por lo tanto, si tiene su aplicación implementada en una granja de servidores web con equilibrio de carga, cada dominio de aplicación tendrá una instancia separada de la variable. Esto podría darte un resultado incorrecto.
Sobre esta base, debe decidir en qué ámbito debería estar su variable. OMI, el uso de variables estáticas es un olor de código y se debe desalentar.