我们当前的企业解决方案是由实体框架驱动的ASP.NET MVC应用程序。有几个链接介绍了如何挂钩更改事件以进行审计。我对这个不是很感兴趣。
我对企业级审计架构很感兴趣。对于那些在企业级战斗中受伤的人,你们的审计解决方案是什么?您是否在框架中序列化数据库中的对象。您是否正在设置数据库触发器以审核表?您是否同时使用单独的数据库,以便您的审计增长不会影响您的应用程序数据库?我对这里经过实践检验的解决方案很感兴趣。我知道我们的技术选择(EF)是有选择的,但我首先对基金会感兴趣。
链接将非常感谢。
发布于 2009-09-17 14:35:03
我已经看到了几种解决方案,但我最喜欢的是简单性本身:
这有很多好处,但(在我看来)最大的好处是不必担心或编写所有代码来管理客户端中成对写入操作的事务完整性。
发布于 2009-09-17 14:21:22
我没有任何链接,但在我白天工作的系统中我有维护这里的joy。我们有一个单一的审计表,它基本上存储了以下信息。
TableName、PrimaryKeyValue、ModifiedColumn、OldValue、NewValue、ChangeUser、更改日期
现在,这对审计速度非常有效,在我们的代码中,我们有一个通用的接口来自动实现审计日志,但从“审查”的角度来看,这并不是“最快”获取信息的方法。(假设我们实际上没有做任何需要查看审计日志的事情……)
发布于 2010-02-13 06:41:21
我们最近不得不在我们的企业中解决同样的问题。我们也需要能够恢复到以前的版本。
我们最终审计的是业务实体,而不是sql中的表。我们基本上序列化数据库中的记录,并跟踪从一个版本到下一个版本所做的更改。这种方法允许我们将以前的版本检索到业务实体中,然后通过调用相同的保存操作恢复。恢复的功能将转移到应用程序的职责上,因为它必须在这里解决,否则我们的服务可能需要了解有关参与的应用程序的太多详细信息。提供了按版本、按日期检索记录、查看历史记录以及审计更改的Serivce操作。对于不同的应用程序组和内部的不同实体,这是一种选择加入的方法(并不是数据库中的所有内容都需要审核,所以为什么要这样做)。
然后,我们构建一个轻量级网站,它可以与服务进行对话,并可以显示所有版本。我们构建了一种机制来显示版本之间的添加/更新/删除以进行比较(非常酷的ui表示),这使得用户可以看到谁在什么时候更改了什么。该服务可以发回到url的链接以查看实体的版本。这允许我们的webaps + winform/wpf应用程序启动浏览器,这样用户就可以看到变化。
也许我可以把这些打包起来,如果有人感兴趣的话……
https://stackoverflow.com/questions/1439173
复制相似问题