什么是用户操作历史最佳做法?

时间:2012-01-26 07:18:37

标签: .net sql-server-2008-r2

在我们公司,我们希望在我们的Web应用程序中记录用户历史记录,例如当用户访问页面并保存某些内容(调用保存存储过程)时,我们会将此操作记录在某些位置.... 第一个解决方案是在调用任何存储过程(SP)之后,调用SP的“Insert_Log_Table”这个降低性能, 第二是在ORM中使用多线程并在另一个线程中调用“Insert_Log_Table”并且......

我们无法在我们的应用程序架构中使用第二种解决方案,所以现在应该怎么做? 怎么可能有并发或多线程,因为我们不希望用户等待插入日志表和..?

1 个答案:

答案 0 :(得分:1)

为什么不能使用第二种解决方案?在另一个线程中运行方法是一块蛋糕。您无需处理锁定,竞争条件或其他线程问题。它只是一个仅附加日志。如果方法以某种方式失败(甚至没有任何东西可以捕获失败),甚至不会发生任何事情,因为,它只是一个日志。

请参阅此示例:

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

    t.Start();

但作为旁注,我会建议你 - 不要使用SQL。使用其他强大且经过验证的解决方案,如log4net,或恢复到基于快速内存(最终磁盘持久性)NoSQL数据库,如Redis