zoukankan      html  css  js  c++  java
  • How to Choose an AOP Framework?


    Return to Contents


    4. How to Choose an AOP Framework?

    4.1 DynamicProxy or IL Level Weaving

    Generally, the AOP frameworks mentioned in last chapter can be divided into two categories: DynamicProxy and IL Level Weaving.

    4.1.1 DynamicProxy

    An AOP framework based on DynamicProxy, like Aspect#, dynamically (at runtime) constructs and builds sub classes of classes wanted to be intercepted with advices according to the configurations. Because it depends on inheritance, there come some implicit constraints: classes wanted to be intercepted must be un-sealed (inheritable); methods or properties of classes wanted to be intercepted must be virtual (overridable). In fact, an AOP framework of this kind is an extension of the DynamicProxy Pattern, including a set of configuration language and helper and factory classes for creating proxy objects or doing advising and introducing. For more about DynamicProxy Pattern, see Castle Project/DynamicProxy.

    4.1.2 IL Level Weaving

    Different from DynamicProxy, IL Level Weaving has less limitation. In essence, an AOP framework of this kind directly accesses/modifies the compiled IL code format assemblies, so in theory, any kinds of modifications and controlling to existing assemblies (unobfuscated) are possible. So through it, it becomes easy to do any AOP operations to existing assemblies, such as advising and introducing. But mostly this kind of processing can be done only at static time or build time. (Another so called load-time weaving is only the composition use of  System.Assembly.Load and static-time or build-time processing.) And of course, specific IL Level Weaving framework must have its specific additional limitations.

    4.2 Different Configuration Methods

    Each AOP framework must have its specific configuration language. Although the format of a configuration language may mot affect much of the performance and implementing essence of the framework, it is the user interface of the framework and it represents how easy it is for users to use the AOP framework. There are four most common configuration methods:

    • Custom script like configuration language, e.g. Aspect#.
    • Xml based configuration, e.g. AspectDNG.
    • Custom Attribute Classes based Configuration, e.g. PapierLoom.Net (Dynamic Part of Loom.Net)
    • AspectJ like specific programming language extension with extended compiler, e.g. Eos.

    4.3 Suggestion

    How to choose the most suitable AOP framework for your project depends on the facts of your project.

    If your project is a completely new one from design, which means your project doesn't depend on lots of existing codes, then all mentioned frameworks are suitable. So you should just choose the most familiar and the most stable one. And I suggest Aspect# and AspectDNG.

    If your new project based on lots of existing code that expensive to change or based on existing assemblies without source code, AOP frameworks based on IL level weaving become the only choice. And I suggest AspectDNG.

    Briefly, If you are not sure which one to choose, choose an IL level weaving based framework will not be too worse. And I suggest AspectDNG.

  • 相关阅读:
    springboot 集成 SMTP 发送邮件
    springmvc的controller中使用@Transactional无效
    Apache POI Java Excel easypoi
    java import和import static的区别
    ave an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS
    未能加载文件或程序集“System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”或它的某一个依赖项
    matlab练习索引
    matlab练习程序(DWA)
    matlab练习程序(解西尔维斯特、李雅普诺夫方程)
    matlab练习程序(NDT)
  • 原文地址:https://www.cnblogs.com/teddyma/p/235988.html
Copyright © 2011-2022 走看看