zoukankan      html  css  js  c++  java
  • AOP学习总结

    参考:什么是AOP?

    OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。

    AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。

    AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。

    实现AOP的技术,主要分为两大类:

    1. 一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;

    2. 二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

    实现AOP的技术特性:

    1、 join point(连接点):是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现AOP时,并不需要去定义一个join point。

    2、 point cut(切入点):本质上是一个捕获连接点的结构。在AOP中,可以定义一个point cut,来捕获相关方法的调用。

    3、 advice(通知):是point cut的执行代码,是执行“方面”的具体逻辑。

    4、 aspect(方面):point cut和advice结合起来就是aspect,它类似于OOP中定义的一个类,但它代表的更多是对象间横向的关系。

    5、 introduce(引入):为对象引入附加的方法或属性,从而达到修改对象结构的目的。有的AOP工具又将其称为mixin。

    clip_image001

    用途:

    l Authentication 权限

    l Caching 缓存

    l Context passing 内容传递

    l Error handling 错误处理

    l Lazy loading 懒加载

    l Debugging 调试

    l logging, tracing, profiling and monitoring 记录跟踪 优化 校准

    l Performance optimization 性能优化

    l Persistence 持久化

    l Resource pooling 资源池

    l Synchronization 同步

    l Transactions 事务

    其它参考:

    1. AOP是什么?

    2. 百度百科-面向切面编程

    .NET Framework中的AOP技术

    .NET原生的AOP技术实现:

    l 使用Decorator Pattern实现,参考《Head First Design Patterns》第三章

    l 使用.NET Remoting(RealProxy,ContextBoundObject),

    a) 参考RealProxy 类The simplest AOP scenario in C#

    b) 使用Dynamic Proxy Pattern,参考Dynamic Decorator PatternAdd Aspects to Object Using Dynamic DecoratorDynamic Decorator and Castle DynamicProxy Comparison

    c) .Net平台AOP技术研究在.Net中关于AOP的实现(补遗)

    第三方的.NET AOP框架:

    l 动态代理技术

    n Castle DynamicProxy

    n Spring.NET AOP

    n Enterprise Library

    n PostSharp

    n Encase

    n LOOM.NET(同时提供动态和静态两种方式)

    l 静态织入:

    n Eos-AOP

    n ASPECTDNG

    n RAIL - Runtime Assembly Instrumentation Library(静态横切)

    Using Decorator Pattern:

    clip_image003

    Using .NET Remoting

    clip_image005

    Using Castle DynamicProxy

    参考:

    l Document of Castle DynamicProxy

    l Castle Dynamic Proxy - 2.2

    l DYNAMIC PROXY TUTORIAL

    l Castle's DynamicProxy for .NET

    clip_image006

    Using Spring.NET

    参考:

    l Reference Manual and API

    clip_image008

    clip_image010

    各种方式优缺点比较:

    方式

    优点

    缺点

    使用Decorator Pattern实现

     

    l 需要实现大量的Decorator

    l Decorator不能复用(和用AOP之前同样的问题)

    使用.NET Remoting

     

    l must extend MarshalByRef or ContextBoundObject (which carries another semantic)

    l mess with your object model hierarchy

    Castle DynamicProxy

    l Good Performance

     

    Spring.NET AOP

    l 强大的配置

     

  • 相关阅读:
    问答
    观看视频后的笔记
    处理json的常用方式
    通过excel模板文件根据数据库数据修改其中的单元格数据
    declare用法
    添加文件然后自动打开
    Mybatis之入门
    观察者模式
    职责链模式
    并发新构件之Exchanger:交换器
  • 原文地址:https://www.cnblogs.com/EthanCai/p/3484932.html
Copyright © 2011-2022 走看看