entre diferencia c# .net session viewstate global-scope

c# - diferencia - ViewState Vs Session... mantenimiento del objeto a través del ciclo de vida de la página



diferencia entre viewstate y session (3)

El estado de la vista es específico de la página, mientras que el estado de la sesión es específico del navegador. No puede pasar los datos de una página a otra a través del estado de visualización. Pero lo harás con el estado de la sesión. Cada sesión tiene una ID única, donde el estado de visualización almacena datos en campos ocultos en la misma página. La sesión almacena los datos en el lado del servidor, donde se visualizan los datos de estado almacenados en la página, por lo tanto la página se vuelve pesada y la aplicación lenta. Cada control tiene estado de vista verdadero por defecto que almacena su estado (estado de control), podemos habilitarlo o deshabilitarlo fácilmente haciendo enableviewstate = false

¿Alguien puede explicar la diferencia entre ViewState y Session?

Más específicamente, me gustaría saber la mejor manera de mantener un objeto disponible (estableciendo continuamente miembros a través de devoluciones) a lo largo del ciclo de vida de mi página.

Actualmente uso Sesiones para hacer esto, pero no estoy seguro si es la mejor manera.

Por ejemplo:

SearchObject searchObject; protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { searchObject = new SearchObject(); Session["searchObject"] = searchObject; } else { searchObject = (SearchObject)Session["searchObject"]; } }

eso me permite usar mi searchObject en cualquier otro lugar de mi página, pero es algo engorroso ya que tengo que reiniciar mi var de sesión si cambio cualquier propiedad, etc.

Estoy pensando que debe haber una mejor manera de hacerlo para que .NET no vuelva a crear instancias del objeto cada vez que se cargue la página, sino que también lo ubique en el ámbito global de la clase de página.


En primer lugar Viewstate es por página donde, como la sesión existe en toda la aplicación durante la sesión actual, si desea que su searchobject persista en todas las páginas, entonces la sesión es el camino correcto a seguir.

En segundo lugar, Viewstate se transfiere como texto cifrado entre el navegador y el servidor con cada devolución, de modo que cuanto más se almacena en Viewstate, más datos bajan y vuelven del cliente cada vez, mientras que la sesión se almacena en el lado del servidor. y lo único que va y viene es un identificador de sesión, ya sea como una cookie o en la URL.

Si la sesión o viewstate es el lugar correcto para almacenar su objeto de búsqueda depende de lo que esté haciendo con él y de qué datos contenga, con suerte la explicación anterior le ayudará a decidir el método correcto para usar.


Si el objeto de búsqueda no es de gran tamaño, entonces use ViewState. Un ViewState es perfecto si solo desea que el objeto viva para el ciclo de vida de la página actual.

También se puede usar un objeto de sesión, pero obviamente una vez que el objeto de búsqueda está ahí, estará más tiempo para el ciclo de vida de la página.

Además, una cosa que hago con los objetos ViewState / Session es envolver su acceso con una propiedad:

public object GetObject { get { return ViewState["MyObject"]; } set { ViewState["MyObject"] = value; } }

Tiendo a encontrarlo más limpio para hacerlo de esta manera. Simplemente cambie el código anterior para que se ajuste a sus necesidades.