CleanAOP--简介

闪电
闪电
闪电
57
文章
0
评论
2020年4月27日14:44:36 评论 50

AOP为Aspect Oriented Programming的缩写。 意为:面向切面编程。将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

github: 传送门

一:认识Aop

在日常的编程任务中,很多的代码都是进行一些通用的功能(日志、检测、一层处理等等),然后代码都是机械般的复制粘贴,实际上的业务逻辑代码只占不多的份额。那么,aop能更好的组织通用的代码、然后以标记的方式让某个方法切入,使得业务逻辑和通用代码分离,使其互不影响。

使用Aop的优点
容易扩展新的切面。
业务逻辑与切面逻辑解耦合。
对修改封闭、对扩展开放。

二:使用Aop的缺点

对于一些已存在修饰符的方法无法使用,需添加外围方法包含。

三:CleanAop支持语言

CleanAOP--简介

版本历史

最新版本:v2.0.0
 
v2.0.0:拦截面切入方式改变,优化代理类生成方式。
使用AOP的类不能有带参构造函数bug修复。

v1.0.0:框架搭建完成、支持同步异步、提供Demo切面(错误捕获,log,时间记录)、前后切面选择。

哪里下载?

网盘下载:
v1.0.0
v2.0.0

Demo测试案例

多切面、同步

[TryCatchAttrubute]
[LogAopAttrubute]
[TimeAop]
public virtual void DoWord()
{
    throw new Exception("错误测试");
    Debug.WriteLine("123");
}
结果:

开始捕捉异常([TryCatchAttrubute])
开始执行([LogAopAttrubute])
2015/11/5 0:47:19([TimeAop])
错误测试(异常捕获处理)
执行中([LogAopAttrubute])
执行结束,Void DoWord()方法([LogAopAttrubute])
2015/11/4 23:47:19  [TimeAop])

多切面、异步

[TryCatchAttrubute]
[LogAopAttrubute]
[TimeAop]
public virtual async Task DoWord()
{
    await GetValueAsync(1234.5123, 1.01);
    Debug.WriteLine("123");
    throw new Exception("错误测试");
    Debug.WriteLine("123");
}
结果:

开始捕捉异常([TryCatchAttrubute])
开始执行([LogAopAttrubute])
2015/11/5 1:05:23([TimeAop])
执行中([LogAopAttrubute])
123
处理错误,错误信息为:错误测试([TryCatchAttrubute])
执行结束,System.Threading.Tasks.Task DoWord()方法([LogAopAttrubute])
2015/11/5 0:05:23([TimeAop])
继续阅读
weinxin
我的微信
微信扫一扫
闪电
  • 本文由 发表于 2020年4月27日14:44:36
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
.NET责任链模式、单例模式、模板方法模式混用 .NET

.NET责任链模式、单例模式、模板方法模式混用

前言      哇,看到题目挺长的,这个组合型的东西,到底能干啥呢?本篇文章来一起琢磨琢磨,这两天为了团队的软件赶工,我负责的那一块叫:插件管理器。我们团队的成员用的语言还是挺分散的,本人C#,队长V...
WPF如何用TreeView制作好友列表、播放列表 .NET

WPF如何用TreeView制作好友列表、播放列表

前言   TreeView这个控件对于我来说是用得比较多的,以前做的小聊天软件(好友列表)、音乐播放器(播放列表)、类库展示器(树形类结构)等都用的是TreeView,下面以一个好友列表为例,说明一下...
WPF多线程UI更新——两种方法 .NET

WPF多线程UI更新——两种方法

前言     在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象。)这是很常见的一个错误...
WPF 蒙罩层 LoadingPage .NET

WPF 蒙罩层 LoadingPage

前言   无论是在PC客户端,移动端,网站,在遇到长时间处理的时候都会需要用到蒙罩层,让用户有更好的体现。今天上网逛了一下各位前辈网友的蒙罩层的实现方式,觉得有很多都搞复杂了(利用前台代码+后台代码+...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: