Работа с многопользовательской средой - PullRequest
6 голосов
/ 22 сентября 2011

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

По сути, мое приложение работает следующим образом. Новые элементы вставляются в базу данных через внешний сервис по мере их поступления. Бизнес-правила указывают, что каждый элемент должен проверяться двумя независимыми сотрудниками. Излишне говорить, что существует связь «один ко многим» между предметом и отзывами. Что является наиболее важным аспектом приложения, так это то, что ни один элемент не может превышать двух отзывов, и система должна отслеживать, кто был двумя рецензентами. Также кто выступил первым рецензентом и вторым.

Теперь у меня все работает. Проблема, с которой я сталкиваюсь, заключается в следующем (один из многих похожих сценариев). Что произойдет, если все пользователи обновят свои списки товаров в течение 5 минут после начала. Пользователь 1 отправляет отзыв для идентификатора элемента 1. Второй человек отправляет отзыв по тому же предмету. Теперь третье лицо отправляет отзыв по идентификатору элемента 1, но уже есть 2 отзыва, поэтому элемент помечен как завершенный.

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

Ответы [ 2 ]

7 голосов
/ 22 сентября 2011

Я не знаю деталей вашего приложения, но похоже, что процесс проверки расширяет окно, в котором несколько человек могут начать обзор, а затем, когда они фиксируют его, оно становится больше двух,

Один из вариантов - ввести концепцию начала обзора.Когда кто-то инициирует действие по выполнению обзора, он «запускает» обзор.Это отмечает обзор как начатый.Система не должна допустить более двух запусков.

Вы также можете сделать его более продвинутым, отключив рецензии, которые мы никогда не «отправляли», или имея возможность удалить отложенный отзыв, который был начат.

5 голосов
/ 22 сентября 2011

Nhibernate имеет различные модели параллелизма, которые вы реализуете в своем проекте в зависимости от ваших потребностей.

Посмотрите на NHibernate-Concurrency

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