2008-11-19 18 views
38

si tengo una aplicación ASP.NET estándar, ¿hay alguna diferencia entre hacer que un objeto sea estático en lugar de poner la instancia del objeto en el estado de la aplicación?Estado de la aplicación ASP.NET frente a un objeto estático

según entiendo, ambos objetos existen una sola vez para el dominio de la aplicación.

En segundo lugar, ¿qué ocurre si tiene un objeto estático en un dll de referencia para un sitio ASP.NET? También es parte del dominio de la aplicación, por lo que siempre existirá una vez.

+1

I don' Conozco detalles, pero me haría una pregunta "¿es parte de mi estado de solicitud?"; luego, póngalo allí. Si es algo estático que también podría suceder en, por ejemplo, Windows Client, lo crearía como estático. – badbadboy

Respuesta

56

Desde: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312607

ASP.NET incluye el estado de aplicación principalmente para la compatibilidad con ASP clásico para que sea más fácil a las aplicaciones existentes migrar a ASP.NET. Se recomienda que almacene datos en miembros estáticos de la clase de aplicación en lugar de en el objeto de aplicación . Esto aumenta el rendimiento de porque puede acceder a una variable estática más rápido de lo que puede acceder a un elemento en el diccionario de la aplicación .

También, sí, las variables estáticas se comportan de la misma manera, independientemente del lugar en que se cargan desde, y existen exactamente una vez por dominio aplicación (a menos que estés hablando de los etiquetados [ThreadStatic])

+0

También obtiene seguridad de tipo cuando usa variables estáticas en lugar del objeto de estado de la aplicación. – BornToCode

Cuestiones relacionadas