Les variables statiques des applications web
Puis-je utiliser des variables statiques dans mon application web ? quelles sont les alternatives à l'électricité statique ? Lorsque j'utilise des variables statiques dans les pages et plus d'un utilisateur à utiliser l'application, il rend les conflits de données (des données incorrectes).
Quelles sont les limites de l'aide de membres statiques?
Sont membres statiques partagés dans la mémoire?
OriginalL'auteur Anyname Donotcare | 2011-03-07
Vous devez vous connecter pour publier un commentaire.
Envisager le stockage de vos variables partagées dans le HttpApplication de l'objet ou de l'objet dans le Cache.
Toutefois, si vous essayez de stocker des valeurs pour chaque utilisateur séparément, vous devez les stocker ces valeurs dans une variable de Session.
Variables statiques à l'intérieur Asp.Net sont partagés dans l'espace de la mémoire de l'w3svc.exe processus et ne sont PAS thread-safe. Ils peuvent être consultés et modifiés par n'importe quel utilisateur de l'application. Cela pourrait conduire à des modifications non désirées, sauf si vous écrivez votre propre mécanisme de verrouillage autour de la conservation de ces valeurs.
Vous devriez essayer une syntaxe du type:
pour stocker de l'application partagée à l'échelle des données et
de stocker des données sur une base par utilisateur
Vous pouvez utiliser le WebCache objet pour stocker des données dans le serveur web de la mémoire avec l'expiration des conditions. Syntaxe qui ressemble à:
Plus sur la syntaxe de la gestion de la WebCache objet peut être trouvé à:
http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx
Dans Asp.Net, ma préférence est de ne PAS utiliser de variable statique pour le partage de points de données. Je préfère utiliser le Cache de l'objet (modifier arrive dans peu de temps afin de montrer un exemple de syntaxe), de sorte que je peux contrôler la durée de vie de mon partagé les points de données.
La Session est la solution la plus simple pour stocker des p-valeurs de l'utilisateur. Si vous stockez des objets volumineux (pensez à des jeux de données), les performances se dégradent. À noter également: la Session peuvent être stockés dans Asp.Net État Server ou SQL Server sur une machine, vous permettant de maintenir ces utilisateur des points de données spécifiques à travers des serveurs web dans une webfarm environnement
OriginalL'auteur Jeff Fritz
Juste à ajouter à ce que @Jeff Fritz l'a dit, une application IIS crée un domaine d'application dans lequel vos assemblées sont chargés. Tout comme les règles d'un windows normal de l'application, si une classe telle que
...puis d'un seul
Something.SomeString
propriété est disponible par domaine d'application. Le processus W3SVC gère le domaine d'application, mais il n'y a pas guaruntee de fil de sécurité (comme un domaine d'application peut être le service des demandes multiples). Si vous utilisez en lecture seule propriétés statiques, c'est probablement pas un problème (comme la lecture config valeurs). Si vous faites mutable propriétés de ce changement par la durée de vie d'une demande, de son mieux pour utiliser l'un des mécanismes de stockage détaillée dans d'autres questions ici.OriginalL'auteur Matthew Abbott