• Авторизация


Методы 28-04-2012 16:36 к комментариям - к полной версии - понравилось!


Есть метод М1, в котором грубо говоря есть две части Ф1 и Ф2.

Ф1 — проверяет данные
Ф2 — сохраняет их

Метод М1 обернут в транзакцию. Выглядит это как-то так:

метод М1()
{
НачалоТранзакции();
Ф1();
Ф2();
КонецТранзакции();
}

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

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

Вот если на пальцах то, что предложил автор.

Таким образом получается имитация stateful поведения там, где это сложно достижимо по честному, например в многопользовательской системе (на тысячи пользователей), которая работает с огромным объемом данных, методы блокируют миллионы записей в десятках таблиц.

Как-то так.

А если вы стремитесь к безопасности, то советую посмотреть сюда http://bood.ru/sistemy-bezopasnosti/ - автосигнализация от Бладхаунд.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Методы | Rusov - Блог Русова | Лента друзей Rusov / Полная версия Добавить в друзья Страницы: раньше»