우리는 WCF 응용 프로그램에 새로운 프로파일 링 기능을 추가하여 응용 프로그램에서 시간이 낭비되는 것을 기록해야합니다. PostSharp에서 로깅을 적용하는 컨벤션 중심 접근 방식을 찾고 있으며 실제로 로깅하는 방법에 대한 정보가 필요합니다. StopWatch를 사용하여 로깅 목적으로 이미 사용자 지정 클래스를 만들고 내 WCF 응용 프로그램의 계층을 통해 단계를 기록 할 수 있습니다. 그러나 나는이 목적을 위해 PostSharp와 함께 사용할 수있는 thread safe 대체 라이브러리가 있는지 궁금합니다. MiniProfiler를 보았습니다 만, 주로 ASP.NET MVC 어플리케이션을위한 것 같습니다. 고려해야 할 다른 프레임 워크 또는 사용자 정의 클래스를 사용해야합니까? 감사합니다.wcf + postsharp의 Profiler lib
답변
IEndpointBehavior
에 구현 된 IClientMessageInspector
을 사용하여 과거와 비슷한 결과를 보였습니다. 원하는 로깅 유형에 따라 트릭을 수행 할 수 있습니다. 예
정확히 무엇이 필요하지 않습니다. 예 : 지금은 특정 어셈블리의 모든 공용 메소드를 프로파일 링하기 위해 post sharp를 구성했습니다. 우리가 데이터베이스를 호출 할 때까지 각 메서드 호출이 레이어를 얼마나 오래 걸리는지 알고 싶습니다. 이제 xml의 결과를 log4net 데이터베이스에 출력 할 수있는 사용자 정의 클래스로이 작업을 수행했습니다. 이 diy 접근 방식 대신이 목적을 위해 일종의 프레임 워크를 사용해야하는지 궁금합니다. – jaspernygaard
PostSharp 자체가 스레드 안전 다음 링크에있다. 잘못 작성하면 스레드가 안전하지 않을 수도 있지만 항상 스레드로부터 안전하게 만들 수있는 방법이 있습니다.
OnMethodBoundaryAspect를 사용하고 있고 OnEntry에서 OnSuccess로 전달해야하는 경우 OnMethodExecutionArgs.MethodExecutionTag에 초기 스톱워치 값을 저장하십시오.
미니 프로파일 러는 WCF를 완벽하게 지원합니다. 데모 프로젝트도 있습니다. –