2009-10-07 3 views
8

다양한 프로젝트에서 나는 AOP 또는 의존성 주입 프레임 워크를 사용해야했다..net의 기능/빌드 성능을위한 최상의 Aspect Oriented Framework

우리는 Enterprise LIbrary, Unity 및 PostSharp를 사용했습니다.

지금까지 Postsharp는 나의 측면을 어떻게 생생하게 만들 수 있는지에 관한 유연성 측면에서 최고의 선택입니다.

유일한 문제는 PostSharp가 설치되면 필요한 빌드 시간입니다. 내 개발 담당자는 PostSharp에서 온 모든 고블린에 대해서도 세금을 납부하는 것을 좋아하지 않습니다.

내 질문은 : 빠른 빌드 시간과 훌륭한 기능을 위해 어떤 AOP 프레임 워크를 권하는가?

감사합니다, 귀하의 답변은 크게

패트릭

답변

7

PostSharp는 기본적으로 완전한 기능을 갖춘 정적 위버입니다. 즉, 컴파일 과정에서 빌드 과정 중 직조 작업이 수행됩니다. 그리고 확실히, 그것은 약간의 시간이 걸릴 수 있습니다. 동적 직공을 사용하면 오버 헤드가 어떤 빌드 시간을 원하지 않는 경우 해결책은 단 하나가,

(버전 2.0 함께 올 것이다 runtime performance improvementsbuild time performance improvements에 대한 가엘 발표를 읽어 보시기 바랍니다). .NET에는 Castle.DynamicProxy 또는 Linfu.DynamicProxy과 같은 차단 프레임 워크가 여러 개 있습니다. 런타임시 프록시를 생성합니다. 이러한 프레임 워크는 PostSharp와 같은 정적 AOP 프레임 워크만큼이나 할 수 없으며 런타임시 성능이 떨어질 수 있습니다. 매우 자주, IOC의 프레임 워크 (등 Spring.NET, Unity, Windsor) 동적 차단 기능을 제공

또 다른 해결책은 다음 정적 방식으로 만 빌드 과정에서 조인 포인트를 엮어 하이브리드 직공,보고,하는 것입니다

런타임에 동적으로 애스펙트를 적용 할 수 있습니다. Mono.Cecil을 백엔드로 사용하는 Linfu.AOP은 이와 같이 작동합니다.

0

Spring.NET은 직물을 사용하지 않습니다 감사합니다 그것은 매우 안정적인 자바 AOP 프레임 워크를 기반으로합니다. Here은 프로젝트 주소입니다.

관련 문제