回到目录html
面向侧面的程序设计(aspect-oriented programming,AOP,又译做面向方面的程序设计、观点导向编程、剖面导向程序设计)是计算机科学中的一个术语,指一种程序设计范型。该范型以一种称为侧面(aspect,又译做方面)的语言构造为基础,侧面是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(crosscutting concern)。
侧面的概念源于对面向对象的程序设计的改进,但并不仅限于此,它还能够用来改进传统的函数。与侧面相关的编程概念还包括元对象协议、主题(subject)、混入(mixin)和委托。redis
在方法执行前或者执行后注入新的代码段,让新的代码段的功能注入到原方法里,其中原方法须要是接口方法或者虚方法,缘由是咱们要重写原方法!编程
这种拦截器比较简单,只在方法执行前,后进行日志行为的注入,不须要返回结果.json
这种拦截器比起日志拦截器来讲就复杂一些,它须要经过缓存的key来返回结果,同时集成了缓存的逻辑及缓存持久化组件等.c#
/// <summary> /// 为方法添加缓存行为 /// </summary> /// <returns></returns> [CachingAspect] public virtual List<People> GetHello() { return new List<People> { new People("test1","ok",DateTime.Now), new People("test2","sad",DateTime.Now), new People("test2","force",DateTime.Now), }; } [Fact] public void FuncInvoke() { var fun = ProxyFactory.CreateProxy<AspectTest, AspectTest>(); var obj1 = fun.GetHello(); Thread.Sleep(1000); var obj2 = fun.GetHello(); Assert.Equal(obj1, obj2); }
回到目录缓存