2010-07-20 10 views

Respuesta

1

Si se siente cómodo con todo el esquema de devolución de datos ASP.Net, una de las ventajas de adherirse a tales controles es que (la mayor parte del tiempo) que le protegen de effecs laterales de las devoluciones de datos y tal. Pero en este caso concreto se trata con un costo: usted tiene una devolución de datos completa para cada petición AJAX (que incluirá el estado de vista), que puede ser un impacto en el rendimiento en comparación con una petición AJAX recta, cf:

http://geekswithblogs.net/dlussier/archive/2007/09/06/115188.aspx

Tampoco estoy seguro de si maneja bien las solicitudes entre sitios (JSONP y demás), por lo que estas son dos advertencias a considerar.

2

Sure, En mi humilde opinión, debería preferir jQuery a los paneles de actualización de ASP.Net estándar. el motivo (principal) es el rendimiento, cuando publicas algunos datos usando jQuery.ajax solo publicas lo que el servidor necesita para entender la publicación. esto es generalmente 1-2 parámetros de texto.

cuando realiza la misma publicación utilizando un panel de actualización, toda la página sale a dar un paseo detrás de escena al servidor, luego la página completa regresa y se representa el área.

si utiliza jQuery, puede crear una página ashx en el servidor, esta no tiene la carga de página y el ciclo de vida de un formulario web regular y también es muy liviana.

+0

Tengo una pregunta en mente ... ¿Qué pasa si javascript está deshabilitado en el navegador del cliente? –

+0

@Amit - A continuación, se va a realizar una devolución de datos normalmente, puede obtener un comportamiento como este con UpdatePanels o jQuery :) –

+0

hmmm okk Gracias Avi. –

10

Sí, de hecho, debería casi siempre prefiere utilizar su propia (o jQuery) funcionalidad ajax antes.

Hay mucho de sobrecarga asociada con la MS Ajax UpdatePanel (se realiza una devolución de datos completa, y luego actualiza el elemento (s) que cambió en la página), por lo que las características agradables en un AJAX sitio web - responsivenes, continuidad, etc. - se pierden casi por completo (en mi humilde opinión). Usted tiene muy poco control de lo que realmente se envía por el cable, de lo que se devuelve y de cómo se trata al devolverlo al cliente.

Con jQuery Ajax, por otro lado, obtiene un control total e instantáneo, puede realizar las solicitudes de peso liviano (o pesado) que desee, y admitámoslo: la API no es de ninguna manera más difícil uso que el de UpdatePanel.

Teniendo esto en cuenta, todavía hay escenarios cuando UpdatePanel está bien, o incluso mejor. Especialmente en ASP.NET WebForms, puede ser complicado devolver solo una parte de una página de manera que se degrada graciosamente si el usuario no puede usar javascript, y para el rápido estilo de desarrollo de "arrastrar y soltar", hay realmente de ninguna manera jQuery puede competir. (Si te gusta el desarrollo de arrastrar y soltar o no es una discusión completamente diferente ...)

+1

Aunque estoy totalmente de acuerdo con el sentimiento y también prefiero jQuery, la afirmación "es casi imposible tener más de un UpdatePanel en una página" está ** completamente ** mal, esto es muy fácil de hacer, y una práctica común. –

+0

¡Con conexión! He trabajado en proyectos donde se tomó la decisión de usar UpdatePanel en lugar de AJAX normal y el rendimiento tiende a ser atroz. En un caso particular, fue la combinación de un DataGridView + UpdatePanel lo que hizo que la aplicación se pusiera de rodillas y la hiciera prácticamente inútil. Terminamos rediseñando esta parte de la aplicación para evitar el uso de un UpdatePanel. Iría tan lejos como para decir que básicamente no hay un buen escenario para usar UpdatePanel de ninguna otra manera para recuperar sus datos a través de AJAX. – chsh

+0

@Nick - entonces el problema con múltiples paneles de actualización podría haberse resuelto desde la última vez que lo intenté. Como dije, esto fue hace un par de años. (Estaba completamente enganchado tan pronto como vi el framework MVC ...: P) –

2

Yo diría que definitivamente debes favorecer jQuery AJAX sobre ASP.NET AJAX UpdatePanel. Si nos fijamos en el ASP.NET AJAX site, realmente no hay una mención de ASP.NET AJAX y/o UpdatePanel ... pero hay una gran cantidad de mención de jQuery. De hecho, parece que Microsoft está favoreciendo a los desarrolladores de ASP.NET que usan jQuery como el marco AJAX de JavaScript del lado del cliente sobre UpdatePanel y los controles ASP.NET AJAX relacionados.

Todavía proporcionan enlaces al kit de herramientas de control AJAX, pero con tantos complementos de jQuery, ¿por qué necesitaría el kit de herramientas?

UpdatePanel es más lento y voluminoso: vaya con jQuery AJAX.

0

Como han indicado otros, MS-Ajax y UpdatePanels funcionan mal, a veces hasta el punto de ser inutilizables. Como han señalado otros, las devoluciones de llamada ajax que deberían ser pequeñas & livianas son pesadas porque también incluyen el ViewState completo.

Además de estas cuestiones, he encontrado algunos otros inconvenientes a MS-Ajax:

  1. El javascript generada-MS incluye una gran cantidad de gastos generales. Han incorporado una gran cantidad de comprobación de tipos y verificación variable, con la intención de hacer que su javascript sea más seguro, supongo. Esta sobrecarga ralentiza significativamente el procesamiento del lado del navegador, especialmente cuando esas funciones javascript generadas se están llamando de forma repetida/recursiva (como es el caso con algunos controles de terceros).
  2. El código subyacente de ASPX se vuelve mucho más complejo y más difícil de mantener, porque el mismo ciclo de vida de página se está ejecutando para la carga inicial de la página, así como para cada devolución de llamada ajax. Al igual que todos los códigos complejos, esto puede ser superado por desarrolladores expertos y por buenos comentarios de código, pero es un inconveniente a tener en cuenta.

Una nota final: el beneficio para MS-Ajax & UpdatePanels es, usted puede conseguir lejos con un 90% javascript-ignorantes y aún codificarlos. El ajax "tradicional" implica MUCHO más codificación de JavaScript que MS-Ajax.

Cuestiones relacionadas