Многопользовательское редактирование - PullRequest
1 голос
/ 21 июля 2011

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

У меня есть идея использовать какой-то класс для мониторинга активности записей, которые были отредактированы и т. Д., Но это выглядит немного более убойно. Моя другая проблема заключается в том, что если браузер аварийно завершит работу или отключит компьютер, чтобы определить, как это повлияет на состояние страницы.

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

Есть ли у кого-нибудь мысли или ресурсы о том, как я мог бы реализовать нечто подобное. Код не требуется.

основываясь на комментариях, я добавил эти дополнительные детали. база данных SQL Server 2008 asp.net 3.5 например, одна запись может содержать много частей базы данных, сеансовую таблицу таблицы бронирования и строку в таблице прерывателей.

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

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

По сути, я поддерживаю таблицу Edit (lookup) в базе данных SQL, содержащую 4 поля UserID, Action, EntityID and Datestamp и связываю ее с каждой связанной страницей и редактируемым элементом.

Так, например, если пользователь включенПосле редактирования веб-страницы Foo и перехода по ссылке edit программа выполнит поиск таблицы Edit, и, если никто больше не редактирует запись, вставит, то есть: 4, 'Edit Foo', 123, GETUTCDATE(), где 123 - идентификатор Foo редактируется.

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

Однако решение отлично подходит для нас в условиях интенсивного использования.Я надеюсь, вы поняли идею.

0 голосов
/ 21 июля 2011

Посмотрите на MSDN для оптимистического / пессимистического параллелизма в ADO.NET .

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

В отличие от пользователей, которые используют оптимистичный параллелизм не блокировать строку при ее чтении.Когда пользователь хочет обновить строку, приложение должно определить, изменил ли другой пользователь строку, так как она была прочитана.Оптимистичный параллелизм обычно используется в средах с низким уровнем конкуренции за данные.Оптимистичный параллелизм повышает производительность, поскольку блокировка записей не требуется, а блокировка записей требует дополнительных ресурсов сервера.Кроме того, для обеспечения блокировки записей необходимо постоянное соединение с сервером базы данных.Поскольку в модели оптимистичного параллелизма это не так, соединения с сервером могут бесплатно обслуживать большее количество клиентов за меньшее время.

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

Тестирование на нарушения оптимистичного параллелизма Существует несколько методов тестирования на нарушение оптимистичного параллелизма.Один включает в себя включение столбца отметки времени в таблицу.Базы данных обычно предоставляют функции отметок времени, которые можно использовать для определения даты и времени последнего обновления записи.Используя этот метод, столбец метки времени включается в определение таблицы.Всякий раз, когда запись обновляется, отметка времени обновляется, чтобы отразить текущую дату и время.В тесте на нарушения оптимистичного параллелизма столбец метки времени возвращается с любым запросом содержимого таблицы.При попытке обновления значение метки времени в базе данных сравнивается с исходным значением метки времени, содержащимся в измененной строке.Если они совпадают, выполняется обновление, и столбец метки времени обновляется с указанием текущего времени, чтобы отразить обновление.Если они не совпадают, произошло нарушение оптимистичного параллелизма.

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

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