2012-06-12 2 views
1

A37 예제 시도했습니다 http://www.developerfusion.com/article/5307/aspect-oriented-programming-using-net/3 잘 작동하지만 성능에 문제가 있습니다. 각 호출에는 이제 40ms의 오버 헤드가 있습니다.Aspect 지향 프로그래밍 : 느림 #

방법이 있습니까 1. 오버 헤드를 줄입니까? 예제에서 제거 할 수있는 것이 있는지 확실하지 않습니다. 2. 더욱 중요한 것은 public 메서드에 대해서만 호출 차단을 수행 했습니까? Type in Preprocess를 살펴볼 수는 있지만 그 시점에서 이미 20ms를 사용했으며 개인 방법이 전혀 가로 채지 못하도록하고 싶습니다. 나는 attributetargets를 메소드로 만들어서 할 수 있지만, 나는 그것을 피하고 attributetarget을 클래스로 남겨 두는 편이다.

덕분에 내 관점에서

+0

어떤 AOP 도구를 사용하고 있습니까? 이 일련의 기사를 기반으로 한 Aspect # 또는 DynamicProxy처럼 보입니까? –

답변

0

는 AOP를 구현하기위한 MarshalByRefObjects를 사용하는 것은 좋지 않습니다. aspect를 구현하기 위해 코드 생성을 사용하기 때문에 성능이 훨씬 좋은 많은 다른 훌륭한 AOP 구현이있다.

0

MarshalByRefObjects를 사용하는 경우에도 몇 개의 통화를 가로 채면 성능이 허용됩니다. 40ms는 "조언"의 구현과 차단 프로세스뿐만 아니라 매우 나쁜 오버 헤드 인 것 같습니다.

PostSharp와 같은 컴파일 타임 AOP 프레임 워크를 사용해 볼 수 있지만 "길잡이 조언이 구현되었습니다."문제가있는 경우 문제가 해결되지 않습니다.

비교하려는 경우 성능이 좋고 사용하기 쉬운 런타임 경량 AOP 프레임 워크 NConcern .NET을 사용해보십시오.

관련 문제