Las variables estáticas en ASP.NET me tomaron desprevenido hoy. Entonces me asusté, porque esto significa que tengo un malentendido fundamental de las variables estáticas en el mundo de la web o que ASP.NET no funciona como pensé que lo haría.PHP vs ASP.NET variables estáticas
Así en ASP.NET
public class MyClass {
public static bool myVar = true;
}
Si ASPUserA establece MyClass.myVar = false
cualquier otro usuario en el sistema podría experimentar estos cambios. Por lo tanto, ASPUserB tendría myVar
= false
. Mi Fuente: http://www.foliotek.com/devblog/avoid-static-variables-in-asp-net/
class MyClassPHP {
public static $myVar = false;
}
Si PHPUserA establece MyClass::$myVar = true
quiere decir esto que cada usuario en el sistema experimenta estos cambios ???
Gracias.
Tras una investigación adicional lo hice;
class MyClassPHP {
public static $myVar = 0;
}
Luego tuve usuarios que fueron a una página hacen esta
MyClassPHP::$myVar++;
echo MyClassPHP::$myVar;
Siempre fue 1. No importa cuántas veces lo actualiza o simultáneas conexiones ... WOHHH que fue una gran conclusión, o si no, estoy jodido !!
actualización de ASP.NET
Tras una posterior investigación y pruebas cosas que encontré esto.
public partial class MyPage : System.Web.UI.Page
{
public static int myInt = 0;
protected void Page_PreInit(object sender, EventArgs e)
myInt++;
}
}
Luego mi página puede mostrar myInt
.
Entre los navegadores (Firefox y Chrome) el myInt
fue progresivamente más alto a medida que actualizaba la página. Así que esto no importa si su class
es static
. Solo importa si tienes variables estáticas. Son aplicaciones de ancho.
¡WOW!¿ASP.NET realmente hace eso? Eso es estúpido =/ –
Estoy tan confundido por eso. ¡De alguna forma arruinó mis Paradigmas por una ventana! – Michael
Gracias por convencerme * nunca * para usar ASP.NET ;-P –