[TransWarp] State of Transwarp
Laurent Martelli
laurent at bearteam.org
Tue Jun 11 12:20:26 EDT 2002
>>>>> "Phillip" == Phillip J Eby <pje at telecommunity.com> writes:
[...]
Phillip> Not really. Pure AOP has been much less of an emphasis of
Phillip> late, but AOP is still a part of our implementation
Phillip> techniques.
Phillip> I glanced at JAC; it looks like your work is based on
Phillip> wrapping objects with proxies in order to apply pointcuts,
Phillip> is that correct?
This is it. But things may change a little when we'll start thinking
about optimization. We are thinking about "inlining" the proxies. But
the concept would remain the same : catching method calls.
In factn, "proxy" is not the proper word. We use the term wrapper. The
difference, to me, is that wrappers are allowed to wrap only some
methods, whereas a proxy has to implement of the methods of the object
it proxies.
Phillip> It sounds interesting, but it's very different than
Phillip> TransWarp's implementation of AOP, which actually creates a
Phillip> fresh set of classes with the behaviors, and must use
Phillip> metaclasses or descriptor objects to do complex pointcuts.
Phillip> Nonetheless, it does sound as though your work might be
Phillip> useful to us; certainly you've intrigued me enough to want
Phillip> to read more of your documentation. Recent work on Zope 3
Phillip> has evolved the state-of-the-art in Python "proxy" objects,
Phillip> and Zope 3 implements security proxies already. What I'm
Phillip> curious about is how well non-security-related proxies
Phillip> would play in the Zope 3 model, since a lot of Zope code
Phillip> requests the removal of proxies in order to inspect objects
Phillip> or to bypass security. Obviously, that's not a JAC
Phillip> problem;
We only wrap methods, so we can still access the attributes with the
reflection API of Java to bypass aspects. That's what the persistence
aspect does when it loads an object from storage.
Phillip> it's just something I'm curious about in the Z3
Phillip> architecture.
I don't know how you configure aspects for an application with
TransWarp, but with JAC, you do this just by calling configuration
methods on the aspect component (which is just a regular object). I
think this is an area where we can shared some stuff : What's the API
to configure persistence, authentication, deployment, transaction, ...
--
Laurent Martelli http://jac.aopsys.com/
laurent at bearteam.org http://www.bearteam.org/~laurent/
More information about the PEAK
mailing list