Aquí podría ser tu PUBLICIDAD


¿Pueden los servidores de visualización del lado del servidor solucionar uno de los mayores problemas con ASP.NET?

votos
2

He leído algunos artículos de SO sobre si ASP.NET MVC vale la pena la migración desde ASP.NET normal. Una de las principales razones para usar MVC que he visto citar no fue tener que usar Viewstates.

Sin embargo, es posible eliminar viewstates almacenando la información viewstate en el servidor como se muestra en este artículo . Lo probé en un proyecto de muestra, funciona muy bien, es totalmente transparente por lo que noté y fue muy fácil de implementar.

Entonces, ¿dónde está la trampa? Espero que ponga una carga ligeramente mayor en el servidor, pero ¿realmente puede ser tan malo? Si no es así, ¿por qué no hay más personas que utilizan este enfoque en lugar de quejarse de los estados de visibilidad directa?

Publicado el 12/03/2009 a las 21:18
fuente por usuario Adrian Grigore
En otros idiomas...        العربية       

4 respuestas

votos
2

El único problema con viewstate es abusar del uso de él. Esto sucede fácilmente ya que el valor predeterminado es tener todo encendido. Ni siquiera puede desactivarlo por defecto en una página, y activar selectivamente controles específicos (agregarán soporte para esto en el 4.0). Verá pocos códigos con viewstate = false en él, y con listas de información puede ser muy rápido.

Incluso hay algunos controles de terceros que abusan terriblemente. Tuve que ayudar a descubrir por qué una página era terriblemente lenta (ya que ni siquiera funciona), y resultó que la cantidad de información descargada era enorme, la causa era que viewstate era 10 veces el tamaño del contenido ( realmente) y era un control de un tercero que le gustaba almacenar todo lo que le entregas (lo que se puso realmente feo porque se le entregó una jerarquía de objetos).

Entonces, el verdadero problema no es el estado de vista, es su tamaño. Si ya tiene el problema de los grandes viewstates (normal grande, no el extremo de los anteriores), moverlo a sesión en el servidor significa que va a almacenar una gran cantidad de información. Esto está trasladando el problema de un lugar a otro, quizás mitigando algunos de sus efectos, pero no soluciona el problema real, almacenando demasiado estado innecesario (porque los desarrolladores lo hicieron o algunas cosas de terceros se portaron mal).

Dicho esto, no creo que lo llamaría el único problema principal con el enfoque regular de asp.net. No tome esto como un "no desarrolle con él", sino más bien como "si se desarrolla en él, llegue a conocerlo realmente bien". Trabajo mucho con asp.net regular, puede funcionar y muy bien. Si comenzara en este punto, creo que iría con asp.net mvc, ya que creo que asp.net necesita mucho más del desarrollador para hacerlo bien.

Respondida el 12/03/2009 a las 09:29
fuente por usuario eglasius


Aquí podría ser tu PUBLICIDAD


votos
1

Tiendo a no estar de acuerdo con la afirmación de que pasar a ASP.NET MVC tiene que ver con la eliminación de viewstate. El uso o no de ViewState es una preocupación menor cuando se trata de decidir si pasar a ASP.NET MVC. Más importante es la separación que obtiene entre su modelo (los tipos que definen su área problemática) sus controladores (el código que describe cómo los usuarios interactúan con su sitio) y sus vistas (la lógica de representación que genera HTML o cualquier otra marca que desee) .

Con respecto a poner viewstate en su servidor, esto bien podría convertirse en un cuello de botella de escalabilidad: si tuviera un sitio web multi-servidor, entonces necesitaría poder acceder a ese viewstate desde todos esos servidores. Luego debe preocuparse por borrar ese ViewState fuera: cuando está incrustado en la página no hay nada que considerar, pero si está almacenado en el servidor, ¿cuánto tiempo debe mantenerse el estado de visualización de una página?

Básicamente, la razón por la que viewstate existe es para apoyar el enfoque de "formularios web" para el desarrollo web, donde una página se publica en el servidor para actualizarse. Es este enfoque del desarrollo web, en lugar de viewstate en sí, lo que creo que la mayoría de la gente quiere evitar. El marcado sin estado, más las actualizaciones de AJAX cuando sea necesario, lo convierten en una aplicación mucho más limpia y en la que el almacenamiento en caché de resultados se puede aplicar mucho más fácilmente.

Respondida el 15/03/2009 a las 10:58
fuente por usuario Martin Peck

votos
0

Para ser honesto, la mayoría de las veces puedes recortar el estado de vista: muchos desarrolladores, yo incluido, no reviso todos los controles que no lo necesitan y lo deshabilito. Tiendo a encontrar que solo necesito Viewstates para cosas como datagrids, la mayoría de los otros controles tienden a funcionar bien, pero como dije, no lo hago con la frecuencia que debería.

Respondida el 12/03/2009 a las 09:33
fuente por usuario Surgical Coder

votos
0

Cuanto más grande sea tu proyecto y / o cuanta más gente tengas potencialmente usándolo, ese minúsculo efecto en tu desempeño puede volverse bastante masivo.

Respondida el 12/03/2009 a las 09:21
fuente por usuario TheTXI