이해와 AOP의 실현

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                  });

 

 

추천

출처www.cnblogs.com/fanfan-90/p/12032152.html