Je développe une application de réservation d'événements et j'ai de la difficulté à trouver comment gérer le processus de réservation. Je connais les transactions db et un peu de verrouillage mais j'ai beaucoup de règles à valider avant qu'une réservation puisse être validée et je m'inquiète des goulets d'étranglement au niveau des performances.Synchronisation de l'application de réservation C#/asp.net
Voici un résumé de ce qui se passe:
- Un événement a un nombre maximum de créneaux horaires
- Un utilisateur peut réserver une place dans l'événement
- Chaque utilisateur dispose d'un compte avec de l'argent et chaque événement coûte un certain montant
Compte tenu des paramètres ci-dessus, les règles commerciales suivantes sont ce que je dois valider pour une réservation de lieu:
- L'utilisateur n'a pas déjà réservé une place pour cet événement
- L'utilisateur dispose de fonds suffisants pour réserver l'événement
- L'événement a au moins un point disponible
- L'événement ne sont pas en conflit avec d'autres les événements que l'utilisateur a réservé (pas tant d'un problème que je peux vérifier lors de l'affichage de la page et cacher cet événement de l'utilisateur)
Mon principal souci est que si je tire toutes les informations de la db up avant (ie Event, User, Account, et Bookings existants) qu'au moment où j'effectue toute la validation et que je viens valider la nouvelle réservation, l'état du système aura probablement changé (ie quelqu'un a réservé la dernière place, l'argent a quitté mon compte, etc). Si je devais verrouiller les tables de code/base de données autour de ce processus de réservation, alors j'ai potentiellement (??) obtenu le verrou pendant un certain temps affectant d'autres opérations dans le système et causant des problèmes de performance aux heures de pointe. Quelqu'un peut-il suggérer une approche par laquelle je peux gérer ou au moins limiter ces préoccupations.
Je construis une application asp.net en C# et utilisant le serveur sql 2005.
En effet; Pour un système que je crée, j'ai beaucoup regardé Ticketmaster. C'est de loin la meilleure réponse - Aller avec ce qui a été prouvé au travail. –
Penser à diviser le processus de réservation a clarifié la situation un peu. En isolant les étapes à suivre, je peux réduire le temps d'ouverture de verrous ou de transactions et la validation est spécifique à chaque étape et permet de recueillir des données en temps voulu. Cela me permet également de clarifier des scénarios de restauration précis lorsque les opérations ou la validation échouent à chaque étape qui se déroule plutôt que de gérer une grande opération. Merci beaucoup pour la réponse; cela aide beaucoup – swingdoctor