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. Monkey and Banana

    Monkey and BananaTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. mysqladmin常用用法

    mysqladmin 工具的使用格式:mysqladmin [option] command [command option] command ...... 参数选项: -c number 自动运行次 ...

  3. Hive0.13.1介绍及安装部署

    一.简介 hive由Facebook开源用于解决海量结构化日志的数据统计.hive是基于Hadoop的一个数据仓库工具,是基于Hadoop之上的,文件是存储在HDFS上的,底层运行的是MR程序.hiv ...

  4. Git的介绍和使用

    Git是目前世界上最先进的分布式版本控制系统 Git的安装 1.在linux上安装 你可以先输入git,看看系统是不是已经自带了git 或者 sudo apt-get install git  就可以 ...

  5. 《LeetBook》leetcode题解(9):Palindrome Number[E]——回文数字

    我现在在做一个叫<leetbook>的开源书项目,把解题思路都同步更新到github上了,需要的同学可以去看看 地址:https://github.com/hk029/leetcode 这 ...

  6. unity 2018获取本地ip 问题,ipaddress

    Network.Player.ipAddress这个API在Unity2018被移除了 用如下代码 using System.Net; using System.Net.NetworkInformat ...

  7. Basic .do(Can be used as template)

    #Time: 2017-05-06  #By : YINBin@122275    quit -sim    cd D:/Documents/Work/UVM_PRJ/uvm-crc-test set ...

  8. 如何在CentOS7上安装桌面环境?

    1.安装 GNOME-Desktop 安装GNOME桌面环境 # yum -y groups install "GNOME Desktop" 完成安装后,使用如下命令启动桌面 # ...

  9. 分享一个好用的dns

  10. 文件夹操作之判断是否存在(Directory)

    Directory类用于操作文件夹,用于创建.移动和枚举目录和子目录的静态方法.DirectoryInfo类用于典型操作,如复制,移动,重命名,创建和删除目录.他们都可用于获取和设置相关属性或有关创建 ...