문제

C#에서 내 객체에 대한 감사 트레일을 구현하는 방법에 대한 아이디어를 찾고 있습니다. 현재 프로젝트의 경우 기본적으로 다음을 필요로합니다.

1. 주어진 객체의 기존 값과 새 값을 연구하십시오. 2. 새로운 개체의 생성. 3. 오래된 물체의 퇴치.

C# 제네릭을 사용하는 것과 같은 일반적인 방법이 있으므로 Creation, Deletion 등과 같은 기본 객체의 이벤트에 대한 코드를 작성할 필요가 없습니다 (ORM 객체). .ANYBody가 사용중인 경우 감사 트레일을 주입하는 방법은 경험이나 그들이 따르는 방법을 가지고 있습니다.

아이디어 등을 공유하십시오.

도움이 되었습니까?

해결책

질문은 매우 비슷합니다객체 (프로그래밍)에 대한 감사 트레일을 어떻게 구현합니까?

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, ChangeObject, DeletedObject와 같은 이벤트를 높이게 할 수 있으며 일반적인 서비스 계층에서들을 수있는 객체를 가져 와서 결과를 저장할 수 있습니다.

객체의 상태를 저장하려면 XML 직렬화를 활용할 수 있습니다.

SQL Server 2008을 사용하면 새로운 감사 기능을 구현하면 데이터를 읽을 때 추적 할 수있는 데이터베이스 레코드를 감사 할 수있는 새로운 감사 기능을 구현할 수 있습니다.

꽤 오래된 질문이지만 C# 객체를 감사하고자하는 사람들에게는 다음을 추천합니다. Audit.net 도서관.

다른 스토리지 시스템 (SQL, Azure, Mongo) 및 다른 시스템 (WCF, EF, MVC)에 로그인하는 확장 기능이 있습니다.

참고 : 저는 소유자입니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top