Ottimizzazione codice in aspx

mercoledì 24 ottobre 2012 - 13.52
Tag Elenco Tags  C#  |  .NET 4.0  |  Visual Studio 2010

andrestu Profilo | Expert

Salve a tutti,
leggevo in un noto libro per Aspnet la seguente frase:

"... si noti che un controllo literal viene creato per ciascuna sequenza di caratteri posti tra due controlli server successivi, compresi i carriage return.
L'utilizzo di un carattere new line per separare due controlli server influenza il numero di controli che vengono creati per servire la pagina.
scrivere la pagina come un unica stringa senza caratteri carriage return produce il minor numero di controlli server... "

non pensavo fosse così preoccupante la cosa, ma il discorso è valido anche per la pagina compilata ?
a questo punto se la pagina è complessa bisogna stare molto attenti perchè là dove cè del semplice html bisogna racchiuderlo dentro un literal per evitare che vengano in automatico creati chissà quanti controlli...

Andrea Restucci - Web Developer

alx_81 Profilo | Guru

>Salve a tutti,
ciao

>non pensavo fosse così preoccupante la cosa, ma il discorso è
>valido anche per la pagina compilata ?
>a questo punto se la pagina è complessa bisogna stare molto attenti
>perchè là dove cè del semplice html bisogna racchiuderlo dentro
>un literal per evitare che vengano in automatico creati chissà
>quanti controlli...
in generale, personalmente sconsiglio sempre l'utilizzo dei controlli forniti da asp.net, essendo essi molto ma molto verbosi, e in aggiunta gestiscono un elenco di eventi che magari non userai mai.
A prescindere dal fatto che uso un pattern MVC e che quindi mi scrivo praticamente tutto via html e javascript, se usi html puro nelle tue pagine, il controllo è renderizzato come html e non è lato server, a meno che non gli specifichi il runat. Direi che per ottimizzare le prestazioni dovresti evitare il più possibile l'utilizzo del viewstate (di default impiegato per quasi tutti i controlli server se non ricordo male) e dei controlli asp:xxx.
Da quando sono passato al pattern Model View Controller, traggo veramente molti benefici nell'usare del codice html semplice. Certo, non hai la gestione degli eventi come i controlli asp.net, ma basta scrivere chiamate ajax e gestire callback..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

andrestu Profilo | Expert

Ciao alx_81,
conosco bene il significato della tua spiegazione e concordo a pieno quanto hai scritto ma qui il punto è un altro, a quanto pare da come scritto sembra che se io in una pagina inserisco per esempio 5 righe di codice html puro senza il runat e amettiamo che per "gusto estetico" le separo da uno riga vuota il risultato sarà quello di avere durante l'elaborazione 10 controlli literal, generati automaticamente quando aspnet fa il parsing della pagina, uno per ogni riga, quindi per evitare 10 controlli literal generati dovrei racchiudere tutto il mio codice html dentro un controllo literal...

Visto che ci siamo ti chiedo un consiglio, io ormai è già da parecchio tempo che utilizzo Aspnet quindi mi sento abbastanza sicuro nell'affrontare qualsiasi problematica, sto pensando di passare a MVC ma non so se ne vale la pena, nel senso che comunque prima di arrivare ad ottenere dei buoni risultati dovrei dedicarci molto tempo, oltretutto la cosa mi darebbe anche un pò di frustrazione visto tutto il tempo dedicato ad Aspnet, cosa ne pensi? in termini di prestazioni cè un miglioramento netto ?

alx_81 Profilo | Guru

>Ciao alx_81,
>conosco bene il significato della tua spiegazione e concordo
>a pieno quanto hai scritto ma qui il punto è un altro, a quanto
>pare da come scritto sembra che se io in una pagina inserisco
>per esempio 5 righe di codice html puro senza il runat e amettiamo
>che per "gusto estetico" le separo da uno riga vuota il risultato
>sarà quello di avere durante l'elaborazione 10 controlli literal,
>generati automaticamente quando aspnet fa il parsing della pagina,
>uno per ogni riga, quindi per evitare 10 controlli literal generati
>dovrei racchiudere tutto il mio codice html dentro un controllo
>literal...
in effetti viene generato il literal, ma credo lo faccia solo asp.net classico, per quello ti indicavo l'mvc pattern.

