ASP.Net用户活动跟踪数据库

问题描述 投票:12回答:2

这是一个简单而有效的活动日志框架,我想与我现有的基于ASP.Net的web-app集成(我将基于LINQ-to-SQL的SQL DB作为后端)。我正在使用类似服务架构的东西来执行数据库操作 - 即调用相关的LINQ操作。我几乎每个实体(即数据库表)都有一个服务类,它处理CRUD操作。

一般来说,我需要跟踪以下活动 - Mr.X添加了一个新项目,My.Y在此过滤器上搜索,Mr.Z将Grid的结果导出到excel文档等...以及类似的基于简单操作的日志记录(现场级日志记录目前很远)

所以,这是我在SO,其他论坛和网络上的两天研发中发现的:

方法1:使用两个表的简单旧方法:Activity(存储所有活动及其actor)和ActivityType(列出活动类型)。我有一个服务层,所以我可以有一个“ServieBase”类来点击所有CRUD事件并记录我感兴趣的那个。一切都在代码中处理。

示例:http://dotnetslackers.com/articles/aspnet/Tracking-User-Activity.aspx

方法2:使用数据库TRIGGER在表级点击事件,然后执行日志记录。这对应用程序来说是完全“抽象”的。我在每个表中都有“LastModifiedBy”字段,因此我将获得“actor”数据,我可以进行日志记录,但这可能会限制我进行数据库操作并需要我分别跟踪其他应用程序活动。但如果值得,我可以考虑一下。

方法3 :(概念,需要更多指导)

3.1 MVC方法 - 我们考虑将来采用MVC,我在MVC中发现了一些有效的日志技巧 - (传统的基于L2S的网络应用程序是什么?)

Log User Activity on ASP.NET MVC Application Track user activity/actions for an asp.net mvc website?

3.2跟踪服务我在Windows中遇到了“跟踪服务”功能 - 它的网络等效吗?

http://msdn.microsoft.com/en-us/magazine/cc163466.aspx http://www.codeproject.com/KB/WF/WWF__Tracking_Service.aspx?msg=2879654

3.3其他 - 我遇到的其他一些选项,但似乎并不太令人信服,或者我最好说他们的工作而不是我的工作:-)

参考 -

http://learn.iis.net/page.aspx/480/sample-web-analytics-tracking-module/

SQL事件探测器:https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5054787.html http://technet.microsoft.com/en-us/library/cc966515.aspx

那么,说什么呢?欢迎任何建议和新想法。现在,似乎我已经介于前两种方法之间,因为我们希望将来能够轻松添加任何额外的活动进行记录。

谢谢。

asp.net database linq-to-sql logging android-activity
2个回答
1
投票

这是添加到您的工具包的另一个项目:Sql Server Change Tracking。但它不会做你在这里寻找的一切。你可以看看Command pattern。我将创建一个接口ITrackedCommand,然后将其作为用户可以执行的命令来实现。然后,每个都通过命令调度程序执行,该命令调度程序自动调用ITrackedCommand.Log。我想这会让你到达你需要去的地方。


1
投票

我最后使用了前两种方法,因为它们看起来更简单,更容易。最重要的是,它们提供了更多的控制,并允许保持所需的灵活性(即它接近实际的后端编码,使其更易于访问)

我正在标记它,因为没有其他广泛的评论。

© www.soinside.com 2019 - 2024. All rights reserved.