Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    View Cyril Durand's profile on LinkedIn

    hit counters

Enregistrer la viewstate sur le serveur

Depuis sa version 1.0 ASP.net a introduit la notion de Viewstate qui permet de maintenir l'état des contrôles entre 2 requêtes. Je ne vais pas vous réexpliquer le rôle ni le fonctionnement du viewstate Fabrice l'a déjà fait sur ASP-PHP : Le ViewState en ASP.NET et Scott Mitchell l'explique de façon très complète sur MSDN : Understanding ASP.NET View StateFritz Onion a lui aussi écrit un article sur l'amélioration des performances du Viewstate avec ASP.net 2.0 : Speed Up Your Site with the Improved View State in ASP.NET 2.0.

Mais saviez vous qu'on peut modifier où est stocké le Viewstate ? Par défaut il est stocké sur le client dans un champ caché (<input type="hidden" name="__VIEWSTATE" ... />), mais on peut très bien le stocker sur le serveur en surchargeant les méthodes LoadPageStateFromPersistenceMedium et SavePageStateToPersistenceMedium

J'ai justement écrit une source sur aspfr à ce sujet : stocker le viewstate sur le serveur plutôt que sur le client

Voici le principe :

public class ServerViewStatePage : Page { protected override void SavePageStateToPersistenceMedium(object state) { // Génération d'un identifiant unique et aléatoire pour des raisons de sécurité // Enregistrement de cet enregistrement dans un champ caché coté client // Enregistrement de l'objet state sur le server avec notre identifiant unique } protected override object LoadPageStateFromPersistenceMedium() { // Récupération de l'identifiant unique se trouvant dans Request.Forms // Récuperation et renvoie de l'objet state stocké sur le server à partir de l'identifiant } }
Posted: samedi 25 novembre 2006 02:17 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

richardc a dit :

POur un siote web, la gestion du multithreading est importante. Modifie légèrement l'accès à ton Dictionnary pour que ca marche (cf singleton)

# novembre 25, 2006 09:28

cyril a dit :

En effet j'ai modifié le code, merci :-)

# novembre 25, 2006 16:43

richardc a dit :

hum, je préfère la dernière solution exposée par Matthieu Kempé:

http://www.techheadbrothers.com/Articles.aspx?Id=1491b809-eff5-45d0-9bd1-c2b2cf518b48

Plus "light" ;-)))

La question d'après est: quid de la libération des ressources utilisées ?

# novembre 25, 2006 16:59

cyril a dit :

En effet ca méthode est pas bête :-)

Je pensais que la méthode static allait être instancié dés le chargement de l'application, mais apparement non (je vais tester ca plus en profondeur)

En ce qui concerne la libération des mémoires :

           if (_viewstates.TryGetValue(viewstateID, out viewstate))

               _viewstates.Remove(viewstateID);

et si viewStateID n'est pas présent dans la collection aucune exception n'est généré. Par contre cela veut dire qu'il y a des risques de problèmes si l'utilisateur joue avec le bouton back et rejoue la requete.

J'avais fait cet exemple seulement pour montrer le principe et je le repete il ne faut pas utiliser ca en production :-)

# novembre 25, 2006 17:35
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- ssdl view et TPT par Matthieu MEZIL le il y a 11 heures et 7 minutes

- L'injection SQL n'est PAS un problème QUE pour les développeurs web ! par CoqBlog le il y a 12 heures et 3 minutes

- Un outil pour réaliser des animations WPF basées sur des équations de Bézier par Perspective le il y a 15 heures et 26 minutes

- Sandcastle et CodePlex : le verdict par CoqBlog le il y a 16 heures et 17 minutes

- ssdl view et TPH par Matthieu MEZIL le il y a 17 heures et 59 minutes

- Webcasts sur le Parallel Framework disponibles par Matthieu MEZIL le il y a 19 heures et 45 minutes

- [Silverlight] - Comprendre et Débuter avec Silverlight par Danuz le 07-04-2008, 12:41

- SharePoint : Nouvel article sur l'exportation et Importation de sites SharePoint par Blog Technique de Romelard Fabrice le 07-04-2008, 01:00

- ImagineCup 2008 Final in Paris: Day 1 par Richard Clark le 07-03-2008, 22:48

- PowerShell : Comment utiliser un ENUM .NET dans un script PowerShell par Blog Technique de Romelard Fabrice le 07-03-2008, 18:09