Что такое история действий пользователя Best Practice? - PullRequest
0 голосов
/ 26 января 2012

В нашей компании мы хотим регистрировать историю пользователей в нашем веб-приложении, например, когда пользователь заходит на страницу и что-то сохраняет (Вызовите сохраненный процесс), мы регистрируем это действие где-то и .... Первое решение после вызова любой хранимой процедуры (SP), вызвать SP «Insert_Log_Table» это снижение производительности, Во-вторых, в ORM используйте многопоточность и вызовите "Insert_Log_Table" в другом потоке и ...

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

1 Ответ

1 голос
/ 26 января 2012

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

См. Этот пример:

    Thread t = new Thread(() =>
            {
                Logger log = new logger();
                log.Log("...");
            });

    t.Start();

Но какпримечание, которое я рекомендую - не используйте SQL для этого.Используйте другие надежные и проверенные решения, такие как log4net , или используйте быструю основанную на памяти (с возможным сохранением диска) базу данных NoSQL, например Redis .

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