2010-12-07 17 views
1

J'ai une application ASP.NET MVC, qui souffre d'une horrible affliction. Dans l'une des méthodes de publication, l'utilisateur peut soumettre une mise à jour. Cette mise à jour prend peut-être 10 secondes à calculer, et les utilisateurs impitoyables cliquent parfois plus d'une fois. Je crois que cela provoque une mise à jour de la base de données, et je ne sais pas quoi faire. Où dois-je enregistrer la variable "isUpdating" pour bloquer de telles demandes répétées? Ce ne peut pas être une instance de webrole, puisque ceux-ci sont indépendants, et mon utilisateur peut se retrouver sur l'un ou l'autre. Il ne peut pas non plus être la base de données, en raison de la condition de concurrence. Je suis sûr qu'il doit y avoir un moyen standard. Je pourrais par exemple voir un scénario où je limite les utilisateurs à des webroles spécifiques. Est-ce possible ou existe-t-il un meilleur moyen?Azure webrole multiples écrire à la base de données en même temps, provoquant des problèmes

Répondre

2

Dans ce cas, il serait probablement préférable d'écrire les informations de l'utilisateur dans une file d'attente, puis de renvoyer immédiatement la page à l'utilisateur.

Ensuite, ayez un rôle de travailleur qui extrait les informations de la file d'attente et met à jour la base de données.