2009-07-10 3 views
0

На веб-сайте asp.net у нас есть форма, доступная для администратора.Как мы можем разрешить параллелизм в asp.net

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

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

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

Где именно код места или в базе данных? и как?

ответ

1

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

Что касается правильного места, вам нужно рассказать, как вы сейчас делаете свой код доступа к данным. Также, какую базу данных вы используете?

This article даст вам кое-что для начала.

0

В нашем приложении мы обрабатываем его как:

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

Например:

  • Read 1: 12:00:00 (Modified дата в прошлом, например, 11:00:00)
  • Read 2: 12:01:30 (Без изменений модифицированного дата)
  • Обновление 1: 12:03:00 (Установка изменено = 12:03:00)
  • Обновление 2: 12:04:00 (параллельное переключение, поскольку обновление см.: О, изменено новее, то данное один)
+1

Обратите внимание, что простое поле даты и времени - это не очень хорошая идея. Компьютеры в эти дни настолько быстры, что две операции UPADTE могут происходить быстрее, чем блок разрешения таймера. Обычно это счетчик. См. Тип столбца MSSQL «Временная метка». –

0

A commo n для реализации параллелизма - использовать временную метку для обновлений, с вами, в качестве кода разработчика, в зависимости от вашего бизнес-процесса. Обычно у вас есть выбор: последний выигрывает, поэтому выигрывает последняя запись, уведомляет пользователя о конфликте и позволяет сделать выбор в отношении того, хотите ли они зафиксировать свои изменения или объединить измененные значения.

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

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

Смежные вопросы