Alcune novità di ASP.NET 4.0

Nel post precedente ho riportato alcune delle principali novità introdotte con la Beta 1 del .NET Framework 4.0 e Visual Studio 2010; da questo post in poi vorrei iniziare una serie di pubblicazioni che entrano un po’ più in dettaglio su come possono essere utilizzate queste importanti features introdotte da Microsoft.

Le novità di ASP.NET 4.0 sono divise nelle sei categorie seguenti:

  • Core;
  • AJAX Functionality in ASP.NET 4.0;
  • Web Forms;
  • Dynamic Data;
  • Visual Studio 2010 Web Designer Improvements;
  • Web Application Deployment with Visual Studio 2010;

Ovviamente ogni categoria racchiude diverse migliorie rispetto alle versioni precedenti del .NET Framework; per esempio nella categoria Core possiamo trovare il PermantRedirect, Extensible Output Caching, Auto-start, ecc.

In questo post si vedrà nel dettaglio il funzionamento di due nuove features presenti nella sezione Core:

  • Permanent Redirect;
  • Session State Compression;

Permanent Redirect:
Quando un indirizzo web viene cambiato è necessario effettuare un redirect dal vecchio indirizzo verso il nuovo, per far sì che non venga restituito un errore 404.

Nel caso il client richiedente l’indirizzo sia un motore di ricerca è necessario comunicare che il cambiamento è di tipo Permanent (status code 301); questo permetterà al Bot del search engine di sostiturire il vecchio indirizzo con il nuovo.

Questo tipo di approccio è importantissimo per le pratiche SEO (Search Engine Optimization) ed andrebbe sempre utilizzando per questo tipo di redirect.
Dalla versione Beta 1 è disponibile un apposito metodo che ci permette di effettuare questo tipo di Redirect; il codice seguente mostra la differenza tra la nuovissima Beta 1 del .NET Framework 4.0 e le versioni precedenti.

Versione antecedente al Framework 4.0:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.mysite.com/newurl/");

Versione del Framewrok 4.0:

RedirectPermanent("http://www.mysite.com/newurl/");

 

Session State Compression:
Quando si fa uso della Sessione Out Of Process, i dati che vengono inseriti in questo repository devono essere serializzati al momento del salvataggio e deserializzati al momento della lettura, per fare in modo che vengano salvati in un qualcosa che possa essere letto al di fuori del processo corrente.

Se si prova ad immaginare un’applicazione web che risiede su una server farm o, senza andare così lontano, un’applicazione il cui Application Pool ha la WebGarden abilitata, ci si rende subito conto del perchè i dati debbano essere serializzati.

Ovviamente il processo di Serializzazione/Deserializzazione ha un costo che può crescere se lo si aggiunge al trasporto delle informazioni da un server ad un altro; proprio quest’ultima parte può essere migliorata andando a comprimere il dato, garantendo così una riduzione del tempo di trasporto delle informazioni.

Con il .NET Framework 4.0 è stata aggiunta la possibilità di attivare questa compressione per la Session Out Of Process.
L’abilitazione di questa funzione avviene tramite file di configurazione, come mostrato di seguito:

<sessionState    
    mode="SqlServer"    
    sqlConnectionString="data source=mydbserver;Initial Catalog=myDatabase"    
    allowCustomSqlDatabase="true"    
    compressionEnabled="true"/>

La parte della compressione viene eseguita in automatico dalla libreria System.IO.Compression.GZipStream.

Ciauz


Comments