ASP.NET est aujourd'hui largement utilisé pour les applications Web à fort trafic qui doivent gérer des millions d'utilisateurs et sont déployées dans des fermes Web à charge équilibrée. Une partie importante d'ASP.NET est l'état d'affichage utilisé par de nombreuses applications. ASP.NET View State est un mécanisme très puissant qui stocke les pages, les contrôles et les valeurs personnalisées entre plusieurs requêtes HTTP sur le client et le serveur Web.
ASP.NET View State les valeurs sont stockées dans un champ masqué sur la page et encodées sous forme de chaîne Base64. Un ASP.NET View State ressemble à ça:
1 2 3 |
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kF…" /> |
Bien que très utile, ASP.NET View State devient souvent assez volumineux, en particulier dans les situations où votre application ASP.NET comporte des contrôles de grille et de nombreux autres contrôles sur les pages. Ceci est ajouté à votre requête et réponse HTTP et cela ralentit vraiment votre temps de réponse ASP.NET à des niveaux insupportables.
Un autre inconvénient du lourd ASP.NET View State est l'utilisation accrue de la bande passante qui augmente considérablement le coût de votre bande passante. Par exemple, si pour chaque requête HTTP, vous finissez par ajouter 60 à 100 k de données supplémentaires ASP.NET View State données, il suffit de le multiplier par le nombre total de transactions et vous verrez rapidement combien cela vous coûtera en plus en consommation de bande passante.
Enfin, dans certaines situations, il existe un risque de sécurité lié à l'envoi de données confidentielles dans le cadre de ASP.NET View State. Le crypter avant de l'envoyer est également coûteux.
Pour résoudre tous ces problèmes, vous pouvez mettre en cache ASP.NET View State sur le serveur Web et affectez un GUID comme clé dans le cache. Ce GUID est ensuite envoyé au navigateur dans un champ caché et il revient avec la prochaine requête HTTP et est utilisé pour récupérer le correspondant ASP.NET View State du cache. Cela réduit votre charge utile envoyée au navigateur, ce qui améliore non seulement le temps de réponse ASP.NET, mais réduit également considérablement votre coût de consommation de bande passante.
Si votre application ASP.NET s'exécute dans une batterie de serveurs Web à charge équilibrée, vous devez utiliser un cache distribué. Un cache autonome comme ASP.NET Cache ne fonctionnera pas. NCache est un cache distribué au niveau de l'entreprise qui fournit ASP.NET View State module de mise en cache. Pour l'utiliser, vous n'avez pas besoin de faire de programmation. Modifiez simplement votre web.config ASP.NET pour cela.
Voici les étapes à utiliser NCache pour la mise en cache ASP.NET View State:
- Créez un fichier app.browser dans votre application ASP.NET. Créez-le sous le répertoire App_browsers. Branchez les adaptateurs de page dans le fichier app.browser comme suit :
123456<browser refID="Default"><controlAdapters><adapter controlType="System.Web.UI.Page"adapterType="Alachisoft.NCache.Adapters.PageAdapter"/></controlAdapters></browser> - Ajoutez ensuite la référence d'assembly suivante dans la section de compilation du fichier web.config.
1234567<compilation defaultLanguage="C#" debug="true"><assemblies><add assembly="Alachisoft.NCache.Adapters,Version=1.0.0.0,Culture=neutral,PublicKeyToken=cff5926ed6a53769"/></assemblies></compilation> - Enregistrez votre section de configuration dans le fichier web.config.
12345678910<configSections><sectionGroup name="ncContentOptimization"><section name="settings"type="Alachisoft.NCache.ContentOptimization.Configurations.ContentSettings"allowLocation="true" allowDefinition="Everywhere"/></sectionGroup></configSections> - Spécifiez les paramètres de votre section de configuration dans le fichier web.config (qui a été enregistré ci-dessus).
1234567891011<ncContentOptimization><settings enableMinification="true"enableViewstateCaching="true"groupedViewStateWithSessions="true"viewstateThreshold="0"enableTrace="true"><cacheSettings cacheName="mycache"><expiration type="Sliding" duration="300"/></cacheSettings></settings></ncContentOptimization> - À la fin, enregistrez le gestionnaire HTTP dans la section HttpHandlers de web.config comme suit :
1234567<add verb="GET,HEAD" path="NCResource.axd"validate="false"type="Alachisoft.NCache.Adapters.ContentOptimization.ResourceHandler,Alachisoft.NCache.Adapters, Version=1.0.0.0,Culture=neutral,PublicKeyToken=cff5926ed6a53769"/>
Après la configuration NCache, tu peux voir le ASP.NET View State tag dans votre application comme :
1 2 3 4 5 6 7 |
< input type="hidden" name="__NCPVIEWSTATE" id="__NCPVIEWSTATE" value="vs:cf8c8d3927ad4c1a84da7f891bb89185" /> < input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" /> |
Notez qu'une autre balise masquée est ajoutée avec ASP.NET View State. Il contient la clé unique attribuée à ASP.NET View State de votre page, dans votre cache distribué. Ainsi, chaque fois que votre serveur d'applications a besoin ASP.NET View State valeur, il peut l'obtenir facilement du cache.
Avec cela, vous verrez une amélioration remarquable des performances de vos temps de réponse ASP.NET et votre coût de consommation de bande passante est également réduit de manière significative.
Veuillez en savoir plus sur ASP.NET View State mise en cache en essayant NCache ASP.NET View State module vous-même.
Vous pouvez utiliser NCache pour Azure pour stocker l'état de session ASP.NET pour les applications Microsoft Azure ASP.NET. Voici un blog qui explique les options de stockage de session Microsoft Azure et pourquoi NCache pour Azure est la meilleure parmi toutes les options disponibles dans Microsoft Azure.
https://20.200.20.123:86/storing-asp-net-session-state-in-a-microsoft-azure-distributed-cache/
Quelqu'un utilise-t-il avec succès Windows Azure Caching (préversion) pour gérer l'état de la session ?