특정 소프트웨어 설계 상황에서 수행해야 할 작업을 모릅니다. 인터넷 검색만으로 해결책을 찾았지만 만족스러운 답을 찾지 못했습니다. 그래서 저는 당신의 전문 지식과 최고의 전문 지식을 알고 싶습니다. 필자는 시작하기 위해 몇 가지 추상화 계층이있는 시스템을 가지고 있습니다. 사용자에게 표시되는 API는 간단한 수의 메소드로 구성된 간단한 클래스입니다. 이러한 메서드를 호출하면 전체 추상화를 통해 메서드 호출의 눈사태가 발생합니다. 도중에 일정한 탈퇴가있을 것입니다. 이 방법의 각 요소는 메시지 시스템을 통해 의사 결정을 거부하고 이유를 읽을 수있는 사람에게 되돌려 보낼 수 있습니다. 시스템은 또한 모든 호출과 탈퇴를 로깅합니다. 이는 매우 중요합니다. 솔직히 그것이 핵심 이슈입니다.디자인 패턴 추적 메서드 호출/호출자
문제는 다음과 같습니다. WHO가 특정 방법을 호출했음을 알고 싶습니다. 그래서 나는 어떤 종류의 손잡이를 도중에 내놓을 수 있으며, 모든 추상화는 다음과 같이 알고 있습니다. "맞아,이 남자가 원해. 그래서 나는 기록 할 수있어.이 남자가 원했어."
나는 왜 다른 시스템이 그 API를 사용할 수 있기 때문에 이것이 필요하다고 생각합니다. 어쩌면 GUI는 아마도 HTTP로 구동되는 원격 제어기, 어쩌면 하드웨어 트리거, 아마도 자동 실행 루틴 등의 명령을 삭제하려고 할 수 있습니다.
나는 WHO가 요구하는 기준에 따라 시스템을 만들고 싶지 않습니다. 나는 그것이 모든 thouse 레이어를 추상화하려는 의도와 절대적인 반대가 될 것이라는 것을 알고 있습니다. 나는 단지 제대로 기록하고 싶다. WHO는 WHAT을 원했습니다.
지금은 나무가 보이지 않습니다. 객체 인스턴스와 같은 티켓을 API에 전달했습니다. 시스템이이 티켓을 ID로 등록합니다. API 사용자는 명령을 호출 할 때 티켓을 넘겨야 만 시스템에서 방금 호출 한 사람을 알 수 있습니다.
음, 한 문장으로 질문하기 : 메소드의 호출자를 추적/식별하기위한 좋은 패턴이 있습니까?
편집 : 이 상황에서 사용되는 언어는 일반적으로 C#입니다. 지금까지 ... 나의 현재 솔루션은 마법처럼 작동하고
public void SomeMethod(string name, [CallerMemberName] string callerName = null)
{
Console.Writeline($"SomeMethod was called from {callerName}");
...
}
고마워요. 이것으로 회원 명을 알려주지 만 시작하기에 좋은 단계입니다. 특히 더 이상의 조건이 필요 없기 때문에 특히 그렇습니다. 그냥 그 단어를 추가 ... 꽤 좋은. 여전히 문제는 : Gui가 QWERTYCallMethod 메소드를 통해 호출하고 순수한 사고로 동일한 메소드가 웹 컨트롤러에서 API를 호출하는 데 사용됩니다. – kaymcray