AOP : 가로 세로 새로운 기능을 제공하기 위해, 원래의 코드에 손상없이 프로그래밍을 지향. AOP는 트랜잭션 로그, 권한, 예외, 캐시로, 일반적인 기능을 추가 할 수 있습니다 ...
일반적인 AOP :
필터에서 MVC, HttpModule을 ...
AOP를 구현하는 방법 :
1, 데코레이터, 데코레이터 객체는 동적으로 새로운 기능을 확대하고, 그리고 그것은 AOP로 간주하므로, 원래 클래스를 수정하지 않지만, 높은 비용 (정적)
(2) 동적 프록시, 동적으로 생성 된 오브젝트의 용도. (동적)
객체가 컨테이너에 의해 생성되기 때문에 3, DI 프레임은, AOP를 쉽게 구현할 수
사례 1, 동적 프록시 AOP를 달성하기 위해 :
1 이용 시스템; 2 사용 System.Collections.Generic 단계; (3) 사용 을 System.Linq 단계; 4 사용 System.Text 단계; 5 이용 System.Threading.Tasks; 6 7 사용 Castle.DynamicProxy 단계; // Castle.Core 8 9 스페이스 MyAOP 10 { // 业务类接口 11 공중 인터페이스 IUserProcessor 12 { 13 무효 RegUser (사용자 사용자); 14 } 15 // 业务类 (16) 공공 클래스 UserProcessor : IUserProcessor . 17 { 18이다 /// <요약> 19. /// 가상 가져와야한다 (20)가있다 /// </ 요약> (21)가있다 /// <= "사용자"PARAM 이름> </ PARAM> (22)는 공공 가상 보이드 RegUser (사용자 사용자) (23)가 { 24 Console.WriteLine ($ " 등록 된 사용자 .NAME {} user.name 암호 : user.password {} " ); 25 } 26이다 } 27 // AOP의 로직 (28) 공개 클래스 MyInterceptor의 : IInterceptor 29 { 30 공공 공극 차단 (IInvocation 호출) 31 { 32 PreProceed (호출); 33 invocation.Proceed (); 34 PostProceed (호출); 35 } 36 공공 공극 PreProceed (IInvocation 호출) 37 { 38 Console.WriteLine ( " 方法执行前" ); 39 } 40 41 공중 무효PostProceed (IInvocation 호출) 42 { 43은 (Console.WriteLine " 메소드의 실행 후에 " ) 44 } 45 } 46 }
1 VAR의 인터셉터 = 새로운 MyInterceptor의 ()를; 2 UserProcessor userprocessor = 새 . ProxyGenerator () CreateClassProxy <UserProcessor> (인터셉터); 3 userprocessor.RegUser ( 새로운 사용자 4- { 5 명 = " AAA " , 6 비밀 = " 123456 " 7 });