Pourquoi voudriez-vous utiliser l'objet de stockage ViewState d'asp.net sur l'objet de stockage Session?
Des autres parce que le stockage de session session globale de plus d'une page, pourquoi voudriez-vous jamais eu envie d'utiliser le viewstate contenir des valeurs?
Il semble un peu ridicule d'envoyer tout type d'information autres que les quelques petits chaîne de requête comme les valeurs, les allers et retours à partir du serveur vers le client. Je veux dire qu'un gaspillage de bande passante(!), tout simplement pour des fins de stockage. La session, tandis que global sur plusieurs pages, semble complètement alternative supérieure à l'état d'affichage.
Surtout avec asp.net contrôles ajax et variantes, le viewstate pourrait rapidement devenir pléthorique de suivi dans les différents états et les variables de tous les différents contrôles et des éléments html.
Mais alors, pourquoi est-il viewstate de stockage pour la page de variables et d'objets?
Peut-être que je vais manquer une autre grande utilisation de la page de l'état d'affichage de stockage, quelqu'un sait quelque chose là-bas?
Merci pour la lecture!
EDIT: tout le monde avait une grande réponse, désolé si je n'ai pas chercher la vôtre.
source d'informationauteur Mark Rogers
Vous devez vous connecter pour publier un commentaire.
Séances d'exécution, l'état d'affichage n'est pas - vous pouvez revenir une heure plus tard et le viewstate sera toujours disponible. Viewstate est également toujours disponible lorsque vous revenez en arrière/en avant sur le site, Session changements.
La raison de l'état d'affichage ou de la Session est de mettre le web à partir d'un apatride, d'un système dynamique, expérience personnalisée. Lorsqu'un utilisateur demande une page, la seule façon que vous pouvez reprendre à l'endroit où l'utilisateur a laissé dans leur expérience est de se rappeler l'état, soit sur le serveur ou sur le client de l'utilisateur.
Viewstate est un mécanisme pour se souvenir de l'utilisateur de l'état sur le client.
La Session est un mécanisme pour se souvenir de l'utilisateur de l'état sur le serveur.
Viewstate est un transitoire mécanisme de stockage. Les contrôles qui utilisent viewstate ont leur état affiché dans la page html comme un caché d'entrée. Pour empêcher toute manipulation, il est signé. Il n'est pas chiffré, cependant, de sorte que vous voudrez probablement pour éviter de mettre quelque CHOSE de sensible. Viewstate est utile pour les situations où vous souhaitez afficher, à travers une série de demandes multiples (chargement de la page). Un exemple de ceci est quand un formulaire n'est pas validé car peut-être que l'utilisateur a entré une mauvaise adresse de courriel ou de quelque chose, et que vous souhaitez restaurer le formulaire tel qu'il était avant d'soumis par l'utilisateur. Les inconvénients c'est que viewstate est une faim bête et vous pouvez facilement ajouter de 30 à 50% de la taille de page.
Session, sur l'autre main, est stocké sur le serveur. Le client reçoit un jeton qui indique au serveur le bloc de mémoire est le leur. Cela peut être beaucoup plus sûr que le viewstate, car les données ne sont pas retransmis à l'utilisateur. Il existe des échanges. Votre serveur peut exécuter de mémoire. Ou, l'utilisateur peut perdre des données si la session est interrompue.
Généralement, il n'y a pas de "bonne" réponse sur la. Il est tout au sujet de ce que vous essayez d'accomplir.
La plupart des choses à faire avec les contrôles doivent utiliser Viewstate. SI vous avez affaire à de l'information sensible cependant, envisager de Session. Si vous avez des données pour un ensemble spécifique de pages, utilisez viewstate. Si c'est des données que vous aurez besoin tout au long de la visite de l'utilisateur sur votre site, considier Session.
Par exemple, quand votre application peut être exécutée dans un ordinateur de la ferme et vous ne pouvez pas configurer la session à l'utilisation de sql server.( Ou à l'aide de sql server est trop de performances)
ViewState et de la Session ont des portées différentes. L'état d'affichage est conçu pour stocker plus ou moins transitoire de données, cours de "publications", tandis que la séance est utilisée pour enregistrer les critiques données d'état de session. Je recommande d'utiliser l'état d'affichage de l'état liées à une page de "session".
Si vous n'aimez pas le comportement normal de l'état d'affichage, c'est assez simple à écrire votre propre PageStatePersister et de laisser cet objet effectuer la persistance, par exemple à l'aide de session, ou quelque chose comme Memcached. Vous pouvez ensuite complètement remplacer la valeur par défaut mécanisme de persistance.
Ensuite, la bonne chose est que vous pouvez continuer à utiliser les contrôles web dans la .NET Framework, qui utilisent tous ViewState/ControlState pour ce type de données, sans ballonnements le ViewState. Un serveur de mémoire mécanisme de persistance pourrait être très efficace.
ViewState est essentiellement juste un caché d'entrée qui doivent être téléchargées sur le serveur et analysé avec chaque demande. Ce champ est généralement rempli automatiquement, souvent avec le programmeur à ignorer, et peuvent se développer assez grand. Pour de nombreux sites qui pose un problème, parce que même les utilisateurs de large bande ont très peu en amont de la bande passante.
Sur les sites intranet où tous les utilisateurs ont à haute vitesse d'accès du réseau local vers le serveur, mais la ram disponible pour la tenue de la session de données est limité, il peut faire plus de sens.
Pas vraiment une réponse directe à votre question, mais il peut résoudre votre problème.
Vous pouvez stocker viewstate côté serveur, l'élimination de la charge utile pour le client.
Créer une classe qui hérite de la page, et de remplacer les PageStatePersister.
http://msdn.microsoft.com/en-us/library/system.web.ui.sessionpagestatepersister.aspx
Pas de réponse à votre question, mais l'une des hypothèses est incorrect.
Id de Session peut être passé dans l'URL. Session ne nécessite pas de cookies.
http://msdn.microsoft.com/en-us/library/aa479314.aspx
Vous faites une application où viewstate ballonnement, pour la plupart, n'est pas un problème, alors il est préférable de la page magasin de données spécifiques dans le viewstate, car il permet à votre serveur de mieux performer. Si vous allez fou de la session, ou de toute mise en cache, pour cette matière, vous pouvez vous blesser plus de vous aider vous-même.