CleanAOP--简介

作者:立地(欧文)
邮箱:jarvin_g@126.com

导语:

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

一:认识Aop

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

使用Aop的优点

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

使用Aop的缺点

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

CleanAop支持语言

版本历史

最新版本:v2.0.0

  • v1.0.0:框架搭建完成、支持同步异步、提供Demo切面(错误捕获,log,时间记录)、前后切面选择。
  • v2.0.0:
    1. 拦截面切入方式改变,优化代理类生成方式。
    2. 使用AOP的类不能有带参构造函数bug修复。

哪里下载?

  1. github地址
  2. 网盘下载:

Demo测试案例

  1. 多切面、同步

    [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])
  2. 多切面、异步

    [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])

.NET AOP微型框架发布 --CleanAOP的更多相关文章

  1. MVC微型框架---------学习

    1.单一入口机制 是指在web程序中 所有的请求都指向一个脚本文件 2.工厂模式的概念精髓:工厂类就是对类的封装,类是对方法的封装,方法是对实现过程的封装调用当前类的静态方法,规范的写法是使用 sel ...

  2. Tao 1.2.0图形框架发布

    Tao 1.2.0图形框架发布         Tao图形框架是方便在Mono和.Net环境下进行游戏相关开发的库绑定和实用工具集.目前,对以下库提供支持: Cg - [Cg website] Dev ...

  3. PHP之MVC微型框架简单搭建

    好长时间没有写博客了,这段时间过得紧张的不行,以致于都没有抽出时间来好好的总结一下自己这段时间的生活和学习. 其实今天不想写什么技术博客,就想简单总结一下这段时间的生活.10月8号从家里回来以后决定自 ...

  4. 开源的.Net ORM微型框架SuperHelper

    SuperHelper——灵活通用的.开源的.Net ORM微型框架 SuperHelper是博主利用业余时间编写的一个ORM微型框架,除了可以提高开发效率,与其它ORM框架相比,博主更加喜欢Supe ...

  5. php源码建博客4--实现MVC结构微型框架

    主要: 常量优化路径 自动加载类 优化入口文件 安全访问项目目录 --------------文件结构:-------------------------------------- blog├─App ...

  6. SuperHelper——灵活通用的、开源的.Net ORM微型框架

    SuperHelper是博主利用业余时间编写的一个ORM微型框架,除了可以提高开发效率,与其它ORM框架相比,博主更加喜欢SuperHelper的使用简单.适用范围广的特点. 简介 SuperHelp ...

  7. AOP日志框架实现

    AOP日志框架实现 JDK动态代理实现日志框架 首先,在项目包com.ay.test 下创建业务接口类BusinessClassService,具体代码如下: BusinessC lassServic ...

  8. 结合 AOP 轻松处理事件发布处理日志

    结合 AOP 轻松处理事件发布处理日志 Intro 前段时间,实现了 EventBus 以及 EventQueue 基于 Event 的事件处理,但是没有做日志(EventLog)相关的部分,原本想增 ...

  9. 使用dubbo分布式服务框架发布服务及消费服务

    什么是DUBBO DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案. 准备工作 安装zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服 ...

随机推荐

  1. c/c++ int,float,short 大小端转换函数

    unsigned int(uint32_t)大小端转换函数 unsigned int BLEndianUint32(unsigned int value) { return ((value & ...

  2. Python:学习遇到的小问题:记事本写的脚本执行提示SystaxError:(unicode error) 'utf-8'

    学习了一段时间的Python因为懒没有坚持,现在又想学,在用记事本写好py脚本运行时报错:SystaxError:(unicode error) 'utf-8' 解决的方法: 因为我的笔记本系统自带的 ...

  3. PTA 这是二叉搜索树吗?

    https://pintia.cn/problem-sets/994805046380707840/problems/994805070971912192 #include<iostream&g ...

  4. [性能测试]:内存泄漏以及MAT(Memory Analyzer Tool)工具使用分析

    一.今天在查看服务器时候,发现内存使用率直接就到99%了, 二.用ps -uaxw查看一下,每个占用内存较多的进程情况: 三,挑出可疑的进程,生成dump文件: jmap -dump:format=b ...

  5. Android Studio 学习笔记1.1 创建自己的第一个安卓项目并且打包APK

      自从上一次安装完安卓开发工具Android Studio后抽时间看视屏尝试编写自己的第一个安卓项目约两周的时间 每天下班后会花上1~2小时的时间去学习 目前的成果如下:次元宅的我.apk 嘛 总而 ...

  6. (转)Python 运算符

    原文:https://blog.csdn.net/liang19890820/article/details/69690954 简述 在 Python 中,运算符是执行算术或逻辑运算的特殊符号,操作的 ...

  7. InnoDB的后台线程(IO线程,master线程,锁监控线程,错误监控线程)和内存(缓冲池,重做日志缓冲池,额外内存池)

    InnoDB有多个内存块,你可以认为这些内存块组成了一个大的内存池,负责如下工作: 维护所有进程/线程需要访问的多个内部数据结构. 缓存磁盘上的数据,方便快速地读取,并且在对磁盘文件的数据进行修改之前 ...

  8. jQuery插件开发之datalist

    HTML5中定义了一种input框很好看的下拉列表--datalist,然而目前它的支持性并不好(万恶的IE,好在你要渐渐退役了...).于是最近更据需求写了一个小型datalist插件,兼容到IE8 ...

  9. 查看windows系统块大小

    C:\Users\xyw>fsutil fsinfo ntfsinfo 用法 : fsutil fsinfo ntfsinfo <volume pathname> 例如 : fsut ...

  10. OpenFileDialog 打开文件对话框

    InitialDirectory 对话框的初始目录 Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*" Filt ...