在C#中实现对象的审计跟踪?

我正在寻找有关如何在C#中为我的对象实现审计跟踪的想法,对于当前项目,基本上我需要:

1.存储给定对象的旧值和新值。 2.记录新对象的创建。 3.删除旧物体。

有没有通用的方法来做这个,比如使用C#Generics,这样我就不必像创建,删除等那样为基础对象的事件编写代码(ORM对象)。事情就是如果有的话如果一个人正在使用一个注入审计跟踪的方法。任何人都有任何经验或他们遵循的任何方法。任何方式在面向方面(AOP)mannner中执行此操作。

请分享您的想法等。

问题非常类似于如何为对象实现审计跟踪(编程)?

我们使用AOP(aspectJ实现)实现了类似的解决方案。 可以捕获使用该特定点并且可以执行特定操作。

这可以在我们喜欢的时候插上电源插上。

但是,我们的实现是在J2EE中。

如果你真的想在app层中做,我建议这样做。

希望能帮助到你..

您可以实现与INotifyPropertyChanged类似的东西,但略有不同。 我已经提取了大部分的INotifyPropertyChanged并将其更改为通用并存储新旧值。 然后,您可以拥有某种可以监听此类和onSaving的管理类,并且可以使用onDeleting来处理更改。

public interface INotifyProperyChanged { event PropertyChangedEventHandler PropertyChanged; } public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e); public class PropertyChangedEventArgs : EventArgs { private readonly string propertyName; public PropertyChangedEventArgs(string propertyName) { this.propertyName = propertyName } public virtual string PropertyName { get { return propertyName; } } public T OldValue { get; set; } public T NewValue { get; set; } } 

除了上述线程中提到的一些内容之外, 命令模式可能会有所帮助,如果在命令中包装对象的所有状态更改,则命令可以负责保留审计跟踪,而对象不会不得不担心审计本身。 当然,创建和处理命令会增加额外开销。

您可以在任何现有对象结构周围包装命令,只需将操作委派给命令层,而不是直接在对象上执行操作。

您是否考虑过使用简单的通知模式? 您可以让服务层引发事件,例如NewObject,ChangedObject,DeletedObject,它们将由通用服务层监听,然后可以获取对象并保存结果。

如果要保存对象的状态,可以使用Xml序列化。

如果您使用SQL Server 2008可以实现新的审计function,则可以使用另一种方法,该function可以审计数据库记录的更改,您甚至可以在读取数据时跟踪(我认为)。

很老的问题,但对于那些想要审核C#对象的人,我建议使用Audit.NET库。

它具有登录到不同存储系统(SQL,Azure,Mongo)和审计不同系统(WCF,EF,MVC)的扩展。

注意:我是老板