>Visto che ci siamo ti chiedo un consiglio, io ormai è già da
>parecchio tempo che utilizzo Aspnet quindi mi sento abbastanza
>sicuro nell'affrontare qualsiasi problematica, sto pensando di
>passare a MVC ma non so se ne vale la pena, nel senso che comunque
>prima di arrivare ad ottenere dei buoni risultati dovrei dedicarci
>molto tempo, oltretutto la cosa mi darebbe anche un pò di frustrazione
>visto tutto il tempo dedicato ad Aspnet, cosa ne pensi? in termini
>di prestazioni cè un miglioramento netto ?
Penso innanzitutto che MVC essendo un pattern nato negli anni 90, sia di certo solido
Detto questo, non ho mai amato la visione ASP.net di fare una pagina, una classe, o codebehind..
E' una visione che non mi piace tanto, e quindi anche nel passato si è sempre cercato di sopperire alle proposte che venivano indicate.
Sia chiaro, anche ASP.NET è potente e ha i suoi vantaggi, come la gestione degli eventi (che non sono eventi proprio fino in fondo) e le altre cosine comode come i toolkit, ecc..
Però, MVC è molto più comodo per la separazione tra il BIZ layer (controller) e la vista, che veramente non ha nessun legame con il controller, se non per il passaggio del modello.
Questo secondo me ti aiuta anche a spostare la tua visione di analisi, andando a ragionare molto di più a livelli (tra l'altro facilita anche il Domain Driven Development).
Io ci ho perso tempo con ASP.Net, ma appena ho potuto, ho smesso di usare i controlli (che proprio non gradisco ) e ho iniziato a migliorare l'esperienza con Js e i suoi framework (vedi jQuery).
Sono leggeri, e sempre meno macchinosi. Certo, perdi i vantaggi dei linguaggi compilati e la logica "server" molto più controllata, ma se fai buon uso di ajax, per me trovi solo vantaggi.
Poi dipende anche dalla realtà, dal caso cliente (paga? alla fine quello conta molto sulla curva di apprendiment) oppure se sei dipendente e devi proporre, dipende sempre dal biz che devi affrontare.
ASP.Net non lo guardo più da anni e con MVC abbiamo cambiato proprio metodologia di lavoro anche (anche per gli eventuali servizi, è ora molto più semplice con le WebApi).
In termini di controllo del codice è molto meglio MVC, in quanto hai un livello ben definito e distaccato che è il controller. Poi hai il modello, con cui fai parlare i livelli, altro grosso vantaggio (un po' come se definissi un contratto). In termini di prestazioni, come puoi ben capire, le viste sono viste e nulla di altro (html puro) e il viewstate non esiste più.
Ovvio che puoi rovinare anche MVC, ma quello credo dipenda sempre da chi ci mette mano, ma tu sei tranquillo.
Vedrai che passando a MVC, non rimpiangerai nulla, io l'ho anche trovato molto divertente.. E anche dopo giorni che non metto mano al codice è decisamente più chiaro (il controller aiuta molto).
E razor è un buon engine per fare metalinguaggio sulla pagina html. Tuttavia ne hai altri se vuoi scaricarli, come spark (http://sparkviewengine.com/).
Ci sarebbe da perdere giorni a chiacchierare su sta cosa
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

andrestu Profilo | Expert

Grazie dei suggerimenti,
ma una cosa non ho ben capito a riguardo delle diverse soluzioni per MVC.
ci sono delle grosse differenze rispetto a quella proposta da Microsoft oppure ne esiste solo una e le altre sono "implementazioni" costruite sulla base di quella fornita da Micrsoft ?
per iniziare cosa mi consigli ?

Andrea Restucci - Web Developer

alx_81 Profilo | Guru

>ci sono delle grosse differenze rispetto a quella proposta da
>Microsoft oppure ne esiste solo una e le altre sono "implementazioni"
>costruite sulla base di quella fornita da Micrsoft ?
MVC è un pattern, ed, in quanto tale, è semplicemente applicato.
Microsoft lo applica con il suo ASP.Net, ma lo troverai del tutto comune anche nel mondo open source.

>per iniziare cosa mi consigli ?
http://www.asp.net/mvc, e vai di tutorial
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5