.net 什么是用户操作历史最佳实践?

.net 什么是用户操作历史最佳实践?,.net,sql-server-2008-r2,.net,Sql Server 2008 R2,在我们公司,我们希望在我们的web应用程序中记录用户历史记录,例如,当用户来到某个页面并保存某个内容时(调用save stored proc),我们将此操作记录在某个位置和。。。。 第一种解决方案是在调用任何存储过程(SP)后,调用“Insert_Log_Table”的SP,这会降低性能, 第二个是在ORM中使用多线程并在另一个线程中调用“Insert_Log_Table”,然后 对于应用程序体系结构中的一些问题,我们不能使用第二种解决方案,那么现在我们应该怎么做呢? 既然我们不希望用户等待插入

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

对于应用程序体系结构中的一些问题,我们不能使用第二种解决方案,那么现在我们应该怎么做呢?
既然我们不希望用户等待插入到日志表中,那么如何实现并发或多线程呢?

为什么不能使用第二种解决方案?在另一个线程中运行方法很容易。您不需要处理锁定、争用条件或其他线程问题。这只是一个只附加的日志。如果方法以某种方式失败了,甚至什么也不会发生(因此没有任何东西可以捕捉到失败),因为它只是一个日志

请参见此示例:

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

    t.Start();

但作为补充,我建议您不要使用SQL。使用其他健壮且经验证的解决方案,如,或恢复到基于快速内存(最终具有磁盘持久性)的NoSQL数据库,如。

您是否愿意解释为什么SQL不健壮或经验证?如果他已经有一个数据库,那么他应该使用它。为什么要引进另一种他可能不熟悉的技术呢?我没说SQL不健壮;我说过有更强大的日志解决方案。log4net是一个工具,它配备了很多配置选项,特别是用于日志记录的配置选项,包括修剪、格式化、保存调用堆栈、使用各种选项(连续、一天一次、事件日志、基于文件、基于数据库等)进行持久化。感谢重播,但我的项目太大,无法更改源代码,更改sql更舒适,成本更低。在记录历史记录后,我想向用户显示它,因此我希望日志数据位于sqlDatabase中。有什么方法可以解决我的问题吗?请参阅我答案的开头。