这是一个简单而有效的活动日志框架,我想与现有的基于ASP.Net的web-app集成(我将基于LINQ-to-SQL的SQL DB作为后端)。我正在使用类似服务架构的东西来执行数据库操作 - 即调用相关的LINQ操作。我几乎每个实体(即数据库表)都有一个服务类,它处理CRUD操作。
一般来说,我需要跟踪活动 喜欢 - Mr.X添加了一个新项目,My.Y 在这个过滤器上搜索,Mr.Z出口了 Grid的结果是excel 文件等...和类似的简单 基于操作的日志记录(字段级别) 伐木现在很遥远)
所以,这是我在SO,其他论坛和网络上的两天R& D中发现的:
方法1: 使用两个表的简单旧方法:Activity(将所有活动与其actor一起存储)& ActivityType(列出活动类型)。我有一个服务层,所以我可以有一个“ServieBase”类来点击所有CRUD事件并记录我感兴趣的那个。一切都在代码中处理。
实施例: http://dotnetslackers.com/articles/aspnet/Tracking-User-Activity.aspx
方法2: 使用数据库TRIGGER在表级点击事件,然后执行日志记录。这对应用程序来说是完全“抽象”的。我在每个表中都有“LastModifiedBy”字段,所以我将获得'actor'数据,我可以进行日志记录,但这可能会限制我使用DB-operations&需要我分别跟踪其他应用程序活动。但如果值得,我可以考虑一下。
方法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 Misc - 我遇到的其他一些选项但似乎并不太令人信服,或者我最好说他们的工作而不是我的工作: - )
参考 -
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
那么,说什么呢?欢迎任何建议和新想法。目前,我似乎已经介于前两种方法之间,因为我们希望将来能够轻松添加任何额外的活动进行记录。
谢谢。
答案 0 :(得分:1)
这是要添加到工具箱的另一个项目:Sql Server Change Tracking。但它不会做你在这里寻找的一切。您可以查看Command pattern。我将创建一个接口ITrackedCommand,然后将其作为用户可以执行的命令来实现。然后,每个都通过命令调度程序执行,该命令调度程序自动调用ITrackedCommand.Log。我想这会让你到达你需要去的地方。
答案 1 :(得分:1)
我最后使用了前两种方法,因为它们看起来更简单,更容易。最重要的是,它们提供了更多的控制,并允许保持事物的灵活性(即它接近实际的后端编码,使其更容易访问)
我正在标记它,因为没有其他广泛的评论。