문제

저는 보안, 로깅, 유효성 검사 등과 같은 교차 문제에 대해 몇 가지 기본 AOP 스타일 솔루션을 사용해 왔습니다.내 솔루션은 다음과 같습니다. 캐슬 윈저 및 DynamicProxy.Boo 기반 DSL을 사용하여 모든 것을 적용하고 코드에 속성을 깔끔하게 유지할 수 있기 때문에 이 경로를 선택했습니다.주말에 보러가자고 했더니 포스트샤프 "더 나은"솔루션이 될 것으로 예상되기 때문입니다.PostSharp를 잠깐 살펴봤지만 속성 사용으로 인해 지연되었습니다.

두 가지 솔루션을 모두 시도해보고 경험을 공유하고 싶은 사람이 있나요?

도움이 되었습니까?

해결책

나는 (아직) castle-windsor를 잠깐 봤기 때문에 그것에 대해 언급할 수는 없지만 postsharp를 사용했습니다.

Postsharp는 컴파일 타임에 위빙을 통해 작동합니다.코드를 수정하는 빌드에 컴파일 후 단계를 추가합니다.코드는 교차 절단 문제를 코드에 프로그래밍한 것처럼 컴파일됩니다.이는 런타임 위빙보다 성능이 조금 더 뛰어나며 Postsharp 속성을 사용하기 때문에 사용이 매우 쉽습니다.나는 AOP에 속성을 사용하는 것이 DI에 사용하는 것만큼 문제가 되지 않는다고 생각합니다.하지만 그건 내 개인적인 취향일 뿐이다.

하지만...

이미 의존성 주입을 위해 캐슬을 사용하고 있다면 AOP에도 캐슬을 사용하면 안 될 이유가 없습니다.런타임 시 AOP는 컴파일 시보다 약간 느리지만 더 강력하다고 생각합니다.내 생각에는 AOP와 DI는 관련된 개념이므로 두 가지 모두에 대해 하나의 프레임워크를 사용하는 것이 좋은 생각이라고 생각합니다.그래서 나는 AOP가 필요한 다음 프로젝트에서 성에 관한 내용을 다시 살펴볼 것입니다.

다른 팁

PostSharp의 몇 가지 사소한 문제...

PostSharp에서 겪은 한 가지 문제는 asp.net을 사용하는 동안 PDB도 삽입되지 않기 때문에 예외 메시지의 줄 번호가 PostSharp에 의해 어셈블리에 삽입된 IL 명령 수만큼 '아웃'된다는 것입니다. :-).

또한 런타임에 PostSharp 어셈블리를 사용할 수 없으면 런타임 오류가 발생합니다.Windsor를 사용하면 나중에 코드를 다시 컴파일하지 않고도 크로스컷을 끌 수 있습니다.

(이것이 의미가 있기를 바랍니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top