Тайм-аут корзины - PullRequest
       9

Тайм-аут корзины

2 голосов
/ 13 февраля 2012

Если я пишу систему продажи билетов, где клиент выбирает билет, и я хочу заблокировать его на 3 минуты (как мастер билетов), пока они не завершат свой заказ или не истечет время, как я могу это сделать?Я хочу, чтобы клиент не отказывался от своего сеанса / сбоя приложения, а затем получал билет, заблокированный в базе данных навсегда.

Я использую nHibernate для своих ORM и C #.

Ответы [ 3 ]

6 голосов
/ 13 февраля 2012

Просто есть отдельная таблица, в которой хранятся все текущие бронирования.Например:

**Reservations**
UserID
TicketID
ExpiryDate

Это не будет зависеть от сеансов.Вам даже не нужно удалять просроченные записи, когда новый клиент запрашивает билет и находит все места, которые доступны там, где их нет, в таблице резервирований, где срок действия> сейчас.события и тому подобное, будь проще.

0 голосов
/ 13 февраля 2012

Если вы можете идентифицировать каждый тикет, вы можете назначить для этого тикета информацию о блокировке с данными о пользователе, заказе и т. Д. И, конечно, - отметку времени, которая удерживает время, когда истекает блокировка.

Если другой пользователь хочет выбратьбилет, вам просто нужно проверить эту метку времени, чтобы увидеть, истек ли срок блокировки.

0 голосов
/ 13 февраля 2012

Имейте услугу истечения билета, которая периодически разблокирует просроченные блокировки билета.Запишите время истечения и билет (возможно, с идентификатором сеанса).Заказ может удалить это, когда больше не нужен или в случае сбоя, он будет автоматически разблокирован.

...