活跃的Flash/Flex/ActionScript 3 AOP项目?

3
我看过Loom项目,但是否有更成熟(并积极开发)的替代品?我正在寻找一些能够在AVM2运行时将切入点的负载时间编织到现有二进制代码中的工具。这个领域有没有任何研究成果?

1
我不确定是否有人使用过Floxy / Flemit进行编织和切入点,但我很乐意与您合作完成此操作。如果您想要合作,请给我发送电子邮件:jaward@adobe.com - James Ward
3个回答


3

我知道我来晚了,但我刚刚为与Parsley集成的AOP项目制作了一个非常简单的示例。

它允许您将元标记分配给拦截器,例如:

    <parsley:ContextBuilder>
        <parsley:FlexConfig type="{ParsleyConfig}" />
        <tag:AspectSupport>
            <tag:MetatagInterceptorDefinition metatag="Log" interceptor="{new TracingInterceptor()}" />
        </tag:AspectSupport>            
    </parsley:ContextBuilder>

接下来,在Parsley上下文中标注了Log的任何类都会被代理该方法:

    [Log]
    public function add(a:int,b:int):int
    {
        return a + b;
    }

该项目在这里,更详细的解释可以在这篇博客文章中找到。该项目是一个AOP的扩展库,使用Parsley框架。

这看起来很有趣。Parsley的依赖性有多深?我们正在使用Robotlegs,我想知道你的项目是否可以修改以与它一起工作? - Borek Bernard
它比必要的更依赖于Parsley。我原本打算构建一个与Swiz一起工作的版本,但如果有更多的需求是RobotLegs,那么我可以首先考虑它。我添加了一个问题作为讨论点:http://bit.ly/eB70kb - Marty Pitt
以上方法不是基于AVM2字节码编织的,对吧?它使用了代理。 - Vladimir Tsvetkov
@Vladimir:它使用动态字节码生成。被注释的类是动态子类化的,因此在注入时仍满足类型安全性。 - Marty Pitt
@Marty Pitt:我明白了,但是这个库Flapper-AS不是Parsley的一部分,对吧? - Vladimir Tsvetkov

2
作为 flemit / floxy 的作者(尽管两者仅为 asmock 创建),我建议您研究 AS3Commons Bytecode,因为它正在积极开发中(flemit / floxy 并非如此)。
实际上,AS3Commons Bytecode 基于 Loom 项目,并已扩展使用比 flemit 设计的 API 更清晰的 API。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接