2010-07-12 10 views
6

Continuo a sentire che i controlli ASP .NET AJAX lato server (come UpdatePanels) non sono veramente AJAX anche se sembrano come, perché il rendering non è completamente sul lato client. Sto cercando di capirlo con più chiarezza. Qualcuno potrebbe elaborare?MS UpdatePanels non è veramente AJAX?

Grazie ...

+0

Buona domanda. Questo potrebbe essere qualcosa di più su come rende prima di fare i postback ... ma, potrei essere totalmente fuori base. –

+2

Loro * sono * AJAX, sono solo * anche * gonfiati e attraversano un'intera pagina che mostra il ciclo di vita sul server, sono una soluzione rapida, ma * molto * inefficiente. –

risposta

12

UpdatePanels è venuto fuori abbastanza presto nel ciclo di AJAX, e sono pesanti (possono emettere intorno 100-300k di JavaScript). Dietro le quinte, UpdatePanels invia l'intera pagina al server tramite una XMLHttpRequest JavaScript. La nuova pagina viene generata con il normale ciclo di vita della pagina proprio come un postback, ma solo le parti che vivono all'interno di UpdatePanel (oltre alle parti necessarie per l'aggiornamento di ViewState e così via) vengono inviate al client. Da lì, il markup viene inserito senza un flash visibile o un'interruzione dello stato della pagina.

La maggior parte degli strumenti AJAX concorrenti si appoggia a implementazioni ultraleggeri che consentono di spedire o generare una piccola porzione di codice HTML tramite Javascript, e direi che oggi è la direzione dominante, soprattutto al di fuori del mondo ASP.NET.

La differenza nella quantità totale di dati inviati attraverso il filo è enorme - vedere il link sottostante. In situazioni a basso traffico potrebbe non fare un po 'di differenza, ma nel caso di un sito come StackOverflow, di sicuro verrà visualizzato sulla fattura della larghezza di banda.

Detto questo, non credo che sia giusto dire che UpdatePanels non sono in realtà AJAX, dal momento che fanno nave HTML attorno a via asincrono JavaScript - è solo che ci sia un quadro gigantesca, spesso ingombranti sulla parte superiore. UpdatePanels talvolta subisce un brutto colpo, ma fornisce un'esperienza di sviluppo brillantemente semplice. Li ho spesso trovati utili in situazioni di traffico limitato.

Aggiornamento:Here è un articolo (vecchio ma ancora valido) che esamina il payload UpdatePanels spedito da e verso il server. Passa anche a Page Methods, che è un'alternativa leggera e basata sui servizi Web a UpdatePanels. Questa è una parte spesso trascurata di Microsoft AJAX.

+0

tl; dr; sono per definizione, ma la maggior parte di ciò che fanno è eliminare un postback e qualche rendering. Buona descrizione – mbillard

+0

@ GoodEnough - Grazie. :) Sono d'accordo con te, anche se penso che eliminare un pesante roundtrip del server e il rendering sia il punto principale della maggior parte degli strumenti AJAX. E dirò anche che il rendering è un grosso problema in alcuni casi. Ho avuto una situazione in cui stavo facendo ottimizzazione front-end su un enorme line-of-business .aspx, e come si è scoperto, il collo di bottiglia perf non era il database o anche la rete - era rendering! –

+0

@Brian - Sì, il rendering può essere un grosso problema (stiamo riscontrando problemi con gli utenti di IE a causa di ciò in una delle nostre applicazioni).UpdatePanels funziona fino a quando non inizi a lavorare con pagine più grandi con molti dati e un grande ViewState (dannatamente ViewState). – mbillard

1

http://msdn.microsoft.com/en-us/magazine/cc163480.aspx

Forse questo risponderà ???

Spero. (Leggendolo pure).

Mi sembra che il Controllo sia un oggetto Server Side che utilizza ajax come meccanismo e che l'ajax è reso per fare il lato client. In questo senso non è pura ajax ma piuttosto una fusione di più soluzioni.

:)