[Zope-dev] more on stacked component registries
Chris Withers
chris at simplistix.co.uk
Fri Feb 8 06:36:07 EST 2008
Philipp von Weitershausen wrote:
>> Sure it is, I'm talking about what basically happens with nested site
>> managers. The problem is that the current nesting implementation seems
>> predicated on zodb-like persistence. I'm looking at storing all
>> "data", including site managers, in a relational database. The actual
>> folder structure should remain as static as it does with zodb...
>
> Well, each place in the ZODB will still know that it is a site, i.e.
> that it has a site manager associated, right?
Aside from the fact that I'm not using ZODB, yes, that's true. But I'd
like to explore not having such a rigid hierarchical structure. In
particular, I want to support multiple traveral paths to getting to a
site manager, ie: objects with multiple "parents" where the overal
registry at any point is made up of the registries traversed through
rather than limiting that traversal to be up one "containment path".
> Because then you can
> easily track down the same registry over and over again.
I'm not sure I follow you 100%, but yes, something like that ;-)
> You could
> probably even register them as global utilities for easy access (like
> it's done with other registries, e.g. the ones from z3c.baseregistry).
Not sure what you mean...
>>> I think it would be easier to turn on/off registrations by using
>>> dynamically directly provided interfaces (via a proxy) or use security.
>>
>> Not sure what you mean by either of these...
>
> You can change which adapters are found for a particular object by
> applying marker interfaces.
Eww...
>> Yeah, but this is what happens more static-ly with the existing site
>> managers, right?
>
> I'm not sure how the ZODB-based registries do caching.
I had to stop looking before my head exploded, but it looked like they
based their caching on a static "containment path" and recomputed if the
registry was "moved".
>> Well okay, one registry per thread... would that work?
>
> So you would basically copy the whole global registry to a thread-local
> variable at the beginning of the request,
Well, hopefully we could come up with something a little cleverer than
that ;-)
> then modify it and then throw
> it away afterwards? Doesn't sound very clever to me...
..but yes, basically modifying a pristine "global registry" during the
traversal (nb: not request, there may be many traversals during a
request) and then bin the results when the traversal is garbage collected...
I'm trying to get the code working with just a global registry for now,
as I think it'd be easier to try and explain what I'm after with some
code to show you :-)
cheers,
Chris
--
Simplistix - Content Management, Zope & Python Consulting
- http://www.simplistix.co.uk
More information about the Zope-Dev
mailing list