Paging Ajax vs. .Net

giovedì 18 aprile 2013 - 19.44
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Javascript

gsistemi Profilo | Junior Member

Ciao a tutti,

ho da sempre utilizzato l'impaginazione dei risultati delle mie query utlizzando il framework di .Net quindi Repeater o Listview, causa alcuni problemi sui tempi di risposta del mio Db vorrei provare l'approccio Ajax del quale però conosco pochissimo.
Se non ho capito male, creo un set di risultati lato server in xml che poi gestirò con ajax lato client.
Quali sono i pro e i contro dei due sistemi... in .Net so che ogni postback costringe a ricaricare la pagina o parte di essa, ma con Ajax non rischio di dover caricare troppi dati al caricamento iniziale?

Capisco che la domanda è un po' generica ma vorrei sapere se vale la pena affrontare il nuovo sistema.

Grazie!

alx_81 Profilo | Guru

>Ciao a tutti,
ciao

>ho da sempre utilizzato l'impaginazione dei risultati delle mie
>query utlizzando il framework di .Net quindi Repeater o Listview,
>causa alcuni problemi sui tempi di risposta del mio Db vorrei
>provare l'approccio Ajax del quale però conosco pochissimo.
>Se non ho capito male, creo un set di risultati lato server in
>xml che poi gestirò con ajax lato client.
>Quali sono i pro e i contro dei due sistemi... in .Net so che
>ogni postback costringe a ricaricare la pagina o parte di essa,
>ma con Ajax non rischio di dover caricare troppi dati al caricamento
>iniziale?
cerco di elencarti un po' di differenze. Intanto non è necessariamente XML, anzi, ultimamente si usa JSON (http://it.wikipedia.org/wiki/JSON)
poi:

- i controlli repeater e listview sono tanto comodi ed elastici quanto pesanti e un tantino fuori controllo dello sviluppatore
- se usi ajax e quindi una parte di javascript (o l'ajax toolkit per VS .net o jquery, o dojo, o altro..) non potrai usare più i controlli lato server forniti da asp.net, e quindi, se non userai plugin di terze parti, il gridview, te lo devi fare tu
- di certo con ajax vai a finire nell'async e quindi non devi per forza caricare tutta la pagina ma solo una parte di essa (controlli ad esempio)
- con ajax MVC è forse più indicato, per la comodità nell'integrazione piuttosto che l'utilizzo delle classiche web pages
- l'async ti dà l'idea di un'interfaccia più responsiva e quindi apparentemente meno lenta, ma non è che migliori le performances di una query se la query ci mette 10 secondi
- la modularità garantita è migliore, tu pensi alla chiamata e non ti leghi molto alla view (anche se per questo è sempre meglio usare il pattern MVC)

per ora mi viene solo questo..

>Grazie!
di nulla!
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

andrestu Profilo | Expert

Scusate se mi inserisco nella discussione ma vorrei capire qualcosa in più.
Io ho sempre usato Aspnet con il classico sistema delle web pages e Ajax tramite l'utilizzo degli update panel, si forse i controlli risultano un pò pesantini, più che altro per il fatto che ad ogni postback viene processata tutta la "pipeline" dell'intera pagina e se la pagina è complessa questo riduce un pò le prestazioni, per quanto riguarda il controllo una volta capito il meccanismo con un controllo come il listview puoi fare praticamente di tutto.
Volendo provare ad utilizzare metodologie alternative devo perforza passare al pattern MVC oppure posso usare Ajax con le classiche web pages?
In tal caso so che le web pages si possono usare anche in modalità Async impostando la relativa direttiva ma non ne so molto di più, come avviene il funzionamento?
forse in questo modo la pagina non viene caricata completamente...
Altrimenti utilizzando manulamente Ajax, quindi inviando la richiesta e gestendo la risposta come avviene il meccanismo?
C'è un metodo lato server che gestisce la richiesta e si occupa di fornire la risposta che poi verrà gestita lato client con Ajax?

Grazie per le delucidazioni.

Andrea Restucci - Web Developer

alx_81 Profilo | Guru

>Scusate se mi inserisco nella discussione ma vorrei capire qualcosa in più.
sempre un piacere

>Volendo provare ad utilizzare metodologie alternative devo perforza
>passare al pattern MVC oppure posso usare Ajax con le classiche
>web pages?
no, puoi tranquillamente usare web pages, diciamo che con MVC fai cose molto più modulari e tieni molto di più le viste slegate da quella che è la prima logica di business del presentation layer (con il controller assumi molto più controllo del tuo codice, è come se fosse un dispatcher di web services)

>In tal caso so che le web pages si possono usare anche in modalità
>Async impostando la relativa direttiva ma non ne so molto di
>più, come avviene il funzionamento?
Non avendo mai seguito la strada nativa, e vedendo che un nuovo progetto di visual studio ormai prevede sempre jQuery, non ti saprei rispondere con certezza. Mi spiace.

>forse in questo modo la pagina non viene caricata completamente...
>Altrimenti utilizzando manulamente Ajax, quindi inviando la richiesta
>e gestendo la risposta come avviene il meccanismo?
di solito una chiamata jQuery $.ajax torna un response object nella success function:

$.ajax({ type: "POST", url: "Controller/Action", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", async: true, cache: false, success: function (response) { // qui }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } })

lì gestisci la risposta andando a creare con jQuery o js direttamente l'html, usando i selettori css con cui jQuery lavora benissimo per fare traversing del DOM.
Siccome però l'html creato è scomodo per rimetterci le mani, puoi fare template usando uno di questi due plugin ad esempio:
http://mustache.github.io/
http://knockoutjs.com/

In aggiunta, prima e dopo il caricamento dei dati puoi anche fare overlay di caricamento, come con loadmask (https://code.google.com/p/jquery-loadmask/)

>C'è un metodo lato server che gestisce la richiesta e si occupa
>di fornire la risposta che poi verrà gestita lato client con Ajax?
qualunque metodo pubblico. Basta decorarlo con l'attributo [WebMethod] e, se torna qualcosa, formattarlo in json.

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

totti240282 Profilo | Guru

Come si formatta in Json ?
C'è solo un capitano !!!!!!

alx_81 Profilo | Guru

>Come si formatta in Json ?
http://www.codeproject.com/Articles/272335/JSON-Serialization-and-Deserialization-in-ASP-NET
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

totti240282 Profilo | Guru

Perfetto non sapevo c'era una classe dedicata nel Framework.

Grazie.
C'è solo un capitano !!!!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5