2017-06-06 1 views
2

J'ai l'application mvc Asp.net et j'ai besoin d'un compteur global pour un but pour tous les utilisateurs (et invités). Je veux dire tout utilisateur peut le changer (parfois à partir de différents threads), mais ce compteur est commun pour tous. Alors,Est-ce une bonne idée d'utiliser des variables statiques dans Asp.Net MVC?

1. est-ce une bonne idée de créer simplement une variable statique quelque part dans mon code pour cela?

2. Y a-t-il des problèmes possibles?

D'autres suggestions? Merci beaucoup!

+0

Que se passe-t-il si votre application redémarre? Le compteur sera remis à 0. A quoi sert le compteur? Il pourrait y avoir une meilleure option. Si vous incrémentez le compteur, n'oubliez pas d'utiliser un mécanisme sûr pour les threads comme 'Interlocked.Increment' -' counter ++' provoquera une condition de concurrence. –

Répondre

1

Il est difficile de dire quoi que ce soit ici. Statique en lui-même n'a pas de problème. Cela dépend de la façon dont vous l'utilisez. Comme vous l'avez dit, vous mettez un compteur global en variable. Donc, plusieurs threads vont le modifier. droite? Assurez-vous que cet appel est thread-safe. Sinon, les compteurs auront tort.

Si c'était une valeur rarement écrite et surtout en lecture seule, ce n'était pas un problème du tout.

S'il s'agit d'une valeur que vous connaissez au moment de la conception, mieux vaut utiliser const.

Vous devez également prendre en compte que IIS recycle le pool d'applications. Dans ce cas, une nouvelle instance d'application sera créée et deux copies de votre variable statique existeront.

Si tout cela ne crée pas de problème pour vous, statique est OK. Que se passe-t-il si votre application redémarre?