-
09-06-2019 - |
해결책
나는 (아직) castle-windsor를 잠깐 봤기 때문에 그것에 대해 언급할 수는 없지만 postsharp를 사용했습니다.
Postsharp는 컴파일 타임에 위빙을 통해 작동합니다.코드를 수정하는 빌드에 컴파일 후 단계를 추가합니다.코드는 교차 절단 문제를 코드에 프로그래밍한 것처럼 컴파일됩니다.이는 런타임 위빙보다 성능이 조금 더 뛰어나며 Postsharp 속성을 사용하기 때문에 사용이 매우 쉽습니다.나는 AOP에 속성을 사용하는 것이 DI에 사용하는 것만큼 문제가 되지 않는다고 생각합니다.하지만 그건 내 개인적인 취향일 뿐이다.
하지만...
이미 의존성 주입을 위해 캐슬을 사용하고 있다면 AOP에도 캐슬을 사용하면 안 될 이유가 없습니다.런타임 시 AOP는 컴파일 시보다 약간 느리지만 더 강력하다고 생각합니다.내 생각에는 AOP와 DI는 관련된 개념이므로 두 가지 모두에 대해 하나의 프레임워크를 사용하는 것이 좋은 생각이라고 생각합니다.그래서 나는 AOP가 필요한 다음 프로젝트에서 성에 관한 내용을 다시 살펴볼 것입니다.
다른 팁
PostSharp의 몇 가지 사소한 문제...
PostSharp에서 겪은 한 가지 문제는 asp.net을 사용하는 동안 PDB도 삽입되지 않기 때문에 예외 메시지의 줄 번호가 PostSharp에 의해 어셈블리에 삽입된 IL 명령 수만큼 '아웃'된다는 것입니다. :-).
또한 런타임에 PostSharp 어셈블리를 사용할 수 없으면 런타임 오류가 발생합니다.Windsor를 사용하면 나중에 코드를 다시 컴파일하지 않고도 크로스컷을 끌 수 있습니다.
(이것이 의미가 있기를 바랍니다)