Cenni preliminari sulle prestazioni di ASP.NET
La creazione di applicazioni Web che rispondano rapidamente alle richieste dell'utente, anche quando nel server vengono elaborate numerose richieste, ha sempre rappresentato un obiettivo importante per gli sviluppatori e i tecnici informatici sin dall'introduzione della rete Internet. La capacità di monitorare le prestazioni dei siti Web è essenziale per tutti gli sviluppatori che lavorano in ambienti Internet e Intranet. ASP.NET è stato progettato tenendo conto di queste esigenze.
Nel modello ASP.NET sono disponibili numerosi miglioramenti delle prestazioni incorporati, non presenti nelle versioni precedenti di ASP. Sono disponibili, in particolare, due miglioramenti relativi all'elaborazione delle richieste HTTP. In primo luogo, quando una pagina ASP.NET viene richiesta per la prima volta, viene compilata in modo dinamico un'istanza della classe Page, mentre nelle versioni precedenti di ASP il codice della pagina veniva interpretato per le diverse richieste nell'ordine in cui apparivano nella pagina. In fase di compilazione Common Language Runtime consente la compilazione JIT del codice di pagina ASP.NET gestito nel codice nativo del server di elaborazione. In secondo luogo, quando l'istanza di Page viene compilata per la prima richiesta, viene memorizzata nella cache del server. Per qualsiasi richiesta successiva relativa a questa pagina, viene eseguita l'istanza della classe archiviata nella cache. Dopo la richiesta iniziale, la classe Page viene ricompilata solo se si modifica l'origine della pagina o una delle relative dipendenze.
Inoltre, ASP.NET consente di archiviare nella cache gli oggetti interni, quali variabili server, per velocizzare l'accesso al codice dell'utente. In quanto integrato in .NET Framework, ASP.NET usufruisce di tutti i miglioramenti relativi alle prestazioni forniti da Common Language Runtime, inclusa la compilazione JIT citata in precedenza, un Common Language Runtime ottimizzato sia per i computer a processore singolo che per quelli a più processori e così via.
Questi miglioramenti non impediscono però la scrittura di codice che non garantisce prestazioni sufficienti durante l'elaborazione di numerose richieste HTTP contemporanee. Per accertarsi che l'applicazione soddisfi le esigenze degli utenti è necessario sottoporla a un test. A questo scopo, è possibile verificare quattro comuni criteri di misurazione delle prestazioni.
- Tempo di esecuzione
Il periodo di tempo necessario per elaborare una richiesta, normalmente misurato tra il primo e l'ultimo byte restituiti al client dal server. Il tempo di esecuzione influisce direttamente sul calcolo della velocità effettiva. - Tempo di risposta
Il periodo di tempo che intercorre tra l'emissione di una richiesta e il primo byte restituito al client dal server. Si tratta spesso dell'aspetto delle prestazioni più facilmente percettibile per l'utente client. Se un'applicazione impiega troppo tempo per rispondere, l'utente può spazientirsi e decidere di passare a un altro sito. Il tempo di risposta di un'applicazione può variare in modo indipendente dalla velocità di trasmissione dei dati o addirittura essere inversamente proporzionale a tale velocità. - Scalabilità
La misura della capacità di un'applicazione di migliorare le prestazioni con l'aumento delle risorse (memoria, processori o computer) assegnate all'applicazione stessa. Spesso si tratta di una misurazione della frequenza di modifica della velocità in relazione al numero dei processori. - Velocità effettiva
Il numero di richieste che un'applicazione Web è in grado di gestire per unità di tempo, spesso misurata in richieste al secondo. La velocità effettiva può variare in base al carico (numero di thread client) applicato al server. Viene generalmente considerato il più importante criterio di misurazione delle prestazioni da ottimizzare.
Per scrivere applicazioni che funzionino correttamente, è fondamentale mantenere il giusto equilibrio tra questi criteri di misurazione. Nessuna misurazione singola può delineare il funzionamento dell'applicazione in circostanze variabili, ma più misurazioni effettuate congiuntamente possono fornire un quadro attendibile delle prestazioni dell'applicazione. Per ulteriori informazioni sulle misurazioni di questo tipo, nonché sui contatori delle prestazioni forniti con ASP.NET, vedere Monitoraggio delle prestazioni delle applicazioni ASP.NET.
Per informazioni sulla creazione di applicazioni a elevate prestazioni, vedere Sviluppo di applicazioni ASP.NET a elevate prestazioni.