题
我在寻找关于如何实现审计跟踪我在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中,你可以实现新的审计功能可以让你审计数据库更改的记录,你甚至可以跟踪(我认为)当读取数据的另一种方法是可用的。