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

1.Store给定对象的旧值和新值。 2.Record创建新对象。 3.Deletion老的对象。

是否有这样做,喜欢用C#泛型,这样我就不用写代码,就像创建基本对象的事件,对缺失等(ORM对象)。该事情是任何通用的方法如果如果使用.Anybody有一种方式来注入审计跟踪具有任何经验或它们follow.Any方式在一个面向方面(AOP)mannner做到这一点的任何方法。

请分享您的想法等等。

有帮助吗?

解决方案

问题是相当类似 如何实现为对象的审计跟踪(编程) ?

我们已经实现了一个类似的解决方案,使用AOP(AspectJ实现)。使用此特定点可以被捕获并可以执行的特定操作。

这可以插入并插过,当我们喜欢。

然而,我们的实现是J2EE ..

如果你真的想这样做,在应用层,我建议这一点。

希望它能帮助..

其他提示

您可以实现类似的东西,以INotifyPropertyChanged的有细微的差别。我最提取的INotifyPropertyChanged的,改变了它是通用的,存储新旧值。然后,您可以有某种管理类的,可以听这和onSaving和onDeleting可以对付的变化。

public interface INotifyProperyChanged<T>
{
   event PropertyChangedEventHandler<T> PropertyChanged;
}

    public delegate void PropertyChangedEventHandler<T>(object sender,   
PropertyChangedEventArgs<T> e);

public class PropertyChangedEventArgs<T> : 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中,你可以实现新的审计功能可以让你审计数据库更改的记录,你甚至可以跟踪(我认为)当读取数据的另一种方法是可用的。

漂亮的老问题,但对于那些希望审计C#的对象,我会建议 Audit.NET 库。

它扩展为登录到不同的存储系统(SQL,天青,蒙戈)和审核的不同系统(WCF,EF,MVC)。

注意:我的主人

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top