[Zope-dev] zope.component.zcml and global registry

Roger dev at projekt01.ch
Wed Mar 3 05:12:56 EST 2010


Hi Fabio 

> Betreff: [Zope-dev] zope.component.zcml and global registry
> 
> Hi folks,
> 
> the ZCML directives in zope.component register components 
> using the utility method handler, which looks like:
> 
>     def handler(methodName, *args, **kwargs):
>         method = 
> getattr(zope.component.getGlobalSiteManager(), methodName)
> 
> In our company-specific framework (which is far far from 
> zope3, and only uses the bicycle repair kit), we use 
> different registries per application, similarly to repoze.bfg.
> 
> Everything works, included code which relies on the 
> zope.component's API, thanks to the hooks on getSiteManager. 
> Those ZCML directives use the getGlobalSiteManager though, 
> which is not hookable and thus we had to reimplement the ZCML 
> directives we need to call getSiteManager instead of 
> getGlobalSiteManager.
> 
> By default, getSiteManager returns the global registry, so I 
> don't see any obvious reason why the ZCML directives make use 
> of getGlobalSiteManager.
> repoze.bfg, for example, reimplemented the ZCML directives as 
> we did, but I'd love to be able to use the implementation 
> from zope.component.
> 
> Any idea? Would you kill me if I propose to change the 
> registration handler to use getSiteManager instead? :)

Not sure if I understand you correct. But what do you think 
about the following:

- implement a new optional attribute useLocal=True
  in the directive and then configure the directive action
  and make use of the (local) getSiteManager method.

I like to use getGlobalSiteManager by default because this
doesn't force a database access and load the local site
manager if the site is a local site.

My personal goal is to avoid any Zope database access which is 
not really needed. Because we use MongoDB as object storage
and we only have a few items in the Zope database. Things
like a local component registry get only rarly used and loaded
in our setup.

Could this be an alternative concept and fit?

Regards
Roger Ineichen

> Thanks,
> Fabio
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> https://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  ** (Related lists -  
> https://mail.zope.org/mailman/listinfo/zope-announce
>  https://mail.zope.org/mailman/listinfo/zope )
> 



More information about the Zope-Dev mailing list