2010-07-13 16 views
8

Hay tanto bombo sobre ASP.NET MVC en estos días, pero la verdad es que los formularios web de ASP.NET no van a ir a ningún lado durante un tiempo. ¿Hay alguna manera para que los desarrolladores actuales optimicen los formularios web de ASP.NET para que funcionen tan rápido como ASP.NET MVC?¿Es posible optimizar ASP.NET WebForms para que funcione tan rápido como ASP.NET MVC?

He notado una diferencia significativa en la velocidad entre los formularios web ASP.NET MVC y ASP.NET. MVC es mucho más ágil y carga páginas más rápido que las formas web. ¿Puedo lograr lo mismo con los formularios web ASP.NET optimizándolo? Si es así, ¿qué recomendarías?

+1

Cita ¿Necesaria cita? "bastante perceptible" no es una indicación fuerte de que algo deba ser optimizado. – jfar

Respuesta

6

En su directiva de página haga lo siguiente:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="TestApp._Default" EnableViewState="false" %> 

Principalmente apagar ViewState hará que constituyen la mayoría de la diferencia en el rendimiento de la página. También limitar el uso de los controles de WebForm también hará que su HTML sea mucho menos detallado ya que tienden a producir HTML muy detallado.

Por otro lado, hacerlo es casi como eliminar algunas de las grandes ventajas de WebForms. Los controles y la abstracción del estado mediante el uso de ViewState es una de las principales razones por las que WebForms es tan popular hoy en día.

Hago un montón de desarrollo de WebForms todavía y también hago MVC. Tener conocimiento de ambos y sus fortalezas lo ayudará a crear una aplicación de rendimiento en cualquiera de los marcos. Cuando creo cualquier aplicación nueva de WebForms, lo primero que hago es ajustar las páginas en un Panel, asegúrese de desactivar ViewState para todo el panel. A medida que desarrollo, y encuentro un uso para el ViewState (por ejemplo, para ahorrar tiempo o simplificar las cosas) lo enciendo caso por caso, así que entiendo por qué lo estoy usando y tomo la decisión correcta de agregar los gastos generales a mi página .

WebForms puede ser tan rápido como MVC si te acercas a tu aplicación web teniendo en cuenta el rendimiento, pero es muy fácil hacerlo mucho más lento si solo quieres ignorar el rendimiento y solo terminar la aplicación.

5

Una razón para ello es debido a ViewState, entre otros códigos inflados como parte de un <ASP:TextBox>, etc. Debe centrarse en el peso de la página.

En igualdad de condiciones, esa es la diferencia de rendimiento principal de la que soy consciente.

+4

No tiene que usar controles ViewState o ASP.NET, detalles de implementación. –

+2

Sí, pero la mayoría de la gente lo hace, y es por eso que MVC parece más rápido, porque ni siquiera es una opción. – Nate

+1

@rick: si no está utilizando controles ASP.NET o ViewState, no está utilizando WebForms. El OP no preguntó sobre MVC frente a trabajar en el mínimo de ASP.NET. –

3

he notado una diferencia bastante perceptible en la velocidad

Tal vez usted debe medir correctamente el rendimiento de una manera definible por primera vez. Entonces, si de hecho tiene una diferencia, será mucho más claro de dónde viene esa diferencia y cómo salvar esa diferencia de rendimiento.

1

¿Es este un caso de dos herramientas diferentes para dos enfoques diferentes para resolver problemas y tratar de compararlos?

+0

a.k.a. manzanas a naranjas – msarchet

8

La tecnología no importa, cómo la implementa su aplicación. Se puede argumentar que ViewState marcaría la diferencia, pero también es un detalle de implementación. ViewState no es necesario y también puede dejarlo en el servidor. Al final del día, ambas tecnologías entregan HTML a través de HTTP.

+4

... a diferentes velocidades. ;) –

+2

.... muéstrame la prueba con la misma salida –

+2

Cada Framework introduce una sobrecarga de canal (MVC tiene que analizar rutas, etc. mientras que WebForms tiene que cablear/escuchar eventos, analizar controles, etc.). La verdadera pregunta es, ¿hay una diferencia medible entre la sobrecarga de los dos Frameworks? Si existe, entonces ninguna cantidad de ajuste del usuario puede obtener uno tan rápido como el otro. –

3

Hay una cosa que puede hacer que ASP.NET sea lento y que otros mencionen: Viewstate. Esto es especialmente cierto para las llamadas ajax. El Viewstate completo se publica al usar UpdatePanels.

Dicho esto, hay una cosa que hará que su sitio ASP.NET supere su sitio ASP.NET MVC: Almacenamiento en caché. ASP.NET permite el almacenamiento en caché de donuts: puede definir reglas de caché en base a WebControl. No puedes hacer esto en ASP.NET MVC.

Si realmente tiene un problema de velocidad, intente encontrar los embotellamientos. Puede tratarse de llamadas a bases de datos (use sql-profiler para verificar), podría estar relacionado con html (use yslow) o podría estar relacionado con la aplicación (pruebe con un generador de perfiles como el de redgate).

+0

Puede almacenar en caché en el nivel de vista parcial en MVC y no hay nada que le impida escribir su propio caché en otros niveles del marco. +1 por mencionar las llamadas a la base de datos como un cuello de botella de rendimiento. – Ryan

+0

No veo cómo se puede almacenar en caché en un nivel parcial. Consulte http://haacked.com/archive/2008/11/05/donut-caching-in-asp.net-mvc.aspx Pero, por supuesto, puede (y debería) almacenar en caché las llamadas a la base de datos. –

Cuestiones relacionadas