2009-07-10 7 views
0

Dans le site Web asp.net, nous avons un formulaire qui peut être accessible à l'administrateur.Comment pouvons-nous résoudre les problèmes de simultanéité dans asp.net?

Il y a plus d'un administrateur pour l'entrée. Si tous les administrateurs s'ouvrent simultanément et sélectionnent une valeur de liste déroulante du formulaire, comment pouvons-nous maintenir la simultanéité?

Parce qu'une fois que le premier administrateur a sélectionné la valeur de combox et enregistré, cette valeur devrait être retirée de la base de données.

Mais comment le problème de la concurrence peut-il être résolu lorsque deux ou trois administrateurs simultanés sauvegardent la même valeur.

Où est le bon code de lieu ou à la base de données? et comment?

Répondre

1

Vous devriez lire à propos du contrôle de concurrence optimiste. Vraiment, il se résume à choisir entre optimiste, pessimiste et dernière victoire. Habituellement, le bon choix est optimiste, à moins que ce ne soit un processus très long où l'échec d'un autre utilisateur à la fin serait frustrant.

Pour le bon endroit, vous devez dire comment vous faites actuellement votre code d'accès aux données. Aussi quelle base de données utilisez-vous?

This article vous donnera quelque chose pour commencer.

0

Dans notre application nous traitons dans les deux:

Toutes nos mises à jour passe par une procédure de mise à jour stockée. Ceci provoque une erreur lorsque le champ "Modifié", ce qui est mandé, est plus récent que le champ donné. L'erreur est renvoyée par une classe d'exception spéciale dans le code et vous pouvez l'identifier comme une exception de concurrence.

Par exemple:

  • Lire 1: 12:00:00 (date de modification est dans le passé, par exemple 11:00:00)
  • Lire 2: 12:01:30 (Aucun changement de modification date)
  • Mise à jour 1: 12:03:00 (Set modified = 12:03:00)
  • Mise à jour 2: 12:04:00 (Excaption de concurrence, parce que mise à jour voir: Oh, modifié est plus récent que le donné un)
+1

Notez que le champ date/heure simple n'est pas une bonne idée. Les ordinateurs de nos jours sont si rapides que deux opérations UPADTE peuvent arriver plus vite que l'unité de résolution de minuterie. Un compteur est généralement une meilleure idée. Voir MSSQL "Timestamp" type de colonne. –

0

Une comm La technique de mise en œuvre de la simultanéité consiste à utiliser un horodatage pour les mises à jour, avec vous, en tant que code d'écriture du développeur en fonction de votre processus métier. Normalement, les choix que vous avez sont: Dernier en victoires, donc la dernière écriture gagne, informez l'utilisateur du conflit et laissez-lui faire le choix de valider ou non ses modifications, ou fusionner les valeurs modifiées.

Cette dernière technique n'est pas commune avec les bases de données, car cela signifie que l'utilisateur valide un ensemble de valeurs, mais un ensemble différent est mis à jour, ce qui peut surprendre (nécessite également des règles complexes) . Si vous pensez à la façon dont fonctionnent certains fournisseurs de contrôle de source, vous pouvez voir comment cela est implémenté.

Dans le cas d'une opération de suppression, il n'y a pas lieu de s'inquiéter car est-il vraiment important que deux utilisateurs aient supprimé le même enregistrement? Le second n'aura aucun effet.

Questions connexes