2010-07-20 6 views

risposta

1

Grazie Se hai dimestichezza con l'intero schema postback ASP.Net, un vantaggio di attenersi a tali controlli è che (il più delle volte) che vi proteggono dagli effecs laterali da postback e così via. Ma in questo caso specifico si tratta di un costo: si dispone di un postback completo per ogni richiesta AJAX (che comprende lo stato di visualizzazione), che può essere un calo di prestazioni rispetto ad una scala richiesta AJAX, cf:

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

Non sono sicuro se gestisca anche richieste cross-site (JSONP e simili), quindi sono due considerazioni da considerare.

2

Certo, IMHO si dovrebbe preferire jQuery rispetto ai pannelli di aggiornamento standard ASP.Net. il motivo (principale) è la prestazione, quando pubblichi alcuni dati usando jQuery.ajax pubblichi solo ciò di cui il server ha bisogno per capire il post. questo è di solito 1-2 parametri di testo.

quando si esegue lo stesso post utilizzando un pannello di aggiornamento, l'intera pagina esegue una passeggiata dietro le quinte sul server, quindi l'intera pagina torna e l'area viene visualizzata.

se si utilizza jQuery, è possibile creare una pagina ashx sul server, questa non ha il carico di pagina e il ciclo di vita di un normale webform ed è anche molto leggera.

+0

Ho una domanda in mah mente ... Cosa succede se javascript è disabilitato nel browser client? –

+0

@Amit - Quindi verrà postback normalmente, è possibile ottenere un comportamento come questo con UpdatePanels o jQuery :) –

+0

hmmm okk Grazie Avi. –

10

Sì, infatti, è necessario quasi sempre preferire l'utilizzo della propria funzionalità ajax (o jQuery) prima.

C'è un sacco di overhead associato con la MS Ajax UpdatePanel (esegue un postback completo, e quindi aggiorna l'elemento (s) che ha cambiato nella pagina), in modo che le caratteristiche piacevoli in un AJAX abilitato sito web - responsive, continuità ecc. - sono quasi completamente persi (IMHO). Hai pochissimo controllo su ciò che viene effettivamente trasmesso via cavo, su ciò che viene restituito e su come viene trattato al momento del reso al cliente.

Con jQuery Ajax, invece, si ottiene il controllo completo e istantaneo, è possibile effettuare come richieste leggere (o pesanti) come si desidera, e lascia che faccia - l'API non è in alcun modo più difficile da utilizzare rispetto a UpdatePanel.

Con questo in mente, ci sono ancora scenari quando UpdatePanel va bene, o anche meglio. Soprattutto nei WebForm di ASP.NET, può essere complicato restituire solo parte di una pagina in un modo che degrada con grazia se l'utente non può usare javascript e, per il rapido stile di sviluppo "trascina e rilascia", c'è davvero nessun modo in cui jQuery possa competere. (Sia che ti piaccia lo sviluppo drag-and-drop o no è una discussione completamente diversa ...)

+1

Anche se sono completamente d'accordo con il sentimento e preferisco jQuery, l'affermazione "quasi impossibile avere più di un UpdatePanel in una pagina" è ** completamente ** sbagliata, è molto facile da fare e pratica comune. –

+0

Seconded! Ho lavorato su progetti in cui è stata presa la decisione di utilizzare UpdatePanel anziché normale AJAX e le prestazioni tendono a essere atroci. In un caso particolare è stata la combinazione di un DataGridView + UpdatePanel che ha messo abbastanza bene l'app in ginocchio e lo ha reso per lo più inutile. Abbiamo finito per ridisegnare questo pezzo dell'app per evitare l'uso di un UpdatePanel. Direi che non ci sono fondamentalmente buoni scenari per usare UpdatePanel in qualsiasi altro modo per recuperare i tuoi dati tramite AJAX. – chsh

+0

@Nick - quindi il problema con più pannelli di aggiornamento potrebbe essere stato risolto dall'ultima volta che ho provato. Come ho detto, questo era un paio di anni fa. (Ero completamente fregato non appena ho visto il framework MVC ...: P) –

2

Direi che dovresti decisamente favorire jQuery AJAX su ASP.NET AJAX UpdatePanel. Se si guarda allo ASP.NET AJAX site, non si parla di ASP.NET AJAX e/o di UpdatePanel ... ma si parla molto di jQuery. In effetti, sembra che Microsoft stia favorendo gli sviluppatori ASP.NET usando jQuery come framework AJAX JavaScript sul lato client su UpdatePanel e i relativi controlli AJAX di ASP.NET.

Forniscono ancora collegamenti a AJAX Control Toolkit, ma con così tanti plug-in jQuery là fuori, perché sarebbe necessario il Toolkit?

UpdatePanel è più lento e ingombrante - vai con jQuery AJAX.

0

Come altri hanno affermato, MS-Ajax e UpdatePanels hanno prestazioni scarse, a volte fino al punto di essere inutilizzabili. Come altri hanno sottolineato, i callback ajax che dovrebbero essere piccoli, & leggeri, sono pesanti perché includono anche il ViewState completo.

Oltre a questi problemi, ho trovato alcuni altri inconvenienti per MS-Ajax:

  1. Il javascript MS-generato include un sacco di overhead. Hanno costruito un sacco di controllo dei caratteri e controllo delle variabili, con l'intenzione di rendere il loro javascript più tipicamente, presumo. Questo sovraccarico rallenta notevolmente l'elaborazione del browser, specialmente quando quelle funzioni generate da javascript vengono chiamate ripetutamente/ricorsivamente (come nel caso di alcuni controlli di terze parti).
  2. Il codice sottostante ASPX diventa molto più complesso e difficile da mantenere, poiché lo stesso ciclo di vita della pagina viene eseguito per il caricamento iniziale della pagina, nonché ogni singolo callback Ajax. Come tutti i codici complessi, questo può essere superato da sviluppatori esperti e buoni commenti sul codice, ma è comunque un aspetto da considerare.

Una nota finale: quella beneficio per MS-Ajax & UpdatePanels è, si può farla franca con l'essere il 90% javascript-ignorante e ancora li codice. L'ajax "tradizionale" comporta una codifica javascript FAR maggiore rispetto a MS-Ajax.