AOP意为面向切面的程序设计,主要表现为对不同的代码逻辑进行隔离,从而降低不同业务逻辑之间的耦合性,AOP又理解为“横切”,可以在不改变原有实现的情况下,对代码进行拦截和扩展,如果原有设计像一个瓶子,AOP就相当于一个贴纸,是贴在瓶子外面的 ...
AOP意为面向切面的程序设计,主要表现为对不同的代码逻辑进行隔离,从而降低不同业务逻辑之间的耦合性,AOP又理解为“横切”,可以在不改变原有实现的情况下,对代码进行拦截和扩展,如果原有设计像一个瓶子,AOP就相当于一个贴纸,是贴在瓶子外面的,而不是打开瓶盖从瓶口把实现放进瓶子里。
.NET中实现AOP的第三方库有很多,这里不再阐述了,在这里我们主要用到了.NET中的动态代理技术,为了让大家更深入地理解,这里借用一下上一篇文章(不用Unity库,自己实现.NET轻量级依赖注入)中的例子,在上一篇文章中,我们自己实现了一个轻量级的依赖注入,在这里我们准备用.NET动态代理对依赖注入的方法进行拦截和扩展。
在大部分系统中,日志和权限都是很常见的功能,我们给自己实现的依赖注入加上AOP的功能,使得所有方法自动实现日志记录和权限验证的功能,首先我们来实现一个公共的权限代理类:
/// <summary> /// 权限验证代理类 /// </summary> public class AuthorizeProxy : IInterceptor { public void Intercept(IInvocation invocation) { //判断是否授权 if (HttpContext.Current.User.Identity.IsAuthenticated) { invocation.Proceed(); } else { throw new Exception("没有权限!"); } } }
原标题:不用Unity库,利用.NET动态代理自己实现AOP
关键词:.NET
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。