【C#】 AOP轻型框架 AwesomeProxy.Net 介绍使用

今天和大家分享AwesomeProxy.Net小弟开源AOP轻型框架

简单介绍 AOP (Aspect-Oriented Programming)

AOP 是 OOP(物件导向)一个变化程式撰写思想。(非取代OOP而是扩充)

导入AOP帮助:
可帮我们分离核心逻辑跟非核心逻辑代码,很好降低模组间耦合性,已便日后扩充。

  非核心逻辑代码像:(日誌记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来)

例如下图:

http://img2.58codes.com/2024/20096630UyP6I4l2MB.png

  原本写法把写日誌相关程式写入,业务逻辑方法中。导致此方法非单一职则。我们可以把程式重构改写成(右图),将写日誌方法抽离出来更有效达成模组化。

经典例子:

Asp.Net MVC中Contoller,Action过滤器(FilterAttribute)


AwesomeProxy.Net介绍:

AwesomeProxy.Net 主要是拦截方法处理

方法执行前方法执行后方法异常

How to Use:

使用方法类似于Asp.Net MVC中Contoller,Action过滤器

撰写一个标籤(Attribute) 标记拦截动作
public class CacheAttribute : AopBaseAttribute{    public string CacheName { get; set; }    public override void OnExcuting(ExcuteingContext context)    {        object cacheObj = CallContext.GetData(CacheName);        if (cacheObj != null)        {            context.Result = cacheObj;        }    }    public override void OnExcuted(ExcutedContext context)    {        CallContext.SetData(CacheName, context.Result);    }}
将要被拦截类别继承于MarshalByRefObject类别
public class CacheService : MarshalByRefObject{    [Cache]public string GetCacheDate(){return DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss");}}
由ProxyFactory.GetProxyInstance 动态产生被代理类别
CacheService cache = ProxyFactory.GetProxyInstance<CacheService>();

4.直接呼叫方法就可执行标籤上的拦截动作

CacheService cache = ProxyFactory.GetProxyInstance<CacheService>();Console.WriteLine(cache.GetCacheDate());

Simple Code:

撰写Log
权限验证
快取

http://img2.58codes.com/2024/20096630BB4lN2NYOW.png

Unit Test 结果

http://img2.58codes.com/2024/20096630tbgj7MbcAL.png

小结:

使用 AwesomeProxy.Net 和ASP.Net MVC注册Contoller或Action过滤器一样
AOP核心思想就是代理模式。

本篇只先介绍如何使用,后续有时间会再补充代理模式细节!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章