Comment travailler avec des sessions dans ASP.Net

HTTP est un protocole sans état. Cela implique que chaque fois qu'une nouvelle demande est envoyée du client au serveur, les informations d'état de la demande précédente sont perdues. Il existe plusieurs façons de stocker et de gérer l'état dans ASP.Net. L'objet Session est l'un d'entre eux, les autres étant des objets Caching et Application.

La mise en cache améliore les performances de l'application en minimisant la consommation de ressources de votre système. Vous pouvez stocker des données ou des pages Web fréquemment utilisées pour améliorer les performances, le débit et l'évolutivité de l'application en réduisant la consommation des ressources du serveur.

Vous pouvez définir la session comme une session de connectivité entre le serveur et le client - l'objet de session contient des données qui correspondent à la session d'un utilisateur. La session est une technique de gestion de l'état côté serveur utilisée pour stocker des informations spécifiques à l'utilisateur dans la mémoire pour une récupération ultérieure.

Modes de stockage des données de session

L'objet de session est créé et géré côté serveur. Le mode de stockage de session détermine où vos données de session doivent être stockées. L'état de session peut être stocké dans l'un des modes suivants:

  1. In - Process: stocké dans le même processus ASP.Net
  2. State Server: stocké dans un autre système
  3. SQL Server: stocké dans la base de données SQLServer
  4. Personnalisé: cela vous permet de stocker les données de session à l'aide d'un fournisseur de stockage personnalisé

Le mode de stockage In-Proc de stockage des données de session est le mode par défaut et c'est également le plus rapide de tous les modes de stockage disponibles. Dans ce mode, les données de session sont stockées dans la mémoire du serveur - à l'intérieur du processus de travail ASP.Net. Vous devez utiliser ce mode si la quantité de données à stocker dans la session est inférieure et si vous n'avez pas besoin que les données soient persistantes. Il convient de noter que les données de session stockées dans ce mode sont volatiles, c'est-à-dire que dès que la session est terminée, les données de session sont perdues. Ainsi, les données de la session sont disponibles tant que la session est active.

En mode serveur d'état, les données de session sont stockées dans un processus séparé - cela s'appelle le service d'état ASP.Net. En d'autres termes, les données de session dans ce mode sont stockées en dehors du processus de travail ASP.Net ou du pool d'applications dans IIS. Contrairement au mode In-Proc, les données de session en mode State Server sont conservées, c'est-à-dire qu'elles ne sont pas perdues après le redémarrage de votre application Web.

L'extrait de code suivant illustre comment vous pouvez configurer l'état de session dans votre application pour qu'il soit stocké dans ce mode.

 

   

      stateConnectionString="tcpip=Server:1234"

      cookieless="false"

      timeout="20"/>

 

The SQLServer mode of session data storage is used to persist session data of your application in the SQLServer database. Similar to the State Server mode of session data storage, the SQLServer mode also enables you to persist session data of your application across application restarts. Note that you should ensure that the ASP.Net session state database is created before using this mode. You can create this database using the Aspnet_regsql.exe command line utility.

The following code snippet shows how you can configure your application to store session data in a SQLServer database.

 

   

       sqlConnectionString="data source=server;user id=joydip;[email protected]"

       cookieless="false" timeout="20" />

 

Support for Session data compression

Microsoft's ASP.Net 4 introduced a new feature: session state compression. With ASP.Net 4 and onward, you can leverage this built-in feature to compress session data for storing out-of-process sessions. To take advantage of this feature, all you need to do is set the compressionEnabled attribute to "true" in the configuration file of your application. The following code snippet illustrates how this can be configured.

  mode="SQLServer"

  stateConnectionString="some connection string..."

  compressionEnabled="true"/>

Session state enables you to store user specific data in the memory and identify a particular request uniquely.  Session data is stored as key/value pairs in the SessionStateItemCollection and can be accessed using the HttpContext.Session property.

The following code examples show how you can store and retrieve session data.

HttpSessionState.Session["UserName"] = "John"; //stores session data

string str = HttpSessionState.Session["UserName"].ToString();

// Retrieves session data

HttpSessionState.Remove("Key to remove");

//Removes an object from the session